Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/NUnitLite.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@xamarin.com>2013-07-02 00:09:42 +0400
committerSebastien Pouliot <sebastien@xamarin.com>2013-07-02 00:09:42 +0400
commitc1feb2dda2740a7408c3c5751dd864c76efe0eba (patch)
tree98e8cd384f502f2b771eda4acdd21a82db456345
parent5b546878d554631e51318d50151c3e8ffd5eec85 (diff)
Initial import of 0.9 sources from zip file
-rwxr-xr-xNUnitLite-0.9.0/CHANGES.txt353
-rwxr-xr-xNUnitLite-0.9.0/LICENSE.txt20
-rwxr-xr-xNUnitLite-0.9.0/NUnitLite.nuspec44
-rwxr-xr-xNUnitLite-0.9.0/NUnitLite.sln410
-rwxr-xr-xNUnitLite-0.9.0/NUnitLiteCF.sln79
-rwxr-xr-xNUnitLite-0.9.0/README.txt153
-rwxr-xr-xNUnitLite-0.9.0/nant.bat2
-rwxr-xr-xNUnitLite-0.9.0/nunitlite.build384
-rwxr-xr-xNUnitLite-0.9.0/nunitlite.build.include421
-rwxr-xr-xNUnitLite-0.9.0/src/TestResultConsole/AssemblyInfo.cs33
-rwxr-xr-xNUnitLite-0.9.0/src/TestResultConsole/Program.cs49
-rwxr-xr-xNUnitLite-0.9.0/src/TestResultConsole/TestResultConsole.csproj91
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ExpectedExceptionData.cs143
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/FailureSite.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/IParameterDataSource.cs44
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/IPropertyBag.cs162
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITest.cs102
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestAssemblyBuilder.cs56
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestAssemblyRunner.cs83
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestCaseData.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestCaseSource.cs50
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestCaseSourceProvider.cs50
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestFilter.cs49
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestListener.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ITestResult.cs170
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/IXmlNodeBuilder.cs29
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/PropertyEntry.cs70
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/ResultState.cs139
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/RunState.cs60
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/TestOutput.cs109
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/TestStatus.cs51
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Api/XmlNode.cs352
-rwxr-xr-xNUnitLite-0.9.0/src/framework/AssemblyInfo.cs110
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Assert.cs1923
-rwxr-xr-xNUnitLite-0.9.0/src/framework/AssertionHelper.cs366
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Assume.cs360
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/CategoryAttribute.cs95
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/CombinatorialAttribute.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/CultureAttribute.cs131
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/DataAttribute.cs40
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/DatapointAttribute.cs36
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/DatapointSourceAttribute.cs39
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/DatapointsAttribute.cs39
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/DescriptionAttribute.cs43
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/ExpectedExceptionAttribute.cs175
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/ExplicitAttribute.cs75
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/IgnoreAttribute.cs75
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/IncludeExcludeAttribute.cs83
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/MaxTimeAttribute.cs63
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/NUnitAttribute.cs38
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/PairwiseAttribute.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/PlatformAttribute.cs68
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/PropertyAttribute.cs113
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/RandomAttribute.cs126
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/RangeAttribute.cs104
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/RepeatAttribute.cs90
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/SequentialAttribute.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/SetCultureAttribute.cs55
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/SetUICultureAttribute.cs55
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/SetUpAttribute.cs54
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TearDownAttribute.cs36
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TestAttribute.cs79
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TestCaseAttribute.cs446
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TestCaseSourceAttribute.cs212
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TestFixtureAttribute.cs202
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TestFixtureSetUpAttribute.cs36
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TestFixtureTearDownAttribute.cs37
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TheoryAttribute.cs63
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/TimeoutAttribute.cs60
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/ValueSourceAttribute.cs146
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Attributes/ValuesAttribute.cs134
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Compatibility/SerializableAttribute.cs35
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/AllItemsConstraint.cs75
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/AndConstraint.cs100
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/AssignableFromConstraint.cs61
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/AssignableToConstraint.cs61
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/AttributeConstraint.cs106
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/AttributeExistsConstraint.cs76
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/BasicConstraint.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/BinaryConstraint.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/BinarySerializableConstraint.cs100
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionConstraint.cs89
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionContainsConstraint.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionEquivalentConstraint.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionItemsEqualConstraint.cs150
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionOrderedConstraint.cs185
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionSubsetConstraint.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/CollectionTally.cs95
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ComparisonAdapter.cs172
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ComparisonConstraint.cs83
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Constraint.cs416
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ConstraintBuilder.cs286
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ConstraintExpression.cs803
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ConstraintExpressionBase.cs115
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ConstraintFactory.cs804
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ContainsConstraint.cs183
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/DelayedConstraint.cs234
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EmptyCollectionConstraint.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EmptyConstraint.cs72
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EmptyDirectoryConstraint.cs91
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EmptyStringConstraint.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EndsWithConstraint.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EqualConstraint.cs565
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/EqualityAdapter.cs241
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ExactCountConstraint.cs94
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ExactTypeConstraint.cs64
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ExceptionTypeConstraint.cs59
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/FailurePoint.cs68
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/FalseConstraint.cs36
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/FloatingPointNumerics.cs251
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/GreaterThanConstraint.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/GreaterThanOrEqualConstraint.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/IResolveConstraint.cs38
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/InstanceOfTypeConstraint.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/LessThanConstraint.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/LessThanOrEqualConstraint.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/MessageWriter.cs154
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/MsgUtils.cs282
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NUnitComparer.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NUnitEqualityComparer.cs482
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NaNConstraint.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NoItemConstraint.cs75
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NotConstraint.cs68
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NullConstraint.cs36
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/NullOrEmptyStringConstraint.cs72
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Numerics.cs380
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/AllOperator.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/AndOperator.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/AttributeOperator.cs62
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/BinaryOperator.cs76
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/CollectionOperator.cs43
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/ConstraintOperator.cs96
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/ExactCountOperator.cs54
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/NoneOperator.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/NotOperator.cs49
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/OrOperator.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/PrefixOperator.cs51
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/PropOperator.cs69
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/SelfResolvingOperator.cs33
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/SomeOperator.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/ThrowsOperator.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Operators/WithOperator.cs51
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/OrConstraint.cs61
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/PathConstraint.cs181
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/PredicateConstraint.cs76
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/PrefixConstraint.cs46
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/PropertyConstraint.cs110
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/PropertyExistsConstraint.cs102
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/RangeConstraint.cs124
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/RegexConstraint.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ResolvableConstraintExpression.cs153
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ReusableConstraint.cs76
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/SameAsConstraint.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/SamePathConstraint.cs60
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/SamePathOrUnderConstraint.cs62
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/SomeItemsConstraint.cs75
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/StartsWithConstraint.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/StringConstraint.cs81
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/SubPathConstraint.cs60
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/SubstringConstraint.cs63
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ThrowsConstraint.cs267
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ThrowsNothingConstraint.cs81
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/Tolerance.cs220
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/ToleranceMode.cs54
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/TrueConstraint.cs36
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/TypeConstraint.cs59
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/UniqueItemsConstraint.cs63
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Constraints/XmlSerializableConstraint.cs105
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Contains.cs62
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Env.cs56
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Exceptions/AssertionException.cs56
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Exceptions/IgnoreException.cs55
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Exceptions/InconclusiveException.cs58
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Exceptions/SuccessException.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Extensibility/IParameterDataProvider.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Extensibility/ISuiteBuilder.cs55
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Extensibility/ITestCaseBuilder.cs88
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Extensibility/ITestCaseProvider.cs55
-rwxr-xr-xNUnitLite-0.9.0/src/framework/GlobalSettings.cs39
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Guard.cs35
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Has.cs209
-rwxr-xr-xNUnitLite-0.9.0/src/framework/IExpectException.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/AssemblyHelper.cs135
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/AsyncInvocationRegion.cs131
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/AsyncSynchronizationContext.cs97
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialStrategy.cs92
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialTestCaseProvider.cs113
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/CombiningStrategy.cs91
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/DataAttributeTestCaseProvider.cs90
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/DatapointProvider.cs186
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestCaseBuilder.cs411
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestFixtureBuilder.cs354
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/PairwiseStrategy.cs754
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/ParameterDataProvider.cs79
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/ProviderCache.cs102
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Builders/SequentialStrategy.cs88
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/ApplyChangesToContextCommand.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/CommandDecoratorList.cs48
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/CommandStage.cs92
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/DelegatingTestCommand.cs46
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/ExpectedExceptionCommand.cs217
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/ICommandDecorator.cs54
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/MaxTimeCommand.cs88
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeSetUpCommand.cs74
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeTearDownCommand.cs106
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/RepeatedTestCommand.cs72
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/SetUpTearDownCommand.cs143
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/SkipCommand.cs79
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/TestCommand.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/TestMethodCommand.cs168
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Commands/TheoryResultCommand.cs72
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/CultureDetector.cs142
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/ExceptionHelper.cs95
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Extensibility/ParameterDataProviders.cs101
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Extensibility/TestCaseProviders.cs116
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/AndFilter.cs96
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/CategoryExpression.cs180
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/CategoryFilter.cs118
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/NotFilter.cs97
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/OrFilter.cs111
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/SimpleCategoryExpression.cs43
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Filters/SimpleNameFilter.cs93
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/IApplyToContext.cs39
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/IApplyToTest.cs40
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/InvalidTestFixtureException.cs66
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/MethodHelper.cs226
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/NUnitException.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyBuilder.cs192
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyRunner.cs143
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/OSPlatform.cs386
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/ParameterSet.cs219
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/PlatformHelper.cs298
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/PropertyBag.cs462
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/PropertyNames.cs102
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/RandomGenerator.cs196
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Randomizer.cs171
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Reflect.cs251
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Results/TestCaseResult.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Results/TestResult.cs505
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Results/TestSuiteResult.cs97
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/RuntimeFramework.cs582
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/StackFilter.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/StringUtil.cs40
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/TestExecutionContext.cs625
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/TestFilter.cs183
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/TestFixtureBuilder.cs93
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/TestListener.cs66
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedFixtureSuite.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedMethodSuite.cs95
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/Test.cs415
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/TestAssembly.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/TestFixture.cs60
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/TestMethod.cs252
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/Tests/TestSuite.cs301
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/TextMessageWriter.cs489
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/ThreadUtility.cs74
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/TypeHelper.cs340
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/WorkItems/CompositeWorkItem.cs162
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/WorkItems/CountdownEvent.cs87
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/WorkItems/SimpleWorkItem.cs77
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItem.cs273
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItemState.cs46
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Is.cs535
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Iz.cs35
-rwxr-xr-xNUnitLite-0.9.0/src/framework/ListMapper.cs69
-rwxr-xr-xNUnitLite-0.9.0/src/framework/MessageMatch.cs40
-rwxr-xr-xNUnitLite-0.9.0/src/framework/ObjectList.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/CommandLineOptions.cs399
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/ConsoleWriter.cs113
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/DebugWriter.cs113
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit2XmlOutputWriter.cs376
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit3XmlOutputWriter.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/OutputWriters/OutputWriter.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/ResultReporter.cs196
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/ResultSummary.cs175
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.g.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.xaml.cs74
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/Silverlight/TextBlockWriter.cs106
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/TcpWriter.cs73
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Runner/TextUI.cs357
-rwxr-xr-xNUnitLite-0.9.0/src/framework/SpecialValue.cs40
-rwxr-xr-xNUnitLite-0.9.0/src/framework/TestCaseData.cs389
-rwxr-xr-xNUnitLite-0.9.0/src/framework/TestContext.cs257
-rwxr-xr-xNUnitLite-0.9.0/src/framework/Throws.cs153
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunit.snkbin0 -> 490 bytes
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-2.0.csproj387
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-3.5.csproj370
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-4.0.csproj369
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-4.5.csproj373
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-netcf-2.0.csproj335
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-netcf-3.5.csproj338
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-sl-3.0.csproj354
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-sl-4.0.csproj362
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite-sl-5.0.csproj357
-rwxr-xr-xNUnitLite-0.9.0/src/framework/nunitlite.framework.build70
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/Runner/Silverlight/TestPage.g.cs79
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.i.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.i.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-3.0/Runner/Silverlight/TestPage.g.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-4.0/Runner/Silverlight/TestPage.g.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-5.0/Runner/Silverlight/TestPage.g.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/MockAssembly.cs300
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/Properties/AssemblyInfo.cs38
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-2.0.csproj56
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-3.5.csproj56
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.0.csproj56
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.5.csproj58
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-2.0.csproj79
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-3.5.csproj82
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-3.0.csproj80
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-4.0.csproj78
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-5.0.csproj79
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/mock-assembly.build32
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AssemblyInfo.cs44
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AssertCountFixture.cs51
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AssertFailFixture.cs50
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AssertIgnoreData.cs84
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AsyncDummyFixture.cs92
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AsyncRealFixture.cs369
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/AttributeInheritanceData.cs60
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/CategoryAttributeData.cs61
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/CultureAttributeData.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/DatapointFixture.cs119
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/DescriptionFixture.cs50
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/ExpectedExceptionData.cs279
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/FixtureSetUpTearDownData.cs360
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/MaxTimeFixture.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/ParameterizedTestFixture.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/PropertyAttributeTests.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/RepeatedTestFixture.cs135
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/SetUpData.cs192
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TestCaseAttributeFixture.cs102
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TestCaseSourceAttributeFixture.cs111
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TestContextData.cs44
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TestFixtureData.cs447
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TestMethodSignatureFixture.cs124
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TheoryFixture.cs84
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/TimeoutFixture.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-2.0.csproj124
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-3.5.csproj124
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.0.csproj124
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.5.csproj130
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-2.0.csproj97
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-3.5.csproj98
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-3.0.csproj103
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-4.0.csproj108
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-5.0.csproj102
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/nunitlite.testdata.build32
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Api/ResultStateTests.cs176
-rwxr-xr-xNUnitLite-0.9.0/src/tests/App.g.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/App.xaml.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/tests/AssemblyInfo.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFailureMessageFixture.cs257
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFixture.cs220
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/ArrayNotEqualFixture.cs68
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssertFailTests.cs83
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssertIgnoreTests.cs151
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssertInconclusiveTests.cs49
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssertPassTests.cs62
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssertThatTests.cs279
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssertThrowsTests.cs164
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AssumeThatTests.cs236
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/AsyncThrowsTests.cs185
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/CollectionTests.cs56
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/ConditionAssertTests.cs224
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/EqualsFixture.cs568
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/MessageChecker.cs70
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/NotEqualFixture.cs134
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/NotSameFixture.cs49
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/NullableTypesTests.cs252
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Assertions/SameFixture.cs61
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/ApplyToTestTests.cs331
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/AttributeInheritanceTests.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/CategoryAttributeTests.cs90
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/CombinatorialTests.cs100
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/DatapointTests.cs70
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/DescriptionTests.cs87
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/ExpectedExceptionTests.cs447
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/FixtureSetUpTearDownTests.cs336
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/MaxTimeTests.cs86
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/PairwiseTests.cs145
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/ParameterizedTestFixtureTests.cs199
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/PropertyAttributeTests.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/RepeatedTestTests.cs115
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/SetCultureAttributeTests.cs129
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/TestCaseAttributeTests.cs322
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/TestCaseSourceTests.cs354
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/TestDummy.cs78
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/TestFixtureAttributeTests.cs92
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/TheoryTests.cs163
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/TimeoutTests.cs91
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/ValueSourceTests.cs142
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Attributes/ValuesAttributeTests.cs157
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/AllItemsConstraintTests.cs109
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/AndConstraintTests.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/AssignableFromConstraintTests.cs48
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/AssignableToConstraintTests.cs48
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/AsyncDelayedConstraintTests.cs87
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/AttributeExistsConstraintTests.cs70
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/BasicConstraintTests.cs106
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/BinarySerializableTest.cs48
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/CollectionContainsConstraintTests.cs220
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/CollectionEquivalentConstraintTests.cs169
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/CollectionOrderedConstraintTests.cs227
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/CollectionSubsetConstraintTests.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ComparisonConstraintTest.cs138
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ConstraintTestBase.cs103
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/DelayedConstraintTest.cs212
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/EmptyConstraintTest.cs91
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/EndsWithConstraintTests.cs71
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/EqualConstraintTests.cs459
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ExactCountConstraintTests.cs83
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ExactTypeConstraintTests.cs50
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/FloatingPointNumericsTest.cs120
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/GreaterThanConstraintTests.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/GreaterThanOrEqualConstraintTests.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/InstanceOfTypeConstraintTests.cs49
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/LessThanConstraintTests.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/LessThanOrEqualConstraintTests.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/MessageWriterTests.cs129
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/MsgUtilTests.cs128
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/NUnitComparerTests.cs78
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/NUnitEqualityComparerTests.cs208
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/NotConstraintTests.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/NumericsTest.cs112
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/OrConstraintTests.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/PathConstraintTests.cs252
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/PredicateConstraintTests.cs58
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/PropertyTests.cs104
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/RangeConstraintTests.cs117
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/RangeTests.cs79
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ReusableConstraintTests.cs45
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/SameAsTest.cs47
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/StartsWithConstraintTests.cs72
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/SubstringConstraintTests.cs96
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/TestDelegates.cs35
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ThrowsConstraintTests.cs107
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/ToStringTests.cs69
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/UniqueItemsConstraintTests.cs42
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Constraints/XmlSerializableTest.cs65
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Framework/StackFilterTest.cs80
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Framework/SyntaxTests.cs196
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Framework/TestContextTests.cs103
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Framework/TestResultTests.cs83
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/AssemblyHelperTests.cs84
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/AsyncTestMethodTests.cs113
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/CultureSettingAndDetectionTests.cs181
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/DeduceTypeArgsFromArgs.cs51
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/GenericTestFixtureTests.cs64
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/GenericTestMethodTests.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/NUnitTestCaseBuilderTests.cs41
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/PlatformDetectionTests.cs443
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/PropertyBagTests.cs184
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/RandomGeneratorTests.cs132
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/RandomizerTests.cs185
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/RuntimeFrameworkTests.cs287
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/SetUpTest.cs161
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/SimpleGenericMethods.cs67
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TestExecutionContextTests.cs242
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TestFixtureTests.cs406
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TestMethodSignatureTests.cs198
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TestResultTests.cs680
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TestXmlTests.cs171
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TextMessageWriterTests.cs164
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Internal/TypeParameterUsedWithTestMethod.cs41
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Program.cs81
-rwxr-xr-xNUnitLite-0.9.0/src/tests/RecordingTestListener.cs29
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Runner/CommandLineOptionTests.cs133
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Runner/NUnit2XmlOutputWriterTests.cs217
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/AfterTests.cs184
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/ArbitraryConstraintMatching.cs81
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/CollectionTests.cs275
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/ComparisonTests.cs99
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/EqualityTests.cs158
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/InvalidCodeTests.cs78
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/OperatorOverrides.cs128
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/OperatorTests.cs271
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/PathConstraintTests.cs172
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/PropertyTests.cs131
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/SerializableConstraints.cs55
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/SimpleConstraints.cs111
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/StringConstraints.cs137
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/SyntaxTest.cs70
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/TestCompiler.cs57
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/ThrowsTests.cs241
-rwxr-xr-xNUnitLite-0.9.0/src/tests/Syntax/TypeConstraints.cs172
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectCollection.cs81
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectList.cs119
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/Comparers/AlwaysEqualComparer.cs41
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleEqualityComparer.cs43
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleObjectComparer.cs19
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/ResultSummary.cs207
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/TestAssert.cs144
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/TestBuilder.cs174
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/TestComparer.cs51
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/TestDelegates.cs66
-rwxr-xr-xNUnitLite-0.9.0/src/tests/TestUtilities/TestFinder.cs98
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-2.0.csproj262
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-3.5.csproj260
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-4.0.csproj260
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-4.5.csproj272
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-2.0.csproj217
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-3.5.csproj211
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-sl-3.0.csproj270
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-sl-4.0.csproj277
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests-sl-5.0.csproj272
-rwxr-xr-xNUnitLite-0.9.0/src/tests/nunitlite.tests.build83
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/App.g.cs52
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.i.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.i.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-3.0/App.g.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-4.0/App.g.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-5.0/App.g.cs53
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs0
-rwxr-xr-xNUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs0
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/COPYING.txt340
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/README.txt158
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.dllbin0 -> 36864 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.xml725
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.Core.dllbin0 -> 409600 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.Core.xml17156
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.dllbin0 -> 135168 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.xml5373
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.dllbin0 -> 28672 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.xml579
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.dllbin0 -> 8704 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.xml353
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.dllbin0 -> 36864 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.xml538
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.dllbin0 -> 32768 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.xml516
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.dllbin0 -> 40960 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.xml1289
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.dllbin0 -> 180224 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.xml3986
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.dllbin0 -> 49152 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.xml1211
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.dllbin0 -> 40960 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.xml800
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.exebin0 -> 13312 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.exe.config3343
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NAnt.xml78
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.dllbin0 -> 131072 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.xml373
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dllbin0 -> 57344 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml112
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.dllbin0 -> 57344 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.xml112
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console-runner.dllbin0 -> 36864 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exebin0 -> 5120 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe.config31
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.dllbin0 -> 147456 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.interfaces.dllbin0 -> 57344 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.framework.dllbin0 -> 143360 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.util.dllbin0 -> 135168 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dllbin0 -> 98304 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dllbin0 -> 155648 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dllbin0 -> 208896 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Core.dllbin0 -> 208896 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dllbin0 -> 331776 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dllbin0 -> 28672 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NUnitCore.dllbin0 -> 40960 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/netDumbster.dllbin0 -> 32768 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/log4net.dllbin0 -> 258048 bytes
-rwxr-xr-xNUnitLite-0.9.0/tools/nant/bin/scvs.exebin0 -> 7680 bytes
627 files changed, 108773 insertions, 0 deletions
diff --git a/NUnitLite-0.9.0/CHANGES.txt b/NUnitLite-0.9.0/CHANGES.txt
new file mode 100755
index 0000000..64f7cb3
--- /dev/null
+++ b/NUnitLite-0.9.0/CHANGES.txt
@@ -0,0 +1,353 @@
+NUnitLite Version 0.9 - May 5, 2013
+
+Framework
+
+* A .NET 4.5 build is included. When using the 4.5 package,
+ C# 5.0 async methods may be used as tests, as the target of
+ a Throws constraint and as an ActualValueDelegate returning
+ the value to be tested.
+
+* Experimental builds for Silverlight 3.0, 4.0 and 5.0 are included.
+
+* TestContext.Random may be used to provide random values of various
+ types for use in your tests.
+
+* The experimental Asynchronous attribute has been removed.
+
+Runner
+
+* The runner now supports the -include and -exclude options, which
+ are used to specify categories of tests to be included in a run.
+
+* Test execution time is now reported at a higher resolution on
+ systems that support it.
+
+Bug Fixes
+
+* 501784 Theory tests do not work correctly when using null parameters
+* 671432 Upgrade NAnt to Latest Release
+* 1028188 Add Support for Silverlight
+* 1029785 Test loaded from remote folder failed to run with exception System.IO.Directory Not Found
+* 1057981 C#5 async tests are not supported
+* 1060631 Add .NET 4.5 build
+* 1064014 Simple async tests should not return Task<T>
+* 1071164 Support async methods in usage scenarios of Throws constraints
+* 1071714 TestContext is broken when a previous version of the runner is used alongside a new version of the framework
+* 1071861 Error in Path Constraints
+* 1072379 Report test execution time at a higher resolution
+* 1073750 Remove Asynchronous Attribute
+* 1074568 Assert/Assume should support an async method for the ActualValueDelegate
+* 1082330 Better Exception if SetCulture attribute is applied multiple times
+* 1111834 Expose Random Object as part of the test context
+* 1172979 Add Category Support to nunitlite Runner
+* 1174741 sl-4.0 csproj file is corrupt
+
+NUnitLite Version 0.8 - September 13, 2012
+
+Runner
+
+* The runner now displays the framework version for which it
+was built in the header, in addition to the framework under
+which it is currently running.
+
+* The new -explore option will list all the tests to a file
+in XML format, without running them.
+
+* The runner now supports the -test option, which allows
+selecting specific tests to be executed.
+
+Attributes
+
+* The new AsynchronousAttribute marks test methods that are
+to be run asynchronously. An asynchronous test runs on a
+separate thread and continues to run to completion while
+other tests run. Asynchronous tests must be written to
+avoid accessing common data, which may be changed by
+other tests.
+
+* RandomAttribute can now provide random enumeration data
+
+* PlatformAttribute now recognizes MacOsX, Xbox and MonoTouch
+
+* The following attributes from full NUnit are now supported
+by NUnitLite:
+ DataPoint
+ DataPoints
+ Theory
+ Timeout
+ Value
+ ValueSource
+
+Constraints
+
+* The following constraints from full NUnit are now supported
+by NUnitLite:
+ DelayedConstraint
+ ExactCountConstraint
+ PredicateConstraint
+ ReusableConstraint
+
+* New Syntax Helpers are supported in conjunction with the
+above constraints:
+ After
+ Exactly
+ Matching
+
+Bug Fixes
+
+* 999133 Comments in Program.cs document non-existing classes
+* 999136 NUGet adds all three assemblies to the project
+* 999137 result:path missing filename could use better error report
+* 1000213 Inconclusive message Not in report output
+* 1020295 add v2 results output for continuous integration server support
+* 1023003 -explore does not work unless a path is specified
+* 1023084 Add Enum support to RandomAttribute
+* 1023673 -test:<testName> argument does not work
+* 1028181 TextUi class does not make use of TextWriter passed to constructor
+* 1028252 Implement PredicateConstraint in NUnitLite
+* 1028253 Implement Theories in NUnitLite
+* 1029170 Implement ReusableConstraint in NUnitLite
+* 1029216 Implement ExactCountConstraint in NUnitLite
+* 1037144 Add MonoTouch support to PlatformAttribute
+* 1041365 Add MaxOsX and Xbox support to platform attribute
+* 1047585 Add Asynchronous attribute
+
+NUnitLite Version 0.7 - May 11, 2012
+
+This release brings NUnitLite to a point where it is functionally
+equivalent to the NUnit 3.0 build of NUnitLite and has most of the
+same capabilities as the full version of NUnit.
+
+Obsolete methods and classes have been removed and the code has been
+reorganized to facilitate code sharing with NUnit 3.0.
+
+NUnitLite is now built for the desktop using Visual Studio 2010. A VS 2008 project is still used for the compact framework builds.
+
+Separate builds are now created for .NET 2.0, 3.5 and 4.0
+
+A nuspec file is now provided and NUnitLite is distributed under NuGet.
+
+New Features and Enhancements
+
+* An An XML result file may be saved using the --result option of the runner.
+
+* The --explore option will create a list of tests contained in the assembly.
+
+* The --out option allows redirecting the final result to a report file. It must be used when running the test on a device without a Console.
+
+* Assume.That is now supported
+
+* ExpectedExceptionAttribute now supports the same properties as for full NUnit.
+
+* New Constraints
+ EmptyDirectoryConstraint
+ ExceptionTypeConstraint
+
+* New Asserts
+ ByVal
+ Throws
+ DoesNotThrow
+ Catch
+ AreEqual
+ AreNotEqual
+ AreSame
+ AreNotSame
+
+* New Syntax Helpers:
+
+ Is: Positive
+ Negative
+
+ Has: Exactly
+
+* New Attributes
+ CategoryAttribute
+ CombinatorialAttribute
+ CultureAttribute
+ DataAttribute
+ ExplicitAttribute
+ IncludeExcludeAttribute
+ MaxTimeAttribute
+ NUnitAttribute
+ PairwiseAttribute
+ PlatformAttribute
+ RandomAttribute
+ RangeAttribute
+ RepeatAttribute
+ SequentialAttribute
+ SetCultureAttribute (not available on compact framework)
+ SetUICultureAttribute (not available on compact framework)
+ TestCaseAttribute
+ TestCaseSourceAttribute
+ TestFixtureSetUpAttribute
+ TestFixtureTearDownAttribute
+ TestModificationAttribute
+ ValueSourceAttribute
+ ValuesAttribute
+
+
+Bug Fixes
+
+* 554633 NUnitLite.csproj doesn't have required constants for Release
+* 742473 Assert.Pass is treated as a test failure
+* 742625 TestLoader.Load fails when run under Unity's web-player
+* 996055 NUnitLite runner should allow redirecting output via command line
+* 996059 Need a VS project for compact framework
+
+NUnitLite Version 0.6 - January 13, 2010
+
+This is the first release of NUnitLite under the MIT license.
+
+New Features and Enhancements
+
+* New Asserts
+ Pass
+ Ignore
+ Inconclusive
+
+* New Syntax Helpers:
+
+ Throws: InnerException
+ InvalidOperationException
+ ArgumentException
+ TargetInvocationException
+
+ Has: InnerException
+
+ ConstraintExpression:
+ BinarySerializable
+ XmlSerializable
+ ContainsSubstring
+ StartsWith
+ EndsWith
+ Matches
+
+Bug fixes:
+
+* Additional control characters are now escaped in message output
+
+* A Stream now compares correctly as equal to itself
+
+
+NUnitLite Version 0.5 - June 14, 2009
+
+This is the first release from our new Launchpad.net project
+and aims at improved compatibility with NUnit 2.5.
+
+New Features and Enhancements
+
+* New Constraints:
+ AssignableToConstraint
+ AttributeConstraint
+ AttributeExistsConstraint,
+ BinarySerializableConstraint (not available on compact framework)
+ CollectionOrderedConstraint
+ EmptyCollectionConstraint
+ EmptyStringConstraint
+ EqualConstraint
+ FalseConstraint
+ NaNConstraint
+ NullConstraint
+ NullOrEmptyStringConstraint
+ RangeConstraint
+ SamePathConstraint
+ SamePathOrUnderConstraint
+ ThrowsConstraint
+ ThrowsNothingConstraint
+ TrueConstraint
+ XmlSerializableConstraint (not available on compact framework 1.0)
+
+* New Syntax Helpers
+
+ Is: AssignableTo
+ BinarySerializable (not available on compact framework)
+ TypeOf (replacing Type)
+ InRange
+ InstanceOf (replacing InstanceOfType)
+ Ordered
+ SamePath
+ SamePathOrUnder
+ XmlSerializable (not available on compact framework 1.0)
+
+ Has: Attribute
+ Message
+
+
+----------------------------------------------------------------------------
+NUnitLite Version 0.2 - November 3, 2007
+
+New Features and Enhancements
+
+* New attributes: PropertyAttribute, DescriptionAttribute, IgnoreAttribute
+* Text runner output may now be redirected (issue 12449)
+* Added VS solution for building under the compact framework (issue 14447)
+* Solutions are no longer bound to Source Control and anonymous access is now possible using several clients
+
+Bug fixes:
+
+* Fixed incorrect preprocessor constants (12361, 12411)
+* Fixed StackFilter to use correct namespace (12372)
+* Expected Exception is now handled corretly on Compact Framework (1446)
+
+----------------------------------------------------------------------------
+NUnitLite Version 0.1 - August 20, 2007
+
+The initial release of NUnitLite includes the following features:
+
+* Builds and runs on .NET 1.0, 1.1 and 2.0, .NET CF 1.0 and 2.0 and Mono 1.0 and 2.0 profiles. Since only a console runner is provided, it is not yet possible to run on devices that do not include a console.
+
+* Attributes recognized:
+ TestFixtureAttribute
+ TestAttribute
+ SetUpAttribute
+ TearDownAttribute
+ ExpectedExceptionAttribute
+
+* Tests may be identified by inheritance from TestCase or using attributes.
+
+* Assert methods:
+ Assert.Null
+ Assert.NotNull
+ Assert.True
+ Assert.False
+ Assert.Fail
+ Assert.That
+
+* Constraint classes (excluding abstract classes):
+ AllItemsConstraint
+ AndConstraint
+ AssignableFromConstraint
+ CollectionContainsConstraint
+ CollectionEquivalentConstraint
+ CollectionSubsetConstraint
+ ContainsConstraint
+ EmptyConstraint
+ EndsWithConstraint
+ ExactTypeConstraint
+ GreaterThanConstraint
+ GreaterThanOrEqualConstraint
+ InstanceOfTypeConstraint
+ LessThanConstraint
+ LessThanOrEqualConstraint
+ NoItemConstraint
+ NotConstraint
+ OrConstraint
+ PropertyConstraint
+ RegexConstraint (not available on compact framework)
+ SameAsConstraint
+ SomeItemsConstraint
+ StartsWithConstraint
+ SubstringConstraint
+ UniqueItemsConstraint
+
+* Syntax helpers:
+ Is: Not, All, Null, True, False, NaN, Empty, Unique, EqualTo, SameAs,
+ GreaterThan, GreaterThanOrEqualTo, LessThan, LessThanOrEqualTo,
+ AtLeast, AtMost, Type, InstanceOfType, AssignableFrom, StringContaining,
+ StringStarting, StringEnding, StringMatching (except compact framework),
+ EquivalentTo, SubsetOf
+
+ Contains: Substring, Item
+
+ Has: No, All, Some, None,Property, Length, Count, Member
+
diff --git a/NUnitLite-0.9.0/LICENSE.txt b/NUnitLite-0.9.0/LICENSE.txt
new file mode 100755
index 0000000..ec77837
--- /dev/null
+++ b/NUnitLite-0.9.0/LICENSE.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2004-2013 Charlie Poole
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/NUnitLite-0.9.0/NUnitLite.nuspec b/NUnitLite-0.9.0/NUnitLite.nuspec
new file mode 100755
index 0000000..44e6855
--- /dev/null
+++ b/NUnitLite-0.9.0/NUnitLite.nuspec
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+ <id>NUnitLite</id>
+ <version>0.9.0</version>
+ <authors>Charlie Poole</authors>
+ <owners>Charlie Poole</owners>
+ <licenseUrl>http://nunit.org/nuget/nunitlite-license.txt</licenseUrl>
+ <projectUrl>http://nunitlite.org</projectUrl>
+ <iconUrl>http://nunit.org/nuget/nunit_32x32.png</iconUrl>
+ <requireLicenseAcceptance>false</requireLicenseAcceptance>
+ <summary>NUnitLite is a lightweight testing framework for .NET, based on NUnit.</summary>
+ <description>NUnitLite provides a subset of the features of NUnit, uses minimal resources and runs on resource-restricted platforms used in embedded and mobile development.&#10;&#13;How to use this package:&#10;&#13;1. Create a console application for your tests and delete the generated class containing Main().&#10;&#13;2. Install the NUnitLite package, which creates a new Main() as well as adding a reference to NUnitLite.&#10;&#13;3. Add your tests to the test project and start the project to execute them.</description>
+ <copyright>Copyright (c) 2004-2012 Charlie Poole</copyright>
+ <language>en-US</language>
+ <tags>test testing tdd framework fluent assert device phone compact embedded</tags>
+ </metadata>
+ <files>
+ <file src="LICENSE.txt" />
+ <file src="README.txt" />
+ <file src="CHANGES.txt" />
+ <file src="package\NUnitLite-0.9.0\net-4.5\nunitlite.dll" target="lib/net45" />
+ <file src="package\NUnitLite-0.9.0\net-4.5\nunitlite.xml" target="lib/net45" />
+ <file src="package\NUnitLite-0.9.0\net-4.0\nunitlite.dll" target="lib/net40" />
+ <file src="package\NUnitLite-0.9.0\net-4.0\nunitlite.xml" target="lib/net40" />
+ <file src="package\NUnitLite-0.9.0\net-3.5\nunitlite.dll" target="lib/net35" />
+ <file src="package\NUnitLite-0.9.0\net-3.5\nunitlite.xml" target="lib/net35" />
+ <file src="package\NUnitLite-0.9.0\net-2.0\nunitlite.dll" target="lib/net20" />
+ <file src="package\NUnitLite-0.9.0\net-2.0\nunitlite.xml" target="lib/net20" />
+ <file src="package\NUnitLite-0.9.0\net-1.1\nunitlite.dll" target="lib/net11" />
+ <file src="package\NUnitLite-0.9.0\net-1.1\nunitlite.xml" target="lib/net11" />
+ <file src="package\NUnitLite-0.9.0\netcf-3.5\nunitlite.dll" target="lib/net35-cf" />
+ <file src="package\NUnitLite-0.9.0\netcf-3.5\nunitlite.xml" target="lib/net35-cf" />
+ <file src="package\NUnitLite-0.9.0\netcf-2.0\nunitlite.dll" target="lib/net20-cf" />
+ <file src="package\NUnitLite-0.9.0\netcf-2.0\nunitlite.xml" target="lib/net20-cf" />
+ <file src="package\NUnitLite-0.9.0\silverlight-5.0\nunitlite.dll" target="lib/sl50" />
+ <file src="package\NUnitLite-0.9.0\silverlight-5.0\nunitlite.xml" target="lib/sl50" />
+ <file src="package\NUnitLite-0.9.0\silverlight-4.0\nunitlite.dll" target="lib/sl40" />
+ <file src="package\NUnitLite-0.9.0\silverlight-4.0\nunitlite.xml" target="lib/sl40" />
+ <file src="package\NUnitLite-0.9.0\silverlight-3.0\nunitlite.dll" target="lib/sl30" />
+ <file src="package\NUnitLite-0.9.0\silverlight-3.0\nunitlite.xml" target="lib/sl30" />
+ <file src="src\tests\Program.cs" target="content" />
+ </files>
+</package> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/NUnitLite.sln b/NUnitLite-0.9.0/NUnitLite.sln
new file mode 100755
index 0000000..0ce20b7
--- /dev/null
+++ b/NUnitLite-0.9.0/NUnitLite.sln
@@ -0,0 +1,410 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-2.0", "src\framework\nunitlite-2.0.csproj", "{C24A3FC4-2541-4E9C-BADD-564777610B75}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-2.0", "src\tests\nunitlite.tests-2.0.csproj", "{C8FA4073-B24E-4178-93A1-5E1256C8B528}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestResultConsole", "src\TestResultConsole\TestResultConsole.csproj", "{8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-2.0", "src\testdata\nunitlite.testdata-2.0.csproj", "{442DAB16-3063-4FE3-90B6-C29C3D85360D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NET-2.0", "NET-2.0", "{A466054B-B601-46A2-8D7B-03DE10A94F09}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NET-3.5", "NET-3.5", "{08B11E56-AB8C-4374-8709-45631094B29B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NET-4.0", "NET-4.0", "{D0ED3F4D-113E-4858-8042-C657CAC0CF46}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-3.5", "src\framework\nunitlite-3.5.csproj", "{43B24DC5-16D6-45EF-93F1-B021B785A892}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-3.5", "src\testdata\nunitlite.testdata-3.5.csproj", "{652AFEEB-B19C-4C67-A014-2248EA72F229}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-3.5", "src\tests\nunitlite.tests-3.5.csproj", "{94A4E298-F324-4531-856F-127505F766E5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-4.0", "src\framework\nunitlite-4.0.csproj", "{1567BCCE-7BE9-4815-84D7-7F794DB39081}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-4.0", "src\testdata\nunitlite.testdata-4.0.csproj", "{5C77A144-3CD1-42FC-B622-410E1945CA1E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-4.0", "src\tests\nunitlite.tests-4.0.csproj", "{497A578E-EF93-4190-96E0-B7F22E08027B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{601BC853-DE7B-47EB-A92B-AEDE16A17FCF}"
+ ProjectSection(SolutionItems) = preProject
+ CHANGES.txt = CHANGES.txt
+ LICENSE.txt = LICENSE.txt
+ NOTES.txt = NOTES.txt
+ nunitlite.build = nunitlite.build
+ nunitlite.build.include = nunitlite.build.include
+ NUnitLite.nuspec = NUnitLite.nuspec
+ nunitlite.projects.common = nunitlite.projects.common
+ README.txt = README.txt
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-2.0", "src\mock-assembly\mock-assembly-2.0.csproj", "{1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-3.5", "src\mock-assembly\mock-assembly-3.5.csproj", "{1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-4.0", "src\mock-assembly\mock-assembly-4.0.csproj", "{961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SL-4.0", "SL-4.0", "{B4F52628-112A-4C09-A597-2DC7B5AEE818}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-sl-4.0", "src\framework\nunitlite-sl-4.0.csproj", "{41326141-EB24-4984-9D9B-5CFAA55946BA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-sl-4.0", "src\mock-assembly\mock-assembly-sl-4.0.csproj", "{3C1249FC-B5DF-4E3A-ADDD-817526254876}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-sl-4.0", "src\testdata\nunitlite.testdata-sl-4.0.csproj", "{E97412B5-8C91-4236-8E9A-24C8E20BC675}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-sl-4.0", "src\tests\nunitlite.tests-sl-4.0.csproj", "{0B899C26-9114-440A-A8A1-615CDE7EE6BD}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SL-5.0", "SL-5.0", "{AEB97450-F9CF-4CF4-90D0-6CD5EDAB8588}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-sl-5.0", "src\framework\nunitlite-sl-5.0.csproj", "{5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-sl-5.0", "src\mock-assembly\mock-assembly-sl-5.0.csproj", "{3C19A734-11BB-48FD-81D0-042B6A8D4CFC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-sl-5.0", "src\testdata\nunitlite.testdata-sl-5.0.csproj", "{A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-sl-5.0", "src\tests\nunitlite.tests-sl-5.0.csproj", "{7107C352-7F42-497E-A26C-25E9AAE8E54C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SL-3.0", "SL-3.0", "{035EFB6B-82E9-4510-AC99-B586E6381B25}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-sl-3.0", "src\framework\nunitlite-sl-3.0.csproj", "{02B02379-2596-4E45-8B10-835D62EA2D9E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-sl-3.0", "src\mock-assembly\mock-assembly-sl-3.0.csproj", "{BB355D2C-FB4F-4526-9B40-7944C40FDFDA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-sl-3.0", "src\testdata\nunitlite.testdata-sl-3.0.csproj", "{6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-sl-3.0", "src\tests\nunitlite.tests-sl-3.0.csproj", "{FFEA1F81-9631-43A8-8368-FBC14B1E7B02}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ci-test-runner-sl-5.0", "src\runner\ci-test-runner-sl-5.0.csproj", "{71848958-61FC-49B1-986B-CD824F9C3D9C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ci-test-runner-sl-4.0", "src\runner\ci-test-runner-sl-4.0.csproj", "{6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ci-test-runner-sl-3.0", "src\runner\ci-test-runner-sl-3.0.csproj", "{AA4E9904-77D0-406B-A50C-A0508DDB56A7}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {C24A3FC4-2541-4E9C-BADD-564777610B75}.Release|x86.ActiveCfg = Release|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528}.Release|x86.ActiveCfg = Release|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}.Release|x86.ActiveCfg = Release|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D}.Release|x86.ActiveCfg = Release|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Release|Any CPU.Build.0 = Release|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {43B24DC5-16D6-45EF-93F1-B021B785A892}.Release|x86.ActiveCfg = Release|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Release|Any CPU.Build.0 = Release|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {652AFEEB-B19C-4C67-A014-2248EA72F229}.Release|x86.ActiveCfg = Release|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {94A4E298-F324-4531-856F-127505F766E5}.Release|x86.ActiveCfg = Release|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081}.Release|x86.ActiveCfg = Release|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E}.Release|x86.ActiveCfg = Release|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {497A578E-EF93-4190-96E0-B7F22E08027B}.Release|x86.ActiveCfg = Release|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}.Release|x86.ActiveCfg = Release|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}.Release|x86.ActiveCfg = Release|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}.Release|x86.ActiveCfg = Release|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {41326141-EB24-4984-9D9B-5CFAA55946BA}.Release|x86.ActiveCfg = Release|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876}.Release|x86.ActiveCfg = Release|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675}.Release|x86.ActiveCfg = Release|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD}.Release|x86.ActiveCfg = Release|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}.Release|x86.ActiveCfg = Release|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC}.Release|x86.ActiveCfg = Release|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}.Release|x86.ActiveCfg = Release|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C}.Release|x86.ActiveCfg = Release|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {02B02379-2596-4E45-8B10-835D62EA2D9E}.Release|x86.ActiveCfg = Release|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA}.Release|x86.ActiveCfg = Release|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}.Release|x86.ActiveCfg = Release|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02}.Release|x86.ActiveCfg = Release|Any CPU
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Debug|x86.ActiveCfg = Debug|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Debug|x86.Build.0 = Debug|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Release|Any CPU.ActiveCfg = Release|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Release|Mixed Platforms.Build.0 = Release|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Release|x86.ActiveCfg = Release|x86
+ {71848958-61FC-49B1-986B-CD824F9C3D9C}.Release|x86.Build.0 = Release|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Debug|x86.ActiveCfg = Debug|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Debug|x86.Build.0 = Debug|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Release|Any CPU.ActiveCfg = Release|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Release|Mixed Platforms.Build.0 = Release|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Release|x86.ActiveCfg = Release|x86
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA}.Release|x86.Build.0 = Release|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Debug|x86.ActiveCfg = Debug|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Debug|x86.Build.0 = Debug|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Release|Any CPU.ActiveCfg = Release|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Release|Mixed Platforms.Build.0 = Release|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Release|x86.ActiveCfg = Release|x86
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {C8FA4073-B24E-4178-93A1-5E1256C8B528} = {A466054B-B601-46A2-8D7B-03DE10A94F09}
+ {442DAB16-3063-4FE3-90B6-C29C3D85360D} = {A466054B-B601-46A2-8D7B-03DE10A94F09}
+ {C24A3FC4-2541-4E9C-BADD-564777610B75} = {A466054B-B601-46A2-8D7B-03DE10A94F09}
+ {1516338A-F26B-4BA7-AF6E-C3F6A39DC45B} = {A466054B-B601-46A2-8D7B-03DE10A94F09}
+ {43B24DC5-16D6-45EF-93F1-B021B785A892} = {08B11E56-AB8C-4374-8709-45631094B29B}
+ {652AFEEB-B19C-4C67-A014-2248EA72F229} = {08B11E56-AB8C-4374-8709-45631094B29B}
+ {94A4E298-F324-4531-856F-127505F766E5} = {08B11E56-AB8C-4374-8709-45631094B29B}
+ {1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7} = {08B11E56-AB8C-4374-8709-45631094B29B}
+ {1567BCCE-7BE9-4815-84D7-7F794DB39081} = {D0ED3F4D-113E-4858-8042-C657CAC0CF46}
+ {5C77A144-3CD1-42FC-B622-410E1945CA1E} = {D0ED3F4D-113E-4858-8042-C657CAC0CF46}
+ {497A578E-EF93-4190-96E0-B7F22E08027B} = {D0ED3F4D-113E-4858-8042-C657CAC0CF46}
+ {961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A} = {D0ED3F4D-113E-4858-8042-C657CAC0CF46}
+ {41326141-EB24-4984-9D9B-5CFAA55946BA} = {B4F52628-112A-4C09-A597-2DC7B5AEE818}
+ {3C1249FC-B5DF-4E3A-ADDD-817526254876} = {B4F52628-112A-4C09-A597-2DC7B5AEE818}
+ {E97412B5-8C91-4236-8E9A-24C8E20BC675} = {B4F52628-112A-4C09-A597-2DC7B5AEE818}
+ {0B899C26-9114-440A-A8A1-615CDE7EE6BD} = {B4F52628-112A-4C09-A597-2DC7B5AEE818}
+ {6414BA5A-8CB7-4022-AABB-7E38BB6DB5EA} = {B4F52628-112A-4C09-A597-2DC7B5AEE818}
+ {5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3} = {AEB97450-F9CF-4CF4-90D0-6CD5EDAB8588}
+ {3C19A734-11BB-48FD-81D0-042B6A8D4CFC} = {AEB97450-F9CF-4CF4-90D0-6CD5EDAB8588}
+ {A2B5D1FA-D865-4B30-A82D-30BB1C8C474E} = {AEB97450-F9CF-4CF4-90D0-6CD5EDAB8588}
+ {7107C352-7F42-497E-A26C-25E9AAE8E54C} = {AEB97450-F9CF-4CF4-90D0-6CD5EDAB8588}
+ {71848958-61FC-49B1-986B-CD824F9C3D9C} = {AEB97450-F9CF-4CF4-90D0-6CD5EDAB8588}
+ {02B02379-2596-4E45-8B10-835D62EA2D9E} = {035EFB6B-82E9-4510-AC99-B586E6381B25}
+ {BB355D2C-FB4F-4526-9B40-7944C40FDFDA} = {035EFB6B-82E9-4510-AC99-B586E6381B25}
+ {6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB} = {035EFB6B-82E9-4510-AC99-B586E6381B25}
+ {FFEA1F81-9631-43A8-8368-FBC14B1E7B02} = {035EFB6B-82E9-4510-AC99-B586E6381B25}
+ {AA4E9904-77D0-406B-A50C-A0508DDB56A7} = {035EFB6B-82E9-4510-AC99-B586E6381B25}
+ EndGlobalSection
+ GlobalSection(MonoDevelopProperties) = preSolution
+ StartupItem = NUnitLiteTests\NUnitLiteTests.csproj
+ EndGlobalSection
+EndGlobal
diff --git a/NUnitLite-0.9.0/NUnitLiteCF.sln b/NUnitLite-0.9.0/NUnitLiteCF.sln
new file mode 100755
index 0000000..bd48935
--- /dev/null
+++ b/NUnitLite-0.9.0/NUnitLiteCF.sln
@@ -0,0 +1,79 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NETCF-2.0", "NETCF-2.0", "{DE0F317D-55BD-4924-8B52-3D9BCD4E9CBF}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NETCF-3.5", "NETCF-3.5", "{25D97EA0-F781-4AF9-AB39-EA380B929F9E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-netcf-2.0", "src\framework\nunitlite-netcf-2.0.csproj", "{BED999D7-F594-4CE4-A037-E40E2B9C1288}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-netcf-2.0", "src\testdata\nunitlite.testdata-netcf-2.0.csproj", "{F67E80E8-DF9F-4C66-9142-5002FA638EB7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-netcf-2.0", "src\tests\nunitlite.tests-netcf-2.0.csproj", "{4B518BF0-D523-4F75-AF3B-9B41865E634A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite-netcf-3.5", "src\framework\nunitlite-netcf-3.5.csproj", "{5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.testdata-netcf-3.5", "src\testdata\nunitlite.testdata-netcf-3.5.csproj", "{0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunitlite.tests-netcf-3.5", "src\tests\nunitlite.tests-netcf-3.5.csproj", "{80A9EC94-2C42-44AC-9D2C-E1418D712C48}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-netcf-2.0", "src\mock-assembly\mock-assembly-netcf-2.0.csproj", "{33EA4538-3452-42ED-92A9-4CC3B25032AD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly-netcf-3.5", "src\mock-assembly\mock-assembly-netcf-3.5.csproj", "{B0C85907-1103-44F4-ACFF-6A1B9170C0B1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BED999D7-F594-4CE4-A037-E40E2B9C1288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BED999D7-F594-4CE4-A037-E40E2B9C1288}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BED999D7-F594-4CE4-A037-E40E2B9C1288}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BED999D7-F594-4CE4-A037-E40E2B9C1288}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F67E80E8-DF9F-4C66-9142-5002FA638EB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F67E80E8-DF9F-4C66-9142-5002FA638EB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F67E80E8-DF9F-4C66-9142-5002FA638EB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F67E80E8-DF9F-4C66-9142-5002FA638EB7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {80A9EC94-2C42-44AC-9D2C-E1418D712C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80A9EC94-2C42-44AC-9D2C-E1418D712C48}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80A9EC94-2C42-44AC-9D2C-E1418D712C48}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80A9EC94-2C42-44AC-9D2C-E1418D712C48}.Release|Any CPU.Build.0 = Release|Any CPU
+ {80A9EC94-2C42-44AC-9D2C-E1418D712C48}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {33EA4538-3452-42ED-92A9-4CC3B25032AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {33EA4538-3452-42ED-92A9-4CC3B25032AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {33EA4538-3452-42ED-92A9-4CC3B25032AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {33EA4538-3452-42ED-92A9-4CC3B25032AD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0C85907-1103-44F4-ACFF-6A1B9170C0B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B0C85907-1103-44F4-ACFF-6A1B9170C0B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0C85907-1103-44F4-ACFF-6A1B9170C0B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B0C85907-1103-44F4-ACFF-6A1B9170C0B1}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {BED999D7-F594-4CE4-A037-E40E2B9C1288} = {DE0F317D-55BD-4924-8B52-3D9BCD4E9CBF}
+ {F67E80E8-DF9F-4C66-9142-5002FA638EB7} = {DE0F317D-55BD-4924-8B52-3D9BCD4E9CBF}
+ {4B518BF0-D523-4F75-AF3B-9B41865E634A} = {DE0F317D-55BD-4924-8B52-3D9BCD4E9CBF}
+ {33EA4538-3452-42ED-92A9-4CC3B25032AD} = {DE0F317D-55BD-4924-8B52-3D9BCD4E9CBF}
+ {5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC} = {25D97EA0-F781-4AF9-AB39-EA380B929F9E}
+ {0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C} = {25D97EA0-F781-4AF9-AB39-EA380B929F9E}
+ {80A9EC94-2C42-44AC-9D2C-E1418D712C48} = {25D97EA0-F781-4AF9-AB39-EA380B929F9E}
+ {B0C85907-1103-44F4-ACFF-6A1B9170C0B1} = {25D97EA0-F781-4AF9-AB39-EA380B929F9E}
+ EndGlobalSection
+EndGlobal
diff --git a/NUnitLite-0.9.0/README.txt b/NUnitLite-0.9.0/README.txt
new file mode 100755
index 0000000..5676b0d
--- /dev/null
+++ b/NUnitLite-0.9.0/README.txt
@@ -0,0 +1,153 @@
+NUnitLite Version 0.9 - May 5, 2013
+
+NUnitLite is a small-footprint implementation of much of the current NUnit framework. It is distributed in source form and is intended for use in situations where NUnit is too large or complex. In particular, it targets mobile and embedded environments as well as testing of applications that require "embedding" the framework in another piece of software, as when testing plugin architectures.
+
+This file provides basic information about NUnitLite. For more info see the NUnitLite web site at http://nunitlite.com.
+
+COPYRIGHT AND LICENSE
+
+NUnitLite is Copyright © 2013, Charlie Poole and is licensed under the MIT license.
+
+A copy of the license is distributed with the program in the file LICENSE.txt and is also available at http://www.opensource.org/licenses/mit-license.php.
+
+NUNitLite is based on ideas in NUnit, but not on the NUnit implementation. In addition, some code developed in NUnitLite was subsequently contributed to the NUnit project, where it is available under the NUnit license. Subsequently, some (but not all) of the newer NUnit features were ported back to NUnitLite.
+
+ATTRIBUTES
+
+NUnitLite supports most of the same attributes as NUnit 2.6.
+ CategoryAttribute
+ CombinatorialAttribute
+ CultureAttribute
+ DatapointAttribute
+ DatapointsAttribute
+ DescriptionAttribute
+ ExpectedExceptionAttribute
+ ExplicitAttribute
+ IgnoreAttribute
+ MaxTimeAttribute
+ PairwiseAttribute
+ PlatformAttribute
+ PropertyAttribute
+ RandomAttribute
+ RangeAttribute
+ SequentialAttribute
+ SetCultureAttribute
+ SetUICultureAttribute
+ SetUpAttribute
+ TearDownAttribute
+ TestAttribute
+ TestCaseAttribute
+ TestCaseSourceAttribute
+ TestFixtureAttribute
+ TestFixtureSetUpAttribute
+ TestFixtureTearDownAttribute
+ TheoryAttribute
+ TimeoutAttribute
+ ValuesAttribute
+ ValueSourceAttribute
+
+ASSERTS
+
+The programmer expresses expected test conditions using the Assert class. The existing functionality of most current NUnit Assert methods is supported, but the syntax has been changed to use the more extensible constraint-based format. The following methods are supported:
+ Assert.Pass
+ Assert.Fail
+ Assert.Ignore
+ Assert.Inconclusive
+ Assert.That
+ Assert.ByVal
+ Assert.Throws
+ Assert.DoesNotThrow
+ Assert.Catch
+ Assert.Null
+ Assert.NotNull
+ Assert.True
+ Assert.False
+ Assert.AreEqual
+ Assert.AreNotEqual
+ Assert.AreSame
+ Assert.AreNotSame
+
+ASSUMPTIONS
+
+The programmer may express assumptions in the test using Assume.That() A failure in Assume.That causes an Inconclusive result.
+
+CONSTRAINTS
+
+NUnitLite supports most of the same built-in constraints as NUnit. Users may also derive custom constraints from the abstract Constraint class. The following built-in constraints are provided:
+ AllItemsConstraint
+ AndConstraint
+ AssignableFromConstraint
+ AssignableToConstraint
+ AttributeConstraint
+ AttributeExistsConstraint
+ BinarySerializableConstraint (not available on compact framework)
+ CollectionContainsConstraint
+ CollectionEquivalentConstraint
+ CollectionOrderedConstraint
+ CollectionSubsetConstraint
+ ContainsConstraint
+ DelayedConstraint
+ EmptyCollectionConstraint
+ EmptyConstraint
+ EmptyDirectoryConstraint
+ EmptyStringConstraint
+ EndsWithConstraint
+ EqualConstraint
+ ExactCountConstraint
+ ExactTypeConstraint
+ ExceptionTypeConstraint
+ FalseConstraint
+ GreaterThanConstraint
+ GreaterThanOrEqualConstraint
+ InstanceOfTypeConstraint
+ LessThanConstraint
+ LessThanOrEqualConstraint
+ NaNConstraint
+ NoItemConstraint
+ NotConstraint
+ NullConstraint
+ NullOrEmptyStringConstraint
+ OrConstraint
+ PredicateConstraint
+ PropertyConstraint
+ PropertyExistsConstraint
+ RangeConstraint
+ RegexConstraint (not available on compact framework)
+ ReusableConstraint
+ SameAsConstraint
+ SamePathConstraint
+ SamePathOrUnderConstraint
+ SomeItemsConstraint
+ StartsWithConstraint
+ SubstringConstraint
+ ThrowsConstraint
+ ThrowsNothingConstraint
+ TrueConstraint
+ UniqueItemsConstraint
+ XmlSerializableConstraint (not available on compact framework 1.0)
+
+Although constraints may be created using their constructors, the more usual approach is to make use of one or more of the NUnitLite SyntaxHelpers. The following helpers are provided:
+
+ Is: Not, All, Null, True, False, NaN, Empty, Unique, EqualTo, SameAs,
+ GreaterThan, GreaterThanOrEqualTo, LessThan, LessThanOrEqualTo,
+ AtLeast, AtMost, TypeOf, InstanceOf, InstanceOfType, AssignableFrom,
+ AssignableTo, StringContaining, StringStarting, StringEnding,
+ StringMatching, EquivalentTo, SubsetOf, BinarySerializable, XmlSerializable,
+ Ordered, SamePath, SamePathOrUnder, InRange
+
+ Contains: Substring, Item
+
+ Has: No, All, Some, None,Property, Length, Count, Message, Member, Attribute
+
+Tests are loaded as a list of fixtures, without any additional hierarchy. Each fixture contains it's tests. Tests are executed in the order found, without any guarantees of ordering. A separate instance of the fixture object is created for each test case executed by NUnitLite. The embedded console runner produces a summary of tests run and lists any errors or failures.
+
+USAGE
+
+NUnitLite is not "installed" in your system. Instead, you should include nunitlite.dll in your project. Your test assembly should be an exe file and should reference the nunitlite assembly. If you place a call like this in your Main
+ new TextUI().Execute(args);
+then NUnitLite will run all the tests in the test project, using the args provided. Use -help to see the available options.
+
+DOCUMENTATION
+
+NUnitLite uses the NUnit.Framework namespace, which allows relatively easy portability between NUnit and NUnitLite. Currently, there is no separate set of documentation for NUnitLite so you should use the docs for NUnit 2.6 or later in conjunction with the information in this file.
+
diff --git a/NUnitLite-0.9.0/nant.bat b/NUnitLite-0.9.0/nant.bat
new file mode 100755
index 0000000..a32134a
--- /dev/null
+++ b/NUnitLite-0.9.0/nant.bat
@@ -0,0 +1,2 @@
+tools\nant\bin\nant.exe %*
+
diff --git a/NUnitLite-0.9.0/nunitlite.build b/NUnitLite-0.9.0/nunitlite.build
new file mode 100755
index 0000000..0838fc9
--- /dev/null
+++ b/NUnitLite-0.9.0/nunitlite.build
@@ -0,0 +1,384 @@
+<?xml version="1.0"?>
+<project name="NUnit" default="help" basedir=".">
+
+<!-- ***************************************************************** -->
+<!-- This script has been tested using NAnt 0.92. At least -->
+<!-- one of the supported runtimes and sdk must be installed. In -->
+<!-- order to build the msi, WiX 2.0 and the WiX tasks for NAnt -->
+<!-- are required. To run the test coverage target, NCover is -->
+<!-- required. -->
+<!-- ***************************************************************** -->
+<!-- TODO: Edit above to reflect actual targets -->
+
+<!-- ***************************************************************** -->
+<!-- *** Default Help Target *** -->
+<!-- ***************************************************************** -->
+
+<target name="help">
+ <echo>
+This build file will build NUnitLite for any of the supported
+runtime frameworks which are actually installed. To add support
+for a framework, edit this script
+
+Running on the current system, the following runtime frameworks
+are available for building and testing NUnit:
+ </echo>
+
+ <foreach item="String" delim=","
+ property="framework" in="${installed.frameworks}">
+ <echo message=" ${string::pad-right(framework,18,' ')}${framework::get-description(framework)}"/>
+ </foreach>
+
+ <echo>
+Note that targets that set the build configuration or runtime
+to be used must come before action targets. For example:
+
+ nant net-2.0 release build
+ nant build-all
+ nant debug clean build
+
+Use nant -projecthelp to see a full list of targets.
+ </echo>
+</target>
+
+<!-- ***************************************************************** -->
+<!-- ********* Common properties that control the build ************** -->
+<!-- ***************************************************************** -->
+
+ <!-- Project name - used as a prefix for packages -->
+ <property name="project.name" value="NUnitLite"/>
+
+ <!-- NUnit version for packaging -->
+ <property name="package.version" value="0.9.0"/>
+
+ <!-- Additional suffix used to distinguish files with the same version -->
+ <property name="package.suffix" value=""/>
+
+ <!-- Nominal version used for install directory and program
+ files menu. Normally the same as the package version,
+ but may differ when we are in alpha or beta. -->
+ <property name="nominal.version" value="0.9.0" />
+
+ <!-- Frameworks supported by this build script -->
+ <property name="supported.frameworks"
+ value="net-1.1,net-2.0,net-3.5,net-4.0,net-4.5,netcf-2.0,netcf-3.5,mono-2.0,mono-3.5,mono-4.0,silverlight-3.0,silverlight-4.0,silverlight-5.0"/>
+
+ <!-- Framework versions for which packages are normally created -->
+ <property name="standard.packages"
+ value="net-1.1,net-2.0,net-3.5,net-4.0,net-4.5,netcf-2.0,netcf-3.5,silverlight-3.0,silverlight-4.0,silverlight-5.0" />
+
+ <!-- Additional internal properties are set in the include file -->
+ <include buildfile="nunitlite.build.include"/>
+
+
+<!-- ***************************************************************** -->
+<!-- *** Targets that set the build configuration *** -->
+<!-- *** These must come before actions like build or test *** -->
+<!-- ***************************************************************** -->
+
+ <target name="debug" description="Set config to debug for commands that follow">
+ <call target="set-debug-build-config" />
+ </target>
+
+ <target name="release" description="Set config to release for commands that follow">
+ <call target="set-release-build-config" />
+ </target>
+
+<!-- ***************************************************************** -->
+<!-- *** Targets that set the runtime configuration *** -->
+<!-- *** These must come before actions like build or test *** -->
+<!-- ***************************************************************** -->
+
+ <target name="net-1.1"
+ description="Set runtime to .NET 1.1 for targets that follow"
+ depends="set-net-1.1-runtime-config"/>
+
+ <target name="net-2.0"
+ description="Set runtime to .NET 2.0 for targets that follow"
+ depends="set-net-2.0-runtime-config"/>
+
+ <target name="net-3.5"
+ description="Set runtime to .NET 3.5 for targets that follow"
+ depends="set-net-3.5-runtime-config"/>
+
+ <target name="net-4.0"
+ description="Set runtime to .NET 4.0 for targets that follow"
+ depends="set-net-4.0-runtime-config"/>
+
+ <target name="net-4.5"
+ description="Set runtime to .NET 4.5 for targets that follow"
+ depends="set-net-4.5-runtime-config"/>
+
+ <target name="netcf-2.0"
+ description="Set runtime to .NET CF 2.0 for targets that follow"
+ depends="set-netcf-2.0-runtime-config"/>
+
+ <target name="netcf-3.5"
+ description="Set runtime to .NET CF 3.5 for targets that follow"
+ depends="set-netcf-3.5-runtime-config"/>
+
+ <target name="mono-2.0"
+ description="Set runtime to Mono 2.0 for targets that follow"
+ depends="set-mono-2.0-runtime-config"/>
+
+ <target name="mono-3.5"
+ description="Set runtime to Mono 3.5 for targets that follow"
+ depends="set-mono-3.5-runtime-config"/>
+
+ <target name="mono-4.0"
+ description="Set runtime to Mono 4.0 for targets that follow"
+ depends="set-mono-4.0-runtime-config"/>
+
+ <target name="sl-3.0"
+ description="Set runtime to Silverlight 3.0 for targets that follow"
+ depends="set-silverlight-3.0-runtime-config"/>
+
+ <target name="sl-4.0"
+ description="Set runtime to Silverlight 4.0 for targets that follow"
+ depends="set-silverlight-4.0-runtime-config"/>
+
+ <target name="sl-5.0"
+ description="Set runtime to Silverlight 5.0 for targets that follow"
+ depends="set-silverlight-5.0-runtime-config"/>
+
+<!-- ***************************************************************** -->
+<!-- *** Targets that clean directories *** -->
+<!-- ***************************************************************** -->
+
+ <target name="clean" depends="set-build-dir"
+ description="Removes the current build directory">
+
+ <property name="current.target" value="clean"/>
+ <call target="run-subprojects"/>
+
+ </target>
+
+ <target name="clean-all" description="Removes all build directories">
+ <delete dir="${project.build.dir}"
+ if="${directory::exists( project.build.dir )}"/>
+ </target>
+
+ <target name="clean-package-dir"
+ description="Removes the current package working directory">
+ <delete dir="${package.working.dir}"
+ if="${directory::exists( package.working.dir )}"/>
+ </target>
+
+ <target name="clean-source-dirs">
+ <delete>
+ <fileset>
+ <include name="*/*/obj/**/*"/>
+ <include name="*/*/bin/**/*"/>
+ </fileset>
+ </delete>
+ </target>
+.
+<!-- ***************************************************************** -->
+<!-- *** Targets that perform builds *** -->
+<!-- ***************************************************************** -->
+
+ <target name="build" depends="make-build-dir"
+ description="Build NUnit for default runtime version and config">
+
+ <echo message="*"/>
+ <echo message="* Starting ${runtime.config} ${build.config} build"/>
+ <echo message="* Current Build Directory = ${current.build.dir}"/>
+ <echo message="*"/>
+
+ <property name="nant.settings.currentframework" value="${build.framework}"/>
+
+ <property name="current.target" value="build"/>
+ <call target="run-subprojects"/>
+
+ </target>
+
+ <target name="build-all"
+ description="Build current config for all available runtimes">
+ <foreach item="String" delim=","
+ property="framework" in="${installed.frameworks}">
+ <call target="set-${framework}-runtime-config"/>
+ <call target="build"/>
+ </foreach>
+ </target>
+
+ <target name="rebuild" depends="make-build-dir"
+ description="Rebuild NUnit for default runtime version and config">
+
+ <echo message="*"/>
+ <echo message="* Starting ${runtime.config} ${build.config} rebuild"/>
+ <echo message="* Current Build Directory = ${current.build.dir}"/>
+ <echo message="*"/>
+
+ <property name="nant.settings.currentframework" value="${build.framework}"/>
+
+ <property name="current.target" value="rebuild"/>
+ <call target="run-subprojects"/>
+
+ </target>
+
+ <target name="rebuild-all" depends="clean-all,build-all"
+ description="Rebuild current config for all available runtimes">
+ <foreach item="String" delim=","
+ property="framework" in="${installed.frameworks}">
+ <call target="set-${framework}-runtime-config"/>
+ <call target="rebuild"/>
+ </foreach>
+ </target>
+
+<!-- ***************************************************************** -->
+<!-- *** Targets for running tests *** -->
+<!-- ***************************************************************** -->
+
+ <target name="test" depends="build"
+ description="Build and run tests for selected config and runtime">
+
+ <call target="run-test" unless="${runtime.platform == 'silverlight'}"/>
+ <call target="run-silverlight-test" if="${runtime.platform == 'silverlight'}"/>
+
+ </target>
+
+ <target name="ci-test" depends="build"
+ description="Build and run CI test (no gui) for selected config and runtime">
+
+ <call target="run-test" unless="${runtime.platform == 'silverlight'}"/>
+ <call target="run-silverlight-ci-test" if="${runtime.platform == 'silverlight'}"/>
+
+ </target>
+
+ <target name="run-test"
+ description="Run tests for selected config and runtime (no rebuild)">
+
+ <property name="nant.settings.currentframework" value="${runtime.config}"/>
+
+ <echo message="*"/>
+ <echo message="* Testing ${runtime.config} ${build.config} build"/>
+ <echo message="*"/>
+
+ <exec basedir="${current.build.dir}"
+ workingdir="${current.build.dir}"
+ program="nunitlite.tests.exe"
+ managed="Strict"/>
+
+ </target>
+
+ <target name="run-silverlight-test">
+
+ <property name="xap.file.name" value="nunitlite.tests-${msbuild.proj.suffix}.xap"/>
+
+ <exec program="sllauncher.exe"
+ basedir="C:\Program Files\Microsoft Silverlight"
+ workingdir="${current.build.dir}">
+
+ <arg value="/emulate:${xap.file.name}"/>
+ <arg value="/origin:file://TestPage.html"/>
+
+ </exec>
+
+ </target>
+
+ <target name="run-silverlight-ci-test">
+
+ <echo message="*"/>
+ <echo message="* Testing ${runtime.config} ${build.config} build"/>
+ <echo message="*"/>
+
+ <exec basedir="${current.build.dir}"
+ workingdir="${current.build.dir}"
+ program="ci-test-runner.exe"
+ commandline="nunitlite.tests"
+ managed="Strict"/>
+
+ </target>
+
+ <target name="test-all"
+ description="Build and test all runtimes for current config">
+
+ <foreach item="String" delim=","
+ property="framework" in="${installed.frameworks}">
+ <call target="set-${framework}-runtime-config"/>
+ <call target="test" />
+ </foreach>
+
+ </target>
+
+<!-- ***************************************************************** -->
+<!-- *** Targets for packaging the NUnitLite distribution *** -->
+<!-- ***************************************************************** -->
+
+ <target name="package" description="Create package for a release">
+
+ <call target="package-bins"/>
+ <call target="package-src"/>
+
+ </target>
+
+ <target name="package-bins" depends="clean-package-dir"
+ description="Package binaries for all supported frameworks">
+
+ <foreach item="String" delim=","
+ property="framework" in="${standard.packages}">
+
+ <if test="${framework::exists(framework)}">
+ <if test="${string::starts-with(framework, 'silverlight') or framework::sdk-exists(framework)}">
+ <call target="set-${framework}-runtime-config"/>
+ <call target="package-build"/>
+ </if>
+ </if>
+
+ </foreach>
+
+ <!-- Create the zip file -->
+ <zip zipfile="${project.package.dir}/${package.name}.zip" ziplevel="9">
+ <fileset basedir="${package.working.dir}" prefix="${package.name}">
+ <include name="**"/>
+ </fileset>
+ </zip>
+
+ <!-- Create the NuGet package -->
+ <exec program="NuGet.exe"
+ commandline="pack NUnitLite.nuspec -OutputDirectory package -Version ${package.version}"
+ workingdir="."/>
+
+ </target>
+
+ <target name="package-build" depends="build"
+ description="Helper that packages the binaries for a single build">
+
+ <copy todir="${package.working.dir}/${runtime.config}">
+ <fileset basedir="${current.build.dir}">
+ <include name="*"/>
+ </fileset>
+ </copy>
+
+ </target>
+
+ <target name="package-src" depends="clean-package-dir"
+ description="Create full source package for developer use">
+
+ <copy todir="${package.working.dir}">
+ <fileset basedir="${project.base.dir}">
+ <include name="README.txt"/>
+ <include name="CHANGES.txt"/>
+ <include name="LICENSE.txt"/>
+ <include name="nant.bat"/>
+ <include name="nunitlite.build"/>
+ <include name="nunitlite.build.include"/>
+ <include name="NUnitLite.nuspec"/>
+ <include name="NUnitLite.sln"/>
+ <include name="NUnitLiteCF.sln"/>
+ </fileset>
+ </copy>
+
+ <call target="copy-src"/>
+ <call target="copy-tools"/>
+
+ <!-- Create the zip file -->
+ <zip zipfile="${project.package.dir}/${package.name}-src.zip" ziplevel="9">
+ <fileset basedir="${package.working.dir}" prefix="${package.name}">
+ <include name="**"/>
+ </fileset>
+ </zip>
+
+ </target>
+
+</project>
diff --git a/NUnitLite-0.9.0/nunitlite.build.include b/NUnitLite-0.9.0/nunitlite.build.include
new file mode 100755
index 0000000..f25484b
--- /dev/null
+++ b/NUnitLite-0.9.0/nunitlite.build.include
@@ -0,0 +1,421 @@
+<?xml version="1.0"?>
+<project name="NUnit" default="build" basedir=".">
+
+<!-- ***************************************************************** -->
+<!-- **********Set Properties used by Various targets **************** -->
+<!-- ***************************************************************** -->
+
+ <!-- Project base dir is nant project base dir -->
+ <property name="project.base.dir"
+ value="${project::get-base-directory()}"/>
+
+ <!-- Other directories are derived from base -->
+ <property name="project.src.dir"
+ value="${path::combine(project.base.dir,'src')}"/>
+ <property name="project.tools.dir"
+ value="${path::combine(project.base.dir,'tools')}"/>
+ <property name="project.build.dir"
+ value="${path::combine(project.base.dir,'build')}"/>
+ <property name="project.package.dir"
+ value="${path::combine(project.base.dir,'package')}"/>
+
+ <!-- Root of the package file name -->
+ <property name="package.name"
+ value="${project.name}-${package.version}${package.suffix}"/>
+
+ <!-- Package directories -->
+ <property name="package.working.dir"
+ value="${path::combine(project.package.dir,package.name)}"/>
+ <property name="package.src.dir"
+ value="${path::combine(package.working.dir,'src')}"/>
+ <property name="package.tools.dir"
+ value="${path::combine(package.working.dir,'tools')}"/>
+
+ <!-- Default build configuration -->
+ <property name="build.config" value="debug"/>
+ <property name="build.defines" value=""/>
+
+ <!-- Default runtime configuration -->
+ <property name="runtime.config" value="${framework::get-target-framework()}"/>
+
+ <!-- Collect list of installed frameworks -->
+ <foreach item="String" delim=","
+ property="framework" in="${supported.frameworks}">
+ <if test="${framework::exists( framework )}">
+ <if test="${string::starts-with(framework, 'silverlight') or framework::sdk-exists( framework )}">
+ <property name="installed.frameworks" value="${installed.frameworks},${framework}"
+ if="${property::exists('installed.frameworks')}"/>
+ <property name="installed.frameworks" value="${framework}"
+ unless="${property::exists('installed.frameworks')}"/>
+ </if>
+ </if>
+ </foreach>
+
+<!-- ***************************************************************** -->
+<!-- ********* FileSets Used by Various Targets *********** -->
+<!-- ***************************************************************** -->
+
+ <!-- Files to be copied to source directories -->
+ <fileset id="source-files" >
+ <include name="**/*.sln" />
+ <include name="**/*.csproj" />
+ <include name="**/*.config" />
+ <include name="**/*.build" />
+ <include name="**/*.cs" />
+ <include name="**/*.xsd" />
+ <include name="**/*.xslt" />
+ <include name="**/*.resx" />
+ <include name="**/*.jpg" />
+ <include name="**/*.gif" />
+ <include name="**/*.ico" />
+ <include name="**/*.txt" />
+ <include name="**/resources/*" />
+
+ <exclude name="**/CVS/**" />
+ <exclude name="**/bin/**" />
+ <exclude name="**/obj/**" />
+ <exclude name="**/Debug/**" />
+ <exclude name="**/Release/**" />
+ </fileset>
+
+<!-- ***************************************************************** -->
+<!-- ********* Targets for setting the build configuration *********** -->
+<!-- ***************************************************************** -->
+
+ <target name="set-build-config">
+ <call target="set-${build.config}-build-config"/>
+ </target>
+
+ <target name="set-debug-build-config">
+ <property name="build.config" value="debug"/>
+ <property name="build.debug" value="true"/>
+ <property name="build.defines" value="DEBUG,TRACE,NUNITLITE,${runtime.defines}"
+ dynamic="true"/>
+ </target>
+
+ <target name="set-release-build-config">
+ <property name="build.config" value="release"/>
+ <property name="build.debug" value="false"/>
+ <property name="build.defines" value="TRACE,NUNITLITE,${runtime.defines}"
+ dynamic="true"/>
+ </target>
+
+<!-- ***************************************************************** -->
+<!-- *** Targets for setting the runtime configuration *** -->
+<!-- ***************************************************************** -->
+
+ <target name="set-runtime-config">
+ <call target="set-${runtime.config}-runtime-config"/>
+ </target>
+
+ <target name="set-net-1.1-runtime-config">
+ <fail unless="${framework::exists( 'net-1.1' )}"
+ message=".NET 1.1 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'net-1.1' )}"
+ message="The .NET 1.1 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="net"/>
+ <property name="runtime.version" value="1.1"/>
+ <property name="runtime.config" value="net-1.1"/>
+ <property name="runtime.defines" value="NET,NET_1_1,CLR_1_1"/>
+ <property name="build.framework" value="net-1.1"/>
+ <property name="build.method" value="nant"/>
+ <property name="msbuild.proj.suffix" value=""/>c
+ </target>
+
+ <target name="set-net-2.0-runtime-config">
+ <fail unless="${framework::exists( 'net-2.0' )}"
+ message=".NET 2.0 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'net-2.0' )}"
+ message="The .NET 2.0 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="net"/>
+ <property name="runtime.version" value="2.0"/>
+ <property name="runtime.config" value="net-2.0"/>
+ <property name="runtime.defines" value="NET,NET_2_0,CLR_2_0"/>
+ <property name="build.framework" value="net-3.5"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="2.0"/>
+ </target>
+
+ <target name="set-net-3.5-runtime-config">
+ <fail unless="${framework::exists( 'net-3.5' )}"
+ message=".NET 3.5 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'net-3.5' )}"
+ message="The .NET 3.5 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="net"/>
+ <property name="runtime.version" value="3.5"/>
+ <property name="runtime.config" value="net-3.5"/>
+ <property name="runtime.defines" value="NET,NET_3_5,CLR_2_0"/>
+ <property name="build.framework" value="net-4.0"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="3.5"/>
+ </target>
+
+ <target name="set-net-4.0-runtime-config">
+ <fail unless="${framework::exists( 'net-4.0' )}"
+ message=".NET 4.0 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'net-4.0' )}"
+ message="The .NET 4.0 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="net"/>
+ <property name="runtime.version" value="4.0"/>
+ <property name="runtime.config" value="net-4.0"/>
+ <property name="runtime.defines" value="NET,NET_4_0,CLR_4_0"/>
+ <property name="build.framework" value="net-4.0"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="4.0"/>
+ </target>
+
+ <target name="set-net-4.5-runtime-config">
+ <fail unless="${framework::exists( 'net-4.5' )}"
+ message=".NET 4.5 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'net-4.5' )}"
+ message="The .NET 4.5 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="net"/>
+ <property name="runtime.version" value="4.5"/>
+ <property name="runtime.config" value="net-4.5"/>
+ <property name="runtime.defines" value="NET,NET_4_5,CLR_4_0"/>
+ <property name="build.framework" value="net-4.5"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="4.5"/>
+ </target>
+
+ <target name="set-netcf-2.0-runtime-config">
+ <fail unless="${framework::exists( 'netcf-2.0' )}"
+ message=".NET CF 2.0 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'netcf-2.0' )}"
+ message="The .NET CF 2.0 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="netcf"/>
+ <property name="runtime.version" value="2.0"/>
+ <property name="runtime.config" value="netcf-2.0"/>
+ <property name="runtime.defines" value="NETCF,NETCF_2_0,CLR_2_0"/>
+ <property name="build.framework" value="netcf-2.0"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="netcf-2.0"/>
+ </target>
+
+ <target name="set-netcf-3.5-runtime-config">
+ <!--<fail unless="${framework::exists( 'netcf-3.5' )}"
+ message=".NET CF 3.5 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'net-3.5' )}"
+ message="The .NET 3.5 SDK is not configured or not installed"/>-->
+
+ <property name="runtime.platform" value="netcf"/>
+ <property name="runtime.version" value="3.5"/>
+ <property name="runtime.config" value="netcf-3.5"/>
+ <property name="runtime.defines" value="NETCF,NETCF_3_5,CLR_2_0"/>
+ <property name="build.framework" value="net-3.5"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="netcf-3.5"/>
+ </target>
+
+ <target name="set-mono-2.0-runtime-config">
+ <fail unless="${framework::exists( 'mono-2.0' )}"
+ message="Mono 2.0 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'mono-2.0' )}"
+ message="The Mono 2.0 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="mono"/>
+ <property name="runtime.version" value="2.0"/>
+ <property name="runtime.config" value="mono-2.0"/>
+ <property name="runtime.defines" value="MONO,MONO_2_0,CLR_2_0"/>
+ <property name="build.framework" value="mono-3.5"/>
+ <property name="build.method" value="nant"/>
+ <property name="msbuild.proj.suffix" value="2.0"/>
+ </target>
+
+ <target name="set-mono-3.5-runtime-config">
+ <fail unless="${framework::exists( 'mono-3.5' )}"
+ message="Mono 3.5 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'mono-3.5' )}"
+ message="The Mono 3.5 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="mono"/>
+ <property name="runtime.version" value="3.5"/>
+ <property name="runtime.config" value="mono-3.5"/>
+ <property name="runtime.defines" value="MONO,MONO_3_5,CLR_2_0"/>
+ <property name="build.framework" value="mono-3.5"/>
+ <property name="build.method" value="nant"/>
+ <property name="msbuild.proj.suffix" value="3.5"/>
+ </target>
+
+ <target name="set-mono-4.0-runtime-config">
+ <fail unless="${framework::exists( 'mono-4.0' )}"
+ message="Mono 4.0 is not installed"/>
+ <fail unless="${framework::sdk-exists( 'mono-4.0' )}"
+ message="The Mono 4.0 SDK is not configured or not installed"/>
+
+ <property name="runtime.platform" value="mono"/>
+ <property name="runtime.version" value="4.0"/>
+ <property name="runtime.config" value="mono-4.0"/>
+ <property name="runtime.defines" value="MONO,MONO_4_0,CLR_4_0"/>
+ <property name="build.framework" value="mono-4.0"/>
+ <property name="build.method" value="nant"/>
+ <property name="msbuild.proj.suffix" value="4.0"/>
+ </target>
+
+ <target name="set-silverlight-3.0-runtime-config">
+ <fail unless="${framework::exists( 'silverlight-3.0' )}"
+ message="Silverlight 3.0 is not installed"/>
+
+ <property name="runtime.platform" value="silverlight"/>
+ <property name="runtime.version" value="3.0"/>
+ <property name="runtime.config" value="silverlight-3.0"/>
+ <property name="runtime.defines" value="SILVERLIGHT,SL_3_0,CLR_2_0"/>
+ <property name="build.framework" value="silverlight-3.0"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="sl-3.0"/>
+ </target>
+
+ <target name="set-silverlight-4.0-runtime-config">
+ <fail unless="${framework::exists( 'silverlight-4.0' )}"
+ message="Silverlight 4.0 is not installed"/>
+
+ <property name="runtime.platform" value="silverlight"/>
+ <property name="runtime.version" value="4.0"/>
+ <property name="runtime.config" value="silverlight-4.0"/>
+ <property name="runtime.defines" value="SILVERLIGHT,SL_4_0,CLR_4_0"/>
+ <property name="build.framework" value="silverlight-4.0"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="sl-4.0"/>
+ </target>
+
+ <target name="set-silverlight-5.0-runtime-config">
+ <fail unless="${framework::exists( 'silverlight-5.0' )}"
+ message="Silverlight 5.0 is not installed"/>
+
+ <property name="runtime.platform" value="silverlight"/>
+ <property name="runtime.version" value="5.0"/>
+ <property name="runtime.config" value="silverlight-5.0"/>
+ <property name="runtime.defines" value="SILVERLIGHT,SL_5_0,CLR_4_0"/>
+ <property name="build.framework" value="silverlight-5.0"/>
+ <property name="build.method" value="msbuild"/>
+ <property name="msbuild.proj.suffix" value="sl-5.0"/>
+ </target>
+
+<!-- ***************************************************************** -->
+<!-- **************** Internally used targets ************************ -->
+<!-- ***************************************************************** -->
+
+ <!-- Set up the build directory -->
+ <target name="set-build-dir"
+ depends="set-build-config,set-runtime-config">
+ <property name="runtime.platform.dir"
+ value="${path::combine(project.build.dir,runtime.platform)}"/>
+ <property name="runtime.version.dir"
+ value="${path::combine(runtime.platform.dir,runtime.version)}"/>
+ <property name="current.build.dir"
+ value="${path::combine(runtime.version.dir,build.config)}"/>
+
+ <property name="msbuild.dir" value="${framework::get-framework-directory(build.framework)}"/>
+ <property name="msbuild.exe" value="MSBuild.exe" unless="${runtime.platform == 'mono'}"/>
+ <property name="msbuild.exe" value="xbuild.exe" if="${runtime.platform == 'mono'}"/>
+ <property name="msbuild.path" value="${msbuild.dir}/${msbuild.exe}"/>
+ </target>
+
+ <target name="make-build-dir" depends="set-build-dir">
+ <mkdir dir="${current.build.dir}"
+ unless="${directory::exists(current.build.dir)}"/>
+ </target>
+
+ <target name="create-zip" description="Create zip from existing image">
+ <!-- Create the zip file -->
+ <zip zipfile="${project.package.dir}/${zip.file.name}" ziplevel="9">
+ <fileset basedir="${package.working.dir}">
+ <include name="**"/>
+ </fileset>
+ </zip>
+ </target>
+
+ <target name="copy-src">
+ <delete dir="${package.src.dir}" />
+ <mkdir dir="${package.src.dir}"/>
+
+ <copy todir="${package.src.dir}">
+ <fileset basedir="${project.src.dir}">
+ <include name="framework/*.csproj"/>
+ <include name="framework/*.snk"/>
+ <include name="framework/*.build"/>
+ <include name="framework/**/*.cs"/>
+ <include name="tests/*.csproj"/>
+ <include name="tests/**/*.cs"/>
+ <include name="tests/*.build"/>
+ <include name="testdata/*.csproj"/>
+ <include name="testdata/**/*.cs"/>
+ <include name="testdata/*.build"/>
+ <include name="mock-assembly/*.csproj"/>
+ <include name="mock-assembly/**/*.cs"/>
+ <include name="mock-assembly/*.build"/>
+ <include name="TestResultConsole/*.csproj"/>
+ <include name="TestResultConsole/**/*.cs"/>
+ <include name="TestResultConsole/*.build"/>
+ </fileset>
+ </copy>
+
+ </target>
+
+ <target name="copy-tools">
+
+ <delete dir="${package.tools.dir}" />
+ <mkdir dir="${package.tools.dir}"/>
+
+ <copy todir="${package.tools.dir}">
+ <fileset basedir="${project.tools.dir}">
+ <include name="**/*"/>
+ </fileset>
+ </copy>
+
+ </target>
+
+ <target name="run-subprojects">
+
+ <nant target="${current.target}" buildfile="src/framework/nunitlite.framework.build"/>
+ <nant target="${current.target}" buildfile="src/mock-assembly/mock-assembly.build"/>
+ <nant target="${current.target}" buildfile="src/testdata/nunitlite.testdata.build"/>
+ <nant target="${current.target}" buildfile="src/tests/nunitlite.tests.build"/>
+ <nant target="${current.target}" buildfile="src/runner/ci-test-runner.build"
+ if="${runtime.platform=='silverlight'}"/>
+
+ </target>
+
+ <!-- ***************************************************************** -->
+<!-- *** Dump configuration settings for debugging *** -->
+<!-- ***************************************************************** -->
+
+ <target name="dump-settings" depends="set-build-dir">
+ <echo>Project Directories</echo>
+ <echo> Base: ${project.base.dir}</echo>
+ <echo> Source: ${project.src.dir}</echo>
+ <echo> Build: ${project.build.dir}</echo>
+ <echo> Package: ${project.package.dir}</echo>
+ <echo></echo>
+ <echo>Supported Framework Versions</echo>
+ <echo> ${supported.frameworks}</echo>
+ <echo></echo>
+ <echo>Installed Framework Versions</echo>
+ <echo> ${installed.frameworks}</echo>
+ <echo></echo>
+ <echo>Current Configuration</echo>
+ <echo> Config: ${build.config}</echo>
+ <echo> Runtime: ${runtime.config}</echo>
+ <echo> VS Proj: nunitlite-${msbuild.proj.suffix}.csproj</echo>
+ <echo> Defines: ${build.defines}</echo>
+ <echo> Builder: ${msbuild.exe}</echo>
+ <echo> Version: ${package.version}</echo>
+ <echo> Package: ${package.name}</echo>
+ <echo></echo>
+ <echo>Current Working Directories</echo>
+ <echo> Build: ${current.build.dir}</echo>
+ <echo> Package: ${package.working.dir}</echo>
+ <echo> Source: ${package.src.dir}</echo>
+ <echo></echo>
+ <echo>Current Framework and SDK Directories</echo>
+ <echo> ${framework::get-framework-directory(runtime.config)}</echo>
+ <echo> ${framework::get-sdk-directory(runtime.config)}</echo>
+ </target>
+
+</project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/TestResultConsole/AssemblyInfo.cs b/NUnitLite-0.9.0/src/TestResultConsole/AssemblyInfo.cs
new file mode 100755
index 0000000..967586f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/TestResultConsole/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+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("TestResultConsole.cs")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TestResultConsole.cs")]
+[assembly: AssemblyCopyright("Copyright © 2007")]
+[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("0245d9d3-40c9-47f0-a109-31131cc0ea53")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/NUnitLite-0.9.0/src/TestResultConsole/Program.cs b/NUnitLite-0.9.0/src/TestResultConsole/Program.cs
new file mode 100755
index 0000000..3aa2c67
--- /dev/null
+++ b/NUnitLite-0.9.0/src/TestResultConsole/Program.cs
@@ -0,0 +1,49 @@
+using System;
+using System.IO;
+using System.Net.Sockets;
+using System.Text;
+
+namespace TestResultConsole.cs
+{
+ class Program
+ {
+ static int port = 9000;
+
+ static void Main(string[] args)
+ {
+ TcpListener listener = new TcpListener(port);
+
+ listener.Start();
+ Console.WriteLine("Waiting for test to begin...");
+ TcpClient client = listener.AcceptTcpClient();
+
+ Console.WriteLine("Connected to test runner...");
+ Console.WriteLine();
+
+ NetworkStream ns = client.GetStream();
+ TextReader rdr = new StreamReader(ns);
+
+ try
+ {
+ while (client.Connected)
+ {
+ string data = rdr.ReadLine();
+ Console.WriteLine(data);
+ }
+ }
+ catch (IOException e)
+ {
+ if (client.Connected)
+ Console.WriteLine(e.ToString());
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+
+ client.Close();
+ listener.Stop();
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/TestResultConsole/TestResultConsole.csproj b/NUnitLite-0.9.0/src/TestResultConsole/TestResultConsole.csproj
new file mode 100755
index 0000000..5ea4f59
--- /dev/null
+++ b/NUnitLite-0.9.0/src/TestResultConsole/TestResultConsole.csproj
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{8CB31CE4-639A-4A34-B04D-A8CE3FEBECB3}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>TestResultConsole</RootNamespace>
+ <AssemblyName>TestResultConsole</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Program.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Api/ExpectedExceptionData.cs b/NUnitLite-0.9.0/src/framework/Api/ExpectedExceptionData.cs
new file mode 100755
index 0000000..cf92ff4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ExpectedExceptionData.cs
@@ -0,0 +1,143 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// ExpectedExceptionData is a struct used within the framework
+ /// to encapsulate information about an expected exception.
+ /// </summary>
+ public struct ExpectedExceptionData
+ {
+ #region Fields
+
+ private Type expectedExceptionType;
+ private string expectedExceptionName;
+ private string expectedMessage;
+ private MessageMatch matchType;
+ private string userMessage;
+ private string handlerName;
+ private MethodInfo exceptionHandler;
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// The Type of any exception that is expected.
+ /// </summary>
+ public Type ExpectedExceptionType
+ {
+ get { return expectedExceptionType; }
+ set
+ {
+ expectedExceptionType = value;
+ expectedExceptionName = value.FullName;
+ }
+ }
+
+ /// <summary>
+ /// The FullName of any exception that is expected
+ /// </summary>
+ public string ExpectedExceptionName
+ {
+ get { return expectedExceptionName; }
+ set
+ {
+ expectedExceptionName = value;
+ expectedExceptionType = null;
+ }
+ }
+
+ /// <summary>
+ /// The Message of any exception that is expected
+ /// </summary>
+ public string ExpectedMessage
+ {
+ get { return expectedMessage; }
+ set { expectedMessage = value; }
+ }
+
+ /// <summary>
+ /// The type of match to be performed on the expected message
+ /// </summary>
+ public MessageMatch MatchType
+ {
+ get { return matchType; }
+ set { matchType = value; }
+ }
+
+ /// <summary>
+ /// A user message to be issued in case of error
+ /// </summary>
+ public string UserMessage
+ {
+ get { return userMessage; }
+ set { userMessage = value; }
+ }
+
+ /// <summary>
+ /// The name of an alternate exception handler to be
+ /// used to validate the exception.
+ /// </summary>
+ public string HandlerName
+ {
+ get { return handlerName; }
+ set
+ {
+ handlerName = value;
+ exceptionHandler = null;
+ }
+ }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// Returns a MethodInfo for the handler to be used to
+ /// validate any exception thrown.
+ /// </summary>
+ /// <param name="fixtureType">The Type of the fixture.</param>
+ /// <returns>A MethodInfo.</returns>
+ public MethodInfo GetExceptionHandler(Type fixtureType)
+ {
+ if (exceptionHandler == null && handlerName != null)
+ {
+ exceptionHandler = fixtureType.GetMethod(
+ handlerName,
+ BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
+ null,
+ new Type[] { typeof(System.Exception) },
+ null);
+ }
+
+ return exceptionHandler;
+ }
+
+ #endregion
+ };
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/FailureSite.cs b/NUnitLite-0.9.0/src/framework/Api/FailureSite.cs
new file mode 100755
index 0000000..778b486
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/FailureSite.cs
@@ -0,0 +1,57 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The FailureSite enum indicates the stage of a test
+ /// in which an error or failure occured.
+ /// </summary>
+ public enum FailureSite
+ {
+ /// <summary>
+ /// Failure in the test itself
+ /// </summary>
+ Test,
+
+ /// <summary>
+ /// Failure in the SetUp method
+ /// </summary>
+ SetUp,
+
+ /// <summary>
+ /// Failure in the TearDown method
+ /// </summary>
+ TearDown,
+
+ /// <summary>
+ /// Failure of a parent test
+ /// </summary>
+ Parent,
+
+ /// <summary>
+ /// Failure of a child test
+ /// </summary>
+ Child
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/IParameterDataSource.cs b/NUnitLite-0.9.0/src/framework/Api/IParameterDataSource.cs
new file mode 100755
index 0000000..59bc686
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/IParameterDataSource.cs
@@ -0,0 +1,44 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The IParameterDataSource interface is implemented by types
+ /// that can provide data for a test method parameter.
+ /// </summary>
+ public interface IParameterDataSource
+ {
+ /// <summary>
+ /// Gets an enumeration of data items for use as arguments
+ /// for a test method parameter.
+ /// </summary>
+ /// <param name="parameter">The parameter for which data is needed</param>
+ /// <returns>An enumeration containing individual data items</returns>
+ IEnumerable GetData(ParameterInfo parameter);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/IPropertyBag.cs b/NUnitLite-0.9.0/src/framework/Api/IPropertyBag.cs
new file mode 100755
index 0000000..50095ff
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/IPropertyBag.cs
@@ -0,0 +1,162 @@
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// A PropertyBag represents a collection of name/value pairs
+ /// that allows duplicate entries with the same key. Methods
+ /// are provided for adding a new pair as well as for setting
+ /// a key to a single value. All keys are strings but values
+ /// may be of any type. Null values are not permitted, since
+ /// a null entry represents the absence of the key.
+ ///
+ /// The entries in a PropertyBag are of two kinds: those that
+ /// take a single value and those that take multiple values.
+ /// However, the PropertyBag has no knowledge of which entries
+ /// fall into each category and the distinction is entirely
+ /// up to the code using the PropertyBag.
+ ///
+ /// When working with multi-valued properties, client code
+ /// should use the Add method to add name/value pairs and
+ /// indexing to retrieve a list of all values for a given
+ /// key. For example:
+ ///
+ /// bag.Add("Tag", "one");
+ /// bag.Add("Tag", "two");
+ /// Assert.That(bag["Tag"],
+ /// Is.EqualTo(new string[] { "one", "two" }));
+ ///
+ /// When working with single-valued propeties, client code
+ /// should use the Set method to set the value and Get to
+ /// retrieve the value. The GetSetting methods may also be
+ /// used to retrieve the value in a type-safe manner while
+ /// also providing default. For example:
+ ///
+ /// bag.Set("Priority", "low");
+ /// bag.Set("Priority", "high"); // replaces value
+ /// Assert.That(bag.Get("Priority"),
+ /// Is.EqualTo("high"));
+ /// Assert.That(bag.GetSetting("Priority", "low"),
+ /// Is.EqualTo("high"));
+ /// </summary>
+ public interface IPropertyBag : IXmlNodeBuilder, System.Collections.IEnumerable
+ {
+ /// <summary>
+ /// Get the number of key/value pairs in the property bag
+ /// </summary>
+ int Count { get; }
+
+ /// <summary>
+ /// Adds a key/value pair to the property bag
+ /// </summary>
+ /// <param name="key">The key</param>
+ /// <param name="value">The value</param>
+ void Add(string key, object value);
+
+
+ /// <summary>
+ /// Sets the value for a key, removing any other
+ /// values that are already in the property set.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="value"></param>
+ void Set(string key, object value);
+
+ /// <summary>
+ /// Gets a single value for a key, using the first
+ /// one if multiple values are present and returning
+ /// null if the value is not found.
+ /// </summary>
+ object Get(string key);
+
+ /// <summary>
+ /// Gets a single string value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ string GetSetting(string key, string defaultValue);
+
+ /// <summary>
+ /// Gets a single int value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ int GetSetting(string key, int defaultValue);
+
+ /// <summary>
+ /// Gets a single boolean value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ bool GetSetting(string key, bool defaultValue);
+
+ /// <summary>
+ /// Gets a single enum value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ System.Enum GetSetting(string key, System.Enum defaultValue);
+
+ /// <summary>
+ /// Removes all entries for a key from the property set.
+ /// If the key is not found, no error occurs.
+ /// </summary>
+ /// <param name="key">The key for which the entries are to be removed</param>
+ void Remove(string key);
+
+ /// <summary>
+ /// Removes a single entry if present. If not found,
+ /// no error occurs.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="value"></param>
+ void Remove(string key, object value);
+
+ /// <summary>
+ /// Removes a specific PropertyEntry. If the entry is not
+ /// found, no errr occurs.
+ /// </summary>
+ /// <param name="entry">The property entry to remove</param>
+ void Remove(PropertyEntry entry);
+
+ /// <summary>
+ /// Gets a flag indicating whether the specified key has
+ /// any entries in the property set.
+ /// </summary>
+ /// <param name="key">The key to be checked</param>
+ /// <returns>True if their are values present, otherwise false</returns>
+ bool ContainsKey(string key);
+
+ /// <summary>
+ /// Gets a flag indicating whether the specified key and
+ /// value are present in the property set.
+ /// </summary>
+ /// <param name="key">The key to be checked</param>
+ /// <param name="value">The value to be checked</param>
+ /// <returns>True if the key and value are present, otherwise false</returns>
+ bool Contains(string key, object value);
+
+ /// <summary>
+ /// Gets a flag indicating whether the specified key and
+ /// value are present in the property set.
+ /// </summary>
+ /// <param name="entry">The property entry to be checked</param>
+ /// <returns>True if the entry is present, otherwise false</returns>
+ bool Contains(PropertyEntry entry);
+
+ /// <summary>
+ /// Gets or sets the list of values for a particular key
+ /// </summary>
+ /// <param name="key">The key for which the values are to be retrieved or set</param>
+ System.Collections.IList this[string key] { get; set; }
+
+ /// <summary>
+ /// Gets a collection containing all the keys in the property set
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ System.Collections.Generic.ICollection<string> Keys { get; }
+#else
+ System.Collections.ICollection Keys { get; }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITest.cs b/NUnitLite-0.9.0/src/framework/Api/ITest.cs
new file mode 100755
index 0000000..2b80889
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITest.cs
@@ -0,0 +1,102 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// Common interface supported by all representations
+ /// of a test. Only includes informational fields.
+ /// The Run method is specifically excluded to allow
+ /// for data-only representations of a test.
+ /// </summary>
+ public interface ITest : IXmlNodeBuilder
+ {
+ /// <summary>
+ /// Gets or sets the id of the test
+ /// </summary>
+ int Id { get; set; }
+
+ /// <summary>
+ /// Gets the name of the test
+ /// </summary>
+ string Name { get; }
+
+ /// <summary>
+ /// Gets the fully qualified name of the test
+ /// </summary>
+ string FullName { get; }
+
+ /// <summary>
+ /// Gets the Type of the test fixture, if applicable, or
+ /// null if no fixture type is associated with this test.
+ /// </summary>
+ Type FixtureType { get; }
+
+ /// <summary>
+ /// Indicates whether the test can be run using
+ /// the RunState enum.
+ /// </summary>
+ RunState RunState { get; set; }
+
+ /// <summary>
+ /// Count of the test cases ( 1 if this is a test case )
+ /// </summary>
+ int TestCaseCount { get; }
+
+ /// <summary>
+ /// Gets the properties of the test
+ /// </summary>
+ IPropertyBag Properties { get; }
+
+ /// <summary>
+ /// Gets the parent test, if any.
+ /// </summary>
+ /// <value>The parent test or null if none exists.</value>
+ ITest Parent { get; }
+
+ /// <summary>
+ /// Gets a bool indicating whether the current test
+ /// has any descendant tests.
+ /// </summary>
+ bool HasChildren { get; }
+
+ /// <summary>
+ /// Gets the Int value representing the seed for the RandomGenerator
+ /// </summary>
+ /// <value></value>
+ int Seed { get; }
+
+ /// <summary>
+ /// Gets this test's child tests
+ /// </summary>
+ /// <value>A list of child tests</value>
+#if CLR_2_0 || CLR_4_0
+ System.Collections.Generic.IList<ITest> Tests { get; }
+#else
+ System.Collections.IList Tests { get; }
+#endif
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestAssemblyBuilder.cs b/NUnitLite-0.9.0/src/framework/Api/ITestAssemblyBuilder.cs
new file mode 100755
index 0000000..c569a9c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestAssemblyBuilder.cs
@@ -0,0 +1,56 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ITestAssemblyBuilder interface is implemented by a class
+ /// that is able to build a suite of tests given an assembly or
+ /// an assembly filename.
+ /// </summary>
+ public interface ITestAssemblyBuilder
+ {
+ // TODO: Remove use of TestSuite after tests are not self-running
+
+ /// <summary>
+ /// Build a suite of tests from a provided assembly
+ /// </summary>
+ /// <param name="assembly">The assembly from which tests are to be built</param>
+ /// <param name="options">A dictionary of options to use in building the suite</param>
+ /// <returns>A TestSuite containing the tests found in the assembly</returns>
+ TestSuite Build(Assembly assembly, IDictionary options);
+
+ /// <summary>
+ /// Build a suite of tests given the filename of an assembly
+ /// </summary>
+ /// <param name="assemblyName">The filename of the assembly from which tests are to be built</param>
+ /// <param name="options">A dictionary of options to use in building the suite</param>
+ /// <returns>A TestSuite containing the tests found in the assembly</returns>
+ TestSuite Build(string assemblyName, IDictionary options);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestAssemblyRunner.cs b/NUnitLite-0.9.0/src/framework/Api/ITestAssemblyRunner.cs
new file mode 100755
index 0000000..184c78d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestAssemblyRunner.cs
@@ -0,0 +1,83 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ITestAssemblyRunner interface is implemented by classes
+ /// that are able to execute a suite of tests loaded
+ /// from an assembly.
+ /// </summary>
+ public interface ITestAssemblyRunner
+ {
+ #region Properties
+
+ /// <summary>
+ /// Gets the tree of loaded tests, or null if
+ /// no tests have been loaded.
+ /// </summary>
+ ITest LoadedTest { get; }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// Loads the tests found in an Assembly, returning an
+ /// indication of whether or not the load succeeded.
+ /// </summary>
+ /// <param name="assemblyName">File name of the assembly to load</param>
+ /// <param name="settings">Dictionary of settings to use in loading the test</param>
+ /// <returns>True if the load was successful</returns>
+ bool Load(string assemblyName, System.Collections.IDictionary settings);
+
+ /// <summary>
+ /// Loads the tests found in an Assembly, returning an
+ /// indication of whether or not the load succeeded.
+ /// </summary>
+ /// <param name="assembly">The assembly to load</param>
+ /// <param name="settings">Dictionary of settings to use in loading the test</param>
+ /// <returns>True if the load was successful</returns>
+ bool Load(Assembly assembly, System.Collections.IDictionary settings);
+
+ ///// <summary>
+ ///// Count Test Cases using a filter
+ ///// </summary>
+ ///// <param name="filter">The filter to apply</param>
+ ///// <returns>The number of test cases found</returns>
+ //int CountTestCases(TestFilter filter);
+
+ /// <summary>
+ /// Run selected tests and return a test result. The test is run synchronously,
+ /// and the listener interface is notified as it progresses.
+ /// </summary>
+ /// <param name="listener">Interface to receive ITestListener notifications.</param>
+ /// <param name="filter">A test filter used to select tests to be run</param>
+ ITestResult Run(ITestListener listener, ITestFilter filter);
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestCaseData.cs b/NUnitLite-0.9.0/src/framework/Api/ITestCaseData.cs
new file mode 100755
index 0000000..565a710
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestCaseData.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OFn
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ITestCaseData interface is implemented by a class
+ /// that is able to return complete testcases for use by
+ /// a parameterized test method.
+ /// </summary>
+ public interface ITestCaseData
+ {
+ /// <summary>
+ /// Gets the name to be used for the test
+ /// </summary>
+ string TestName { get; }
+
+ /// <summary>
+ /// Gets the RunState for this test case.
+ /// </summary>
+ RunState RunState { get; }
+
+ /// <summary>
+ /// Gets the argument list to be provided to the test
+ /// </summary>
+ object[] Arguments { get; }
+
+ /// <summary>
+ /// Gets the expected result of the test case
+ /// </summary>
+ object ExpectedResult { get; }
+
+ /// <summary>
+ /// Returns true if an expected result has been set
+ /// </summary>
+ bool HasExpectedResult { get; }
+
+ /// <summary>
+ /// Gets data about any expected exception.
+ /// </summary>
+ ExpectedExceptionData ExceptionData { get; }
+
+ /// <summary>
+ /// Gets the property dictionary for the test case
+ /// </summary>
+ IPropertyBag Properties { get; }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestCaseSource.cs b/NUnitLite-0.9.0/src/framework/Api/ITestCaseSource.cs
new file mode 100755
index 0000000..74cb7bb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestCaseSource.cs
@@ -0,0 +1,50 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OFn
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// ITestCaseSource interface is implemented by Types that know how to
+ /// return a set of ITestCaseData items for use by a test method.
+ /// </summary>
+ /// <remarks>
+ /// This method is defined differently depending on the version of .NET.
+ /// </remarks>
+ public interface ITestCaseSource
+ {
+ /// <summary>
+ /// Returns a set of ITestCaseDataItems for use as arguments
+ /// to a parameterized test method.
+ /// </summary>
+ /// <param name="method">The method for which data is needed.</param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ System.Collections.Generic.IEnumerable<ITestCaseData> GetTestCasesFor(MethodInfo method);
+#else
+ System.Collections.IEnumerable GetTestCasesFor(MethodInfo method);
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestCaseSourceProvider.cs b/NUnitLite-0.9.0/src/framework/Api/ITestCaseSourceProvider.cs
new file mode 100755
index 0000000..9442e9d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestCaseSourceProvider.cs
@@ -0,0 +1,50 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OFn
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ITestCaseSourceProvider interface is implemented by Types that
+ /// are able to provide a test case source for use by a test method.
+ /// </summary>
+ public interface IDynamicTestCaseSource
+ {
+ /// <summary>
+ /// Returns a test case source. May be called on a provider
+ /// implementing the source internally or able to create
+ /// a source instance on it's own.
+ /// </summary>
+ /// <returns></returns>
+ ITestCaseSource GetTestCaseSource();
+
+ /// <summary>
+ /// Returns a test case source based on an instance of a
+ /// source object.
+ /// </summary>
+ /// <param name="instance"></param>
+ /// <returns></returns>
+ ITestCaseSource GetTestCaseSource(object instance);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestFilter.cs b/NUnitLite-0.9.0/src/framework/Api/ITestFilter.cs
new file mode 100755
index 0000000..37ccc4d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestFilter.cs
@@ -0,0 +1,49 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// Interface to be implemented by filters applied to tests.
+ /// The filter applies when running the test, after it has been
+ /// loaded, since this is the only time an ITest exists.
+ /// </summary>
+ public interface ITestFilter
+ {
+ /// <summary>
+ /// Indicates whether this is the EmptyFilter
+ /// </summary>
+ bool IsEmpty { get; }
+
+ /// <summary>
+ /// Determine if a particular test passes the filter criteria. Pass
+ /// may examine the parents and/or descendants of a test, depending
+ /// on the semantics of the particular filter
+ /// </summary>
+ /// <param name="test">The test to which the filter is applied</param>
+ /// <returns>True if the test passes the fFilter, otherwise false</returns>
+ bool Pass( ITest test );
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestListener.cs b/NUnitLite-0.9.0/src/framework/Api/ITestListener.cs
new file mode 100755
index 0000000..5fb2593
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestListener.cs
@@ -0,0 +1,52 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ITestListener interface is used internally to receive
+ /// notifications of significant events while a test is being
+ /// run. The events are propogated to clients by means of an
+ /// AsyncCallback. NUnit extensions may also monitor these events.
+ /// </summary>
+ public interface ITestListener
+ {
+ /// <summary>
+ /// Called when a test has just started
+ /// </summary>
+ /// <param name="test">The test that is starting</param>
+ void TestStarted(ITest test);
+
+ /// <summary>
+ /// Called when a test has finished
+ /// </summary>
+ /// <param name="result">The result of the test</param>
+ void TestFinished(ITestResult result);
+
+ /// <summary>
+ /// Called when the test creates text output.
+ /// </summary>
+ /// <param name="testOutput">A console message</param>
+ void TestOutput(TestOutput testOutput);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ITestResult.cs b/NUnitLite-0.9.0/src/framework/Api/ITestResult.cs
new file mode 100755
index 0000000..c41974a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ITestResult.cs
@@ -0,0 +1,170 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ITestResult interface represents the result of a test.
+ /// </summary>
+ public interface ITestResult : IXmlNodeBuilder
+ {
+ /// <summary>
+ /// Gets the ResultState of the test result, which
+ /// indicates the success or failure of the test.
+ /// </summary>
+ ResultState ResultState
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the name of the test result
+ /// </summary>
+ string Name
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the full name of the test result
+ /// </summary>
+ string FullName
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the elapsed time for running the test
+ /// </summary>
+ TimeSpan Duration
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the message associated with a test
+ /// failure or with not running the test
+ /// </summary>
+ string Message
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets any stacktrace associated with an
+ /// error or failure. Not available in
+ /// the Compact Framework 1.0.
+ /// </summary>
+ string StackTrace
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the failure site, which indicates the point
+ /// in the processing of the test where it failed.
+ /// </summary>
+ FailureSite FailureSite
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the number of asserts executed
+ /// when running the test and all its children.
+ /// </summary>
+ int AssertCount
+ {
+ get;
+ }
+
+
+ /// <summary>
+ /// Gets the number of test cases that failed
+ /// when running the test and all its children.
+ /// </summary>
+ int FailCount
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that passed
+ /// when running the test and all its children.
+ /// </summary>
+ int PassCount
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that were skipped
+ /// when running the test and all its children.
+ /// </summary>
+ int SkipCount
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that were inconclusive
+ /// when running the test and all its children.
+ /// </summary>
+ int InconclusiveCount
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Indicates whether this result has any child results.
+ /// Accessing HasChildren should not force creation of the
+ /// Children collection in classes implementing this interface.
+ /// </summary>
+ bool HasChildren
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the the collection of child results.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ System.Collections.Generic.IList<ITestResult> Children
+#else
+ System.Collections.IList Children
+#endif
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets the Test to which this result applies.
+ /// </summary>
+ ITest Test
+ {
+ get;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/IXmlNodeBuilder.cs b/NUnitLite-0.9.0/src/framework/Api/IXmlNodeBuilder.cs
new file mode 100755
index 0000000..f2ef058
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/IXmlNodeBuilder.cs
@@ -0,0 +1,29 @@
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// An object implementing IXmlNodeBuilder is able to build
+ /// an XmlResult representation of itself and any children.
+ /// Note that the interface refers to the implementation
+ /// of XmlNode in the NUnit.Framework.Api namespace.
+ /// </summary>
+ public interface IXmlNodeBuilder
+ {
+ /// <summary>
+ /// Returns an XmlNode representating the current object.
+ /// </summary>
+ /// <param name="recursive">If true, children are included where applicable</param>
+ /// <returns>An XmlNode representing the result</returns>
+ XmlNode ToXml(bool recursive);
+
+ /// <summary>
+ /// Returns an XmlNode representing the current object after
+ /// adding it as a child of the supplied parent node.
+ /// </summary>
+ /// <param name="parentNode">The parent node.</param>
+ /// <param name="recursive">If true, children are included, where applicable</param>
+ /// <returns></returns>
+ XmlNode AddToXml(XmlNode parentNode, bool recursive);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/PropertyEntry.cs b/NUnitLite-0.9.0/src/framework/Api/PropertyEntry.cs
new file mode 100755
index 0000000..5b9d6fd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/PropertyEntry.cs
@@ -0,0 +1,70 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// Immutable class that stores a property entry as a Name/Value pair.
+ /// </summary>
+ public class PropertyEntry
+ {
+ private readonly string name;
+ private readonly object value;
+
+ /// <summary>
+ /// Initializes a new immutable instance of the <see cref="PropertyEntry"/> class.
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="value"></param>
+ public PropertyEntry(string name, object value)
+ {
+ this.name = name;
+ this.value = value;
+ }
+
+ /// <summary>Name of the PropertyEntry.</summary>
+ public string Name
+ {
+ get { return name; }
+ }
+
+ /// <summary>Value of the PropertyEntry.</summary>
+ public object Value
+ {
+ get { return value; }
+ }
+
+ /// <summary>
+ /// Returns a <see cref="System.String"/> that represents this instance.
+ /// </summary>
+ /// <returns>
+ /// A <see cref="System.String"/> that represents this instance.
+ /// </returns>
+ public override string ToString()
+ {
+ return string.Format("{0}={1}", name, value);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/ResultState.cs b/NUnitLite-0.9.0/src/framework/Api/ResultState.cs
new file mode 100755
index 0000000..9b0a7d5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/ResultState.cs
@@ -0,0 +1,139 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The ResultState class represents the outcome of running a test.
+ /// It contains two pieces of information. The Status of the test
+ /// is an enum indicating whether the test passed, failed, was
+ /// skipped or was inconclusive. The Label provides a more
+ /// detailed breakdown for use by client runners.
+ /// </summary>
+ public class ResultState
+ {
+ private readonly TestStatus status;
+ private readonly string label;
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ResultState"/> class.
+ /// </summary>
+ /// <param name="status">The TestStatus.</param>
+ public ResultState(TestStatus status) : this (status, string.Empty)
+ {
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ResultState"/> class.
+ /// </summary>
+ /// <param name="status">The TestStatus.</param>
+ /// <param name="label">The label.</param>
+ public ResultState(TestStatus status, string label)
+ {
+ this.status = status;
+ this.label = label == null ? string.Empty : label;
+ }
+
+ #endregion
+
+ #region Predefined ResultStates
+
+ /// <summary>
+ /// The result is inconclusive
+ /// </summary>
+ public readonly static ResultState Inconclusive = new ResultState(TestStatus.Inconclusive);
+
+ /// <summary>
+ /// The test was not runnable.
+ /// </summary>
+ public readonly static ResultState NotRunnable = new ResultState(TestStatus.Skipped, "Invalid");
+
+ /// <summary>
+ /// The test has been skipped.
+ /// </summary>
+ public readonly static ResultState Skipped = new ResultState(TestStatus.Skipped);
+
+ /// <summary>
+ /// The test has been ignored.
+ /// </summary>
+ public readonly static ResultState Ignored = new ResultState(TestStatus.Skipped, "Ignored");
+
+ /// <summary>
+ /// The test succeeded
+ /// </summary>
+ public readonly static ResultState Success = new ResultState(TestStatus.Passed);
+
+ /// <summary>
+ /// The test failed
+ /// </summary>
+ public readonly static ResultState Failure = new ResultState(TestStatus.Failed);
+
+ /// <summary>
+ /// The test encountered an unexpected exception
+ /// </summary>
+ public readonly static ResultState Error = new ResultState(TestStatus.Failed, "Error");
+
+ /// <summary>
+ /// The test was cancelled by the user
+ /// </summary>
+ public readonly static ResultState Cancelled = new ResultState(TestStatus.Failed, "Cancelled");
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the TestStatus for the test.
+ /// </summary>
+ /// <value>The status.</value>
+ public TestStatus Status
+ {
+ get { return status; }
+ }
+
+ /// <summary>
+ /// Gets the label under which this test resullt is
+ /// categorized, if any.
+ /// </summary>
+ public string Label
+ {
+ get { return label; }
+ }
+
+ #endregion
+
+ /// <summary>
+ /// Returns a <see cref="System.String"/> that represents this instance.
+ /// </summary>
+ /// <returns>
+ /// A <see cref="System.String"/> that represents this instance.
+ /// </returns>
+ public override string ToString()
+ {
+ string s = status.ToString();
+ return label == null || label.Length == 0 ? s : string.Format("{0}:{1}", s, label);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/RunState.cs b/NUnitLite-0.9.0/src/framework/Api/RunState.cs
new file mode 100755
index 0000000..5db73ad
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/RunState.cs
@@ -0,0 +1,60 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The RunState enum indicates whether a test
+ /// can be executed.
+ /// </summary>
+ public enum RunState
+ {
+ /// <summary>
+ /// The test is not runnable.
+ /// </summary>
+ NotRunnable,
+
+ /// <summary>
+ /// The test is runnable.
+ /// </summary>
+ Runnable,
+
+ /// <summary>
+ /// The test can only be run explicitly.
+ /// </summary>
+ Explicit,
+
+ /// <summary>
+ /// The test has been skipped. This value may
+ /// appear on a Test when certain attributes
+ /// are used to skip the test.
+ /// </summary>
+ Skipped,
+
+ /// <summary>
+ /// The test has been ignored. May appear on
+ /// a Test, when the IgnoreAttribute is used.
+ /// </summary>
+ Ignored
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/TestOutput.cs b/NUnitLite-0.9.0/src/framework/Api/TestOutput.cs
new file mode 100755
index 0000000..31aad6d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/TestOutput.cs
@@ -0,0 +1,109 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Api
+{
+ using System;
+
+ /// <summary>
+ /// The TestOutput class holds a unit of output from
+ /// a test to either stdOut or stdErr
+ /// </summary>
+ public class TestOutput
+ {
+ string text;
+ TestOutputType type;
+
+ /// <summary>
+ /// Construct with text and an ouput destination type
+ /// </summary>
+ /// <param name="text">Text to be output</param>
+ /// <param name="type">Destination of output</param>
+ public TestOutput(string text, TestOutputType type)
+ {
+ this.text = text;
+ this.type = type;
+ }
+
+ /// <summary>
+ /// Return string representation of the object for debugging
+ /// </summary>
+ /// <returns></returns>
+ public override string ToString()
+ {
+ return type + ": " + text;
+ }
+
+ /// <summary>
+ /// Get the text
+ /// </summary>
+ public string Text
+ {
+ get
+ {
+ return this.text;
+ }
+ }
+
+ /// <summary>
+ /// Get the output type
+ /// </summary>
+ public TestOutputType Type
+ {
+ get
+ {
+ return this.type;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Enum representing the output destination
+ /// It uses combinable flags so that a given
+ /// output control can accept multiple types
+ /// of output. Normally, each individual
+ /// output uses a single flag value.
+ /// </summary>
+ public enum TestOutputType
+ {
+ /// <summary>
+ /// Send output to stdOut
+ /// </summary>
+ Out,
+
+ /// <summary>
+ /// Send output to stdErr
+ /// </summary>
+ Error,
+
+ /// <summary>
+ /// Send output to Trace
+ /// </summary>
+ Trace,
+
+ /// <summary>
+ /// Send output to Log
+ /// </summary>
+ Log
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/TestStatus.cs b/NUnitLite-0.9.0/src/framework/Api/TestStatus.cs
new file mode 100755
index 0000000..8c403c7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/TestStatus.cs
@@ -0,0 +1,51 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// The TestStatus enum indicates the result of running a test
+ /// </summary>
+ public enum TestStatus
+ {
+ /// <summary>
+ /// The test was inconclusive
+ /// </summary>
+ Inconclusive,
+
+ /// <summary>
+ /// The test has skipped
+ /// </summary>
+ Skipped,
+
+ /// <summary>
+ /// The test succeeded
+ /// </summary>
+ Passed,
+
+ /// <summary>
+ /// The test failed
+ /// </summary>
+ Failed
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Api/XmlNode.cs b/NUnitLite-0.9.0/src/framework/Api/XmlNode.cs
new file mode 100755
index 0000000..138fbcf
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Api/XmlNode.cs
@@ -0,0 +1,352 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Api
+{
+ /// <summary>
+ /// XmlNode represents a single node in the XML representation
+ /// of a Test or TestResult. It replaces System.Xml.XmlNode and
+ /// provides a minimal set of methods for operating on the XML
+ /// in a platform-independent manner.
+ /// </summary>
+ public class XmlNode
+ {
+ #region Private Fields
+
+ private string name;
+
+ private AttributeDictionary attributes;
+
+ private NodeList childNodes;
+
+ private string textContent;
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Constructs a new instance of XmlNode
+ /// </summary>
+ /// <param name="name">The name of the node</param>
+ public XmlNode(string name)
+ {
+ this.name = name;
+ this.attributes = new AttributeDictionary();
+ this.childNodes = new NodeList();
+ }
+
+ #endregion
+
+ #region Static Methods
+
+ /// <summary>
+ /// Creates a new top level element node.
+ /// </summary>
+ /// <param name="name">The element name.</param>
+ /// <returns></returns>
+ public static XmlNode CreateTopLevelElement(string name)
+ {
+ return new XmlNode(name);
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the name of the node
+ /// </summary>
+ public string Name
+ {
+ get { return name; }
+ }
+
+ /// <summary>
+ /// Gets the text content of the node
+ /// </summary>
+ public string TextContent
+ {
+ get { return textContent; }
+ set { textContent = value; }
+ }
+
+ /// <summary>
+ /// Gets the text content of the node escaped as needed.
+ /// This is for use in writing out the XML representation.
+ /// </summary>
+ public string EscapedTextContent
+ {
+ get { return Escape(textContent); }
+ }
+
+ /// <summary>
+ /// Gets the dictionary of attributes
+ /// </summary>
+ public AttributeDictionary Attributes
+ {
+ get { return attributes; }
+ }
+
+ /// <summary>
+ /// Gets a list of child nodes
+ /// </summary>
+ public NodeList ChildNodes
+ {
+ get { return childNodes; }
+ }
+
+ /// <summary>
+ /// Gets the first child of this node, or null
+ /// </summary>
+ public XmlNode FirstChild
+ {
+ get
+ {
+ return ChildNodes.Count > 0
+ ? ChildNodes[0] as XmlNode
+ : null;
+ }
+ }
+
+ #endregion
+
+ #region Instance Methods
+
+ /// <summary>
+ /// Adds a new element as a child of the current node and returns it.
+ /// </summary>
+ /// <param name="name">The element name.</param>
+ /// <returns>The newly created child element</returns>
+ public XmlNode AddElement(string name)
+ {
+ XmlNode childResult = new XmlNode(name);
+ ChildNodes.Add(childResult);
+ return childResult;
+ }
+
+ /// <summary>
+ /// Adds an attribute with a specified name and value to the XmlNode.
+ /// </summary>
+ /// <param name="name">The name of the attribute.</param>
+ /// <param name="value">The value of the attribute.</param>
+ public void AddAttribute(string name, string value)
+ {
+ this.Attributes.Add(name, value);
+ }
+
+ /// <summary>
+ /// Finds a single descendant of this node matching an xpath
+ /// specification. The format of the specification is
+ /// limited to what is needed by NUnit and its tests.
+ /// </summary>
+ /// <param name="xpath"></param>
+ /// <returns></returns>
+ public XmlNode FindDescendant(string xpath)
+ {
+ NodeList nodes = FindDescendants(xpath);
+
+ return nodes.Count > 0
+ ? nodes[0] as XmlNode
+ : null;
+ }
+
+ /// <summary>
+ /// Finds all descendants of this node matching an xpath
+ /// specification. The format of the specification is
+ /// limited to what is needed by NUnit and its tests.
+ /// </summary>
+ /// <param name="xpath"></param>
+ /// <returns></returns>
+ public NodeList FindDescendants(string xpath)
+ {
+ NodeList nodeList = new NodeList();
+ nodeList.Add(this);
+
+ return ApplySelection(nodeList, xpath);
+ }
+
+ /// <summary>
+ /// Writes the XML representation of the node to an XmlWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public void WriteTo(System.Xml.XmlWriter writer)
+ {
+ writer.WriteStartElement(this.Name);
+
+ foreach (string name in this.Attributes.Keys)
+ writer.WriteAttributeString(name, Attributes[name]);
+
+ if (this.TextContent != null)
+ writer.WriteChars(this.TextContent.ToCharArray(), 0, this.TextContent.Length);
+
+ foreach (XmlNode node in this.ChildNodes)
+ node.WriteTo(writer);
+
+ writer.WriteEndElement();
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private static NodeList ApplySelection(NodeList nodeList, string xpath)
+ {
+ Guard.ArgumentNotNullOrEmpty(xpath, "xpath");
+ if (xpath[0] == '/')
+ throw new ArgumentException("XPath expressions starting with '/' are not supported", "xpath");
+ if (xpath.IndexOf("//") >= 0)
+ throw new ArgumentException("XPath expressions with '//' are not supported", "xpath");
+
+ string head = xpath;
+ string tail = null;
+
+ int slash = xpath.IndexOf('/');
+ if (slash >= 0)
+ {
+ head = xpath.Substring(0, slash);
+ tail = xpath.Substring(slash + 1);
+ }
+
+ NodeList resultNodes = new NodeList();
+ NodeFilter filter = new NodeFilter(head);
+
+ foreach(XmlNode node in nodeList)
+ foreach (XmlNode childNode in node.ChildNodes)
+ if (filter.Pass(childNode))
+ resultNodes.Add(childNode);
+
+ return tail != null
+ ? ApplySelection(resultNodes, tail)
+ : resultNodes;
+ }
+
+ private static string Escape(string original)
+ {
+ return original
+ .Replace("&", "&amp;")
+ .Replace("\"", "&quot;")
+ .Replace("'", "&apos;")
+ .Replace("<", "&lt;")
+ .Replace(">", "&gt;");
+ }
+
+ #endregion
+
+ #region Nested NodeFilter class
+
+ class NodeFilter
+ {
+ private string nodeName;
+ private string propName;
+ private string propValue;
+
+ public NodeFilter(string xpath)
+ {
+ this.nodeName = xpath;
+
+ int lbrack = xpath.IndexOf('[');
+ if (lbrack >= 0)
+ {
+ if (!xpath.EndsWith("]"))
+ throw new ArgumentException("Invalid property expression", "xpath");
+
+ nodeName = xpath.Substring(0, lbrack);
+ string filter = xpath.Substring(lbrack+1, xpath.Length - lbrack - 2);
+
+ int equals = filter.IndexOf('=');
+ if (equals < 0 || filter[0] != '@')
+ throw new ArgumentException("Invalid property expression", "xpath");
+
+ this.propName = filter.Substring(1, equals - 1).Trim();
+ this.propValue = filter.Substring(equals + 1).Trim(new char[] { ' ', '"', '\'' });
+ }
+ }
+
+ public bool Pass(XmlNode node)
+ {
+ if (node.Name != nodeName)
+ return false;
+
+ if (propName == null)
+ return true;
+
+ return (string)node.Attributes[propName] == propValue;
+ }
+ }
+
+ #endregion
+ }
+
+ /// <summary>
+ /// Class used to represent a list of XmlResults
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public class NodeList : System.Collections.Generic.List<XmlNode>
+ {
+ }
+#else
+ public class NodeList : System.Collections.ArrayList
+ {
+ }
+#endif
+
+ /// <summary>
+ /// Class used to represent the attributes of a node
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public class AttributeDictionary : System.Collections.Generic.Dictionary<string, string>
+ {
+ }
+#else
+ public class AttributeDictionary : System.Collections.Specialized.StringDictionary
+ {
+ private System.Collections.ArrayList orderedKeys = new System.Collections.ArrayList();
+
+ /// <summary>
+ /// Adds a key and value to the dictionary. Overridden to
+ /// save the order in which keys are added.
+ /// </summary>
+ /// <param name="key">The attribute key</param>
+ /// <param name="value">The attribute value</param>
+ public override void Add(string key, string value)
+ {
+ base.Add(key, value);
+ orderedKeys.Add(key);
+ }
+
+ /// <summary>
+ /// Gets the keys in the same order they were added.
+ /// </summary>
+ public override System.Collections.ICollection Keys
+ {
+ get
+ {
+ return orderedKeys;
+ }
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/framework/AssemblyInfo.cs b/NUnitLite-0.9.0/src/framework/AssemblyInfo.cs
new file mode 100755
index 0000000..c61e405
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/AssemblyInfo.cs
@@ -0,0 +1,110 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System;
+
+// 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("NUnitLite")]
+[assembly: AssemblyDescription("NUnitLite unit-testing framework")]
+[assembly: AssemblyCompany("NUnit Software")]
+[assembly: AssemblyProduct("NUnitLite")]
+[assembly: AssemblyCopyright("Copyright 2012, Charlie Poole")]
+[assembly: AssemblyTrademark("NUnitLite")]
+[assembly: AssemblyCulture("")]
+
+// Set AssemblyConfiguration attribute depending on
+// how we are building the assembly.
+#if DEBUG
+#if NET_4_5
+[assembly: AssemblyConfiguration(".NET 4.5 Debug")]
+#elif NET_4_0
+[assembly: AssemblyConfiguration(".NET 4.0 Debug")]
+#elif NET_3_5
+[assembly: AssemblyConfiguration(".NET 3.5 Debug")]
+#elif NET_2_0
+[assembly: AssemblyConfiguration(".NET 2.0 Debug")]
+#elif NET_1_1
+[assembly: AssemblyConfiguration(".NET 1.1 Debug")]
+#elif NETCF_3_5
+[assembly: AssemblyConfiguration(".NET CF 3.5 Debug")]
+#elif NETCF_2_0
+[assembly: AssemblyConfiguration(".NET CF 2.0 Debug")]
+#elif SL_5_0
+[assembly: AssemblyConfiguration("Silverlight 5.0 Debug")]
+#elif SL_4_0
+[assembly: AssemblyConfiguration("Silverlight 4.0 Debug")]
+#elif SL_3_0
+[assembly: AssemblyConfiguration("Silverlight 3.0 Debug")]
+#endif
+#else
+#if NET_4_5
+[assembly: AssemblyConfiguration(".NET 4.5")]
+#elif NET_4_0
+[assembly: AssemblyConfiguration(".NET 4.0")]
+#elif NET_3_5
+[assembly: AssemblyConfiguration(".NET 3.5")]
+#elif NET_2_0
+[assembly: AssemblyConfiguration(".NET 2.0")]
+#elif NET_1_1
+[assembly: AssemblyConfiguration(".NET 1.1")]
+#elif NETCF_3_5
+[assembly: AssemblyConfiguration(".NET CF 3.5")]
+#elif NETCF_2_0
+[assembly: AssemblyConfiguration(".NET CF 2.0")]
+#elif SL_5_0
+[assembly: AssemblyConfiguration("Silverlight 5.0")]
+#elif SL_4_0
+[assembly: AssemblyConfiguration("Silverlight 4.0")]
+#elif SL_3_0
+[assembly: AssemblyConfiguration("Silverlight 3.0")]
+#endif
+#endif
+
+// 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)]
+
+[assembly: CLSCompliant(true)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0be367fd-d825-4039-a70b-54a3557170ec")]
+
+// 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 Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("0.9.0.0")]
+#if !PocketPC && !WindowsCE && !NETCF
+[assembly: AssemblyFileVersion("0.9.0.0")]
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Assert.cs b/NUnitLite-0.9.0/src/framework/Assert.cs
new file mode 100755
index 0000000..9f35e72
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Assert.cs
@@ -0,0 +1,1923 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.ComponentModel;
+using NUnit.Framework.Constraints;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Delegate used by tests that execute code and
+ /// capture any thrown exception.
+ /// </summary>
+ public delegate void TestDelegate();
+
+ /// <summary>
+ /// The Assert class contains a collection of static methods that
+ /// implement the most common assertions used in NUnit.
+ /// </summary>
+ public class Assert
+ {
+ #region Constructor
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ protected Assert() { }
+
+ #endregion
+
+ #region Equals and ReferenceEquals
+
+#if !NETCF
+ /// <summary>
+ /// The Equals method throws an AssertionException. This is done
+ /// to make sure there is no mistake by calling this function.
+ /// </summary>
+ /// <param name="a"></param>
+ /// <param name="b"></param>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static new bool Equals(object a, object b)
+ {
+ throw new InvalidOperationException("Assert.Equals should not be used for Assertions");
+ }
+
+ /// <summary>
+ /// override the default ReferenceEquals to throw an AssertionException. This
+ /// implementation makes sure there is no mistake in calling this function
+ /// as part of Assert.
+ /// </summary>
+ /// <param name="a"></param>
+ /// <param name="b"></param>
+ public static new void ReferenceEquals(object a, object b)
+ {
+ throw new InvalidOperationException("Assert.ReferenceEquals should not be used for Assertions");
+ }
+#endif
+
+ #endregion
+
+ #region Utility Asserts
+
+ #region Pass
+
+ /// <summary>
+ /// Throws a <see cref="SuccessException"/> 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.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void Pass(string message, params object[] args)
+ {
+ if (message == null) message = string.Empty;
+ else if (args != null && args.Length > 0)
+ message = string.Format(message, args);
+
+ throw new SuccessException(message);
+ }
+
+ /// <summary>
+ /// Throws a <see cref="SuccessException"/> 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.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+ static public void Pass(string message)
+ {
+ Assert.Pass(message, null);
+ }
+
+ /// <summary>
+ /// Throws a <see cref="SuccessException"/> 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.
+ /// </summary>
+ static public void Pass()
+ {
+ Assert.Pass(string.Empty, null);
+ }
+
+ #endregion
+
+ #region Fail
+
+ /// <summary>
+ /// Throws an <see cref="AssertionException"/> with the message and arguments
+ /// that are passed in. This is used by the other Assert functions.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void Fail(string message, params object[] args)
+ {
+ if (message == null) message = string.Empty;
+ else if (args != null && args.Length > 0)
+ message = string.Format(message, args);
+
+ throw new AssertionException(message);
+ }
+
+ /// <summary>
+ /// Throws an <see cref="AssertionException"/> with the message that is
+ /// passed in. This is used by the other Assert functions.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+ static public void Fail(string message)
+ {
+ Assert.Fail(message, null);
+ }
+
+ /// <summary>
+ /// Throws an <see cref="AssertionException"/>.
+ /// This is used by the other Assert functions.
+ /// </summary>
+ static public void Fail()
+ {
+ Assert.Fail(string.Empty, null);
+ }
+
+ #endregion
+
+ #region Ignore
+
+ /// <summary>
+ /// Throws an <see cref="IgnoreException"/> with the message and arguments
+ /// that are passed in. This causes the test to be reported as ignored.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void Ignore(string message, params object[] args)
+ {
+ if (message == null) message = string.Empty;
+ else if (args != null && args.Length > 0)
+ message = string.Format(message, args);
+
+ throw new IgnoreException(message);
+ }
+
+ /// <summary>
+ /// Throws an <see cref="IgnoreException"/> with the message that is
+ /// passed in. This causes the test to be reported as ignored.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+ static public void Ignore(string message)
+ {
+ Assert.Ignore(message, null);
+ }
+
+ /// <summary>
+ /// Throws an <see cref="IgnoreException"/>.
+ /// This causes the test to be reported as ignored.
+ /// </summary>
+ static public void Ignore()
+ {
+ Assert.Ignore(string.Empty, null);
+ }
+
+ #endregion
+
+ #region InConclusive
+
+ /// <summary>
+ /// Throws an <see cref="InconclusiveException"/> with the message and arguments
+ /// that are passed in. This causes the test to be reported as inconclusive.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="InconclusiveException"/> with.</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void Inconclusive(string message, params object[] args)
+ {
+ if (message == null) message = string.Empty;
+ else if (args != null && args.Length > 0)
+ message = string.Format(message, args);
+
+ throw new InconclusiveException(message);
+ }
+
+ /// <summary>
+ /// Throws an <see cref="InconclusiveException"/> with the message that is
+ /// passed in. This causes the test to be reported as inconclusive.
+ /// </summary>
+ /// <param name="message">The message to initialize the <see cref="InconclusiveException"/> with.</param>
+ static public void Inconclusive(string message)
+ {
+ Assert.Inconclusive(message, null);
+ }
+
+ /// <summary>
+ /// Throws an <see cref="InconclusiveException"/>.
+ /// This causes the test to be reported as Inconclusive.
+ /// </summary>
+ static public void Inconclusive()
+ {
+ Assert.Inconclusive(string.Empty, null);
+ }
+
+ #endregion
+
+ #endregion
+
+ #region Assert.That
+
+ #region Object
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ static public void That(object actual, IResolveConstraint expression)
+ {
+ Assert.That(actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That(object actual, IResolveConstraint expression, string message)
+ {
+ Assert.That(actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(object actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Constraint constraint = expression.Resolve();
+
+ IncrementAssertCount();
+ if (!constraint.Matches(actual))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new AssertionException(writer.ToString());
+ }
+ }
+
+ #endregion
+
+ #region Boolean
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display if the condition is false</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(bool condition, string message, params object[] args)
+ {
+ Assert.That(condition, Is.True, message, args);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display if the condition is false</param>
+ static public void That(bool condition, string message)
+ {
+ Assert.That(condition, Is.True, message, null);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ static public void That(bool condition)
+ {
+ Assert.That(condition, Is.True, null, null);
+ }
+
+ #endregion
+
+ #region ref Boolean
+
+#if !CLR_2_0 && !CLR_4_0
+ /// <summary>
+ /// Apply a constraint to a referenced boolean, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="constraint">A Constraint to be applied</param>
+ static public void That(ref bool actual, IResolveConstraint constraint)
+ {
+ Assert.That(ref actual, constraint.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="constraint">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That(ref bool actual, IResolveConstraint constraint, string message)
+ {
+ Assert.That(ref actual, constraint.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(ref bool actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Constraint constraint = expression.Resolve();
+
+ IncrementAssertCount();
+ if (!constraint.Matches(ref actual))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new AssertionException(writer.ToString());
+ }
+ }
+#endif
+
+ #endregion
+
+ #region ActualValueDelegate
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ static public void That<T>(ActualValueDelegate<T> del, IResolveConstraint expr)
+ {
+ Assert.That(del, expr.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That<T>(ActualValueDelegate<T> del, IResolveConstraint expr, string message)
+ {
+ Assert.That(del, expr.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That<T>(ActualValueDelegate<T> del, IResolveConstraint expr, string message, params object[] args)
+ {
+ Constraint constraint = expr.Resolve();
+
+ IncrementAssertCount();
+ if (!constraint.Matches(del))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new AssertionException(writer.ToString());
+ }
+ }
+#else
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ static public void That(ActualValueDelegate del, IResolveConstraint expr)
+ {
+ Assert.That(del, expr.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That(ActualValueDelegate del, IResolveConstraint expr, string message)
+ {
+ Assert.That(del, expr.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(ActualValueDelegate del, IResolveConstraint expr, string message, params object[] args)
+ {
+ Constraint constraint = expr.Resolve();
+
+ IncrementAssertCount();
+ if (!constraint.Matches(del))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new AssertionException(writer.ToString());
+ }
+ }
+#endif
+
+ #endregion
+
+ #region ref Object
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ static public void That<T>(ref T actual, IResolveConstraint expression)
+ {
+ Assert.That(ref actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That<T>(ref T actual, IResolveConstraint expression, string message)
+ {
+ Assert.That(ref actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That<T>(ref T actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Constraint constraint = expression.Resolve();
+
+ IncrementAssertCount();
+ if (!constraint.Matches(ref actual))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new AssertionException(writer.ToString());
+ }
+ }
+#endif
+
+ #endregion
+
+ #region TestDelegate
+
+ /// <summary>
+ /// Asserts that the code represented by a delegate throws an exception
+ /// that satisfies the constraint provided.
+ /// </summary>
+ /// <param name="code">A TestDelegate to be executed</param>
+ /// <param name="constraint">A ThrowsConstraint used in the test</param>
+ static public void That(TestDelegate code, IResolveConstraint constraint)
+ {
+ Assert.That((object)code, constraint);
+ }
+
+ #endregion
+
+ #endregion
+
+ #region Assert.ByVal
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ static public void ByVal(object actual, IResolveConstraint expression)
+ {
+ Assert.That(actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void ByVal(object actual, IResolveConstraint expression, string message)
+ {
+ Assert.That(actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <remarks>
+ /// This method is provided for use by VB developers needing to test
+ /// the value of properties with private setters.
+ /// </remarks>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void ByVal(object actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Assert.That(actual, expression, message, args);
+ }
+
+ #endregion
+
+ #region Throws, Catch and DoesNotThrow
+
+ #region Throws
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <param name="expression">A constraint to be satisfied by the exception</param>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static Exception Throws(IResolveConstraint expression, TestDelegate code, string message, params object[] args)
+ {
+ Exception caughtException = null;
+
+#if NET_4_5
+ if (AsyncInvocationRegion.IsAsyncOperation(code))
+ {
+ using (AsyncInvocationRegion region = AsyncInvocationRegion.Create(code))
+ {
+ code();
+
+ try
+ {
+ region.WaitForPendingOperationsToComplete(null);
+ }
+ catch (Exception e)
+ {
+ caughtException = e;
+ }
+ }
+ }
+ else
+#endif
+ try
+ {
+ code();
+ }
+ catch (Exception ex)
+ {
+ caughtException = ex;
+ }
+
+ Assert.That(caughtException, expression, message, args);
+
+ return caughtException;
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <param name="expression">A constraint to be satisfied by the exception</param>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static Exception Throws(IResolveConstraint expression, TestDelegate code, string message)
+ {
+ return Throws(expression, code, message, null);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <param name="expression">A constraint to be satisfied by the exception</param>
+ /// <param name="code">A TestDelegate</param>
+ public static Exception Throws(IResolveConstraint expression, TestDelegate code)
+ {
+ return Throws(expression, code, string.Empty, null);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <param name="expectedExceptionType">The exception Type expected</param>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static Exception Throws(Type expectedExceptionType, TestDelegate code, string message, params object[] args)
+ {
+ return Throws(new ExceptionTypeConstraint(expectedExceptionType), code, message, args);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <param name="expectedExceptionType">The exception Type expected</param>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static Exception Throws(Type expectedExceptionType, TestDelegate code, string message)
+ {
+ return Throws(new ExceptionTypeConstraint(expectedExceptionType), code, message, null);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <param name="expectedExceptionType">The exception Type expected</param>
+ /// <param name="code">A TestDelegate</param>
+ public static Exception Throws(Type expectedExceptionType, TestDelegate code)
+ {
+ return Throws(new ExceptionTypeConstraint(expectedExceptionType), code, string.Empty, null);
+ }
+
+ #endregion
+
+ #region Throws<T>
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <typeparam name="T">Type of the expected exception</typeparam>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static T Throws<T>(TestDelegate code, string message, params object[] args) where T : Exception
+ {
+ return (T)Throws(typeof(T), code, message, args);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <typeparam name="T">Type of the expected exception</typeparam>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static T Throws<T>(TestDelegate code, string message) where T : Exception
+ {
+ return Throws<T>(code, message, null);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws a particular exception when called.
+ /// </summary>
+ /// <typeparam name="T">Type of the expected exception</typeparam>
+ /// <param name="code">A TestDelegate</param>
+ public static T Throws<T>(TestDelegate code) where T : Exception
+ {
+ return Throws<T>(code, string.Empty, null);
+ }
+#endif
+
+ #endregion
+
+ #region Catch
+ /// <summary>
+ /// Verifies that a delegate throws an exception when called
+ /// and returns it.
+ /// </summary>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static Exception Catch(TestDelegate code, string message, params object[] args)
+ {
+ return Throws(new InstanceOfTypeConstraint(typeof(Exception)), code, message, args);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception when called
+ /// and returns it.
+ /// </summary>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static Exception Catch(TestDelegate code, string message)
+ {
+ return Throws(new InstanceOfTypeConstraint(typeof(Exception)), code, message);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception when called
+ /// and returns it.
+ /// </summary>
+ /// <param name="code">A TestDelegate</param>
+ public static Exception Catch(TestDelegate code)
+ {
+ return Throws(new InstanceOfTypeConstraint(typeof(Exception)), code);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception of a certain Type
+ /// or one derived from it when called and returns it.
+ /// </summary>
+ /// <param name="expectedExceptionType">The expected Exception Type</param>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static Exception Catch(Type expectedExceptionType, TestDelegate code, string message, params object[] args)
+ {
+ return Throws(new InstanceOfTypeConstraint(expectedExceptionType), code, message, args);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception of a certain Type
+ /// or one derived from it when called and returns it.
+ /// </summary>
+ /// <param name="expectedExceptionType">The expected Exception Type</param>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static Exception Catch(Type expectedExceptionType, TestDelegate code, string message)
+ {
+ return Throws(new InstanceOfTypeConstraint(expectedExceptionType), code, message);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception of a certain Type
+ /// or one derived from it when called and returns it.
+ /// </summary>
+ /// <param name="expectedExceptionType">The expected Exception Type</param>
+ /// <param name="code">A TestDelegate</param>
+ public static Exception Catch(Type expectedExceptionType, TestDelegate code)
+ {
+ return Throws(new InstanceOfTypeConstraint(expectedExceptionType), code);
+ }
+ #endregion
+
+ #region Catch<T>
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Verifies that a delegate throws an exception of a certain Type
+ /// or one derived from it when called and returns it.
+ /// </summary>
+ /// <typeparam name="T">The expected Exception Type</typeparam>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static T Catch<T>(TestDelegate code, string message, params object[] args) where T : System.Exception
+ {
+ return (T)Throws(new InstanceOfTypeConstraint(typeof(T)), code, message, args);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception of a certain Type
+ /// or one derived from it when called and returns it.
+ /// </summary>
+ /// <typeparam name="T">The expected Exception Type</typeparam>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static T Catch<T>(TestDelegate code, string message) where T : System.Exception
+ {
+ return (T)Throws(new InstanceOfTypeConstraint(typeof(T)), code, message);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate throws an exception of a certain Type
+ /// or one derived from it when called and returns it.
+ /// </summary>
+ /// <typeparam name="T">The expected Exception Type</typeparam>
+ /// <param name="code">A TestDelegate</param>
+ public static T Catch<T>(TestDelegate code) where T : System.Exception
+ {
+ return (T)Throws(new InstanceOfTypeConstraint(typeof(T)), code);
+ }
+#endif
+
+ #endregion
+
+ #region DoesNotThrow
+
+ /// <summary>
+ /// Verifies that a delegate does not throw an exception
+ /// </summary>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public static void DoesNotThrow(TestDelegate code, string message, params object[] args)
+ {
+ Assert.That(code, new ThrowsNothingConstraint(), message, args);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate does not throw an exception.
+ /// </summary>
+ /// <param name="code">A TestDelegate</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public static void DoesNotThrow(TestDelegate code, string message)
+ {
+ DoesNotThrow(code, message, null);
+ }
+
+ /// <summary>
+ /// Verifies that a delegate does not throw an exception.
+ /// </summary>
+ /// <param name="code">A TestDelegate</param>
+ public static void DoesNotThrow(TestDelegate code)
+ {
+ DoesNotThrow(code, string.Empty, null);
+ }
+
+ #endregion
+
+ #endregion
+
+ #region True
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void True(bool condition, string message, params object[] args)
+ {
+ Assert.That(condition, Is.True ,message, args);
+ }
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void True(bool condition, string message)
+ {
+ Assert.That(condition, Is.True ,message, null);
+ }
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ public static void True(bool condition)
+ {
+ Assert.That(condition, Is.True ,null, null);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void IsTrue(bool condition, string message, params object[] args)
+ {
+ Assert.That(condition, Is.True ,message, args);
+ }
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void IsTrue(bool condition, string message)
+ {
+ Assert.That(condition, Is.True ,message, null);
+ }
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ public static void IsTrue(bool condition)
+ {
+ Assert.That(condition, Is.True ,null, null);
+ }
+
+ #endregion
+
+ #region False
+
+ /// <summary>
+ /// Asserts that a condition is false. If the condition is true the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void False(bool condition, string message, params object[] args)
+ {
+ Assert.That(condition, Is.False ,message, args);
+ }
+ /// <summary>
+ /// Asserts that a condition is false. If the condition is true the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void False(bool condition, string message)
+ {
+ Assert.That(condition, Is.False ,message, null);
+ }
+ /// <summary>
+ /// Asserts that a condition is false. If the condition is true the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ public static void False(bool condition)
+ {
+ Assert.That(condition, Is.False ,null, null);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is false. If the condition is true the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void IsFalse(bool condition, string message, params object[] args)
+ {
+ Assert.That(condition, Is.False ,message, args);
+ }
+ /// <summary>
+ /// Asserts that a condition is false. If the condition is true the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void IsFalse(bool condition, string message)
+ {
+ Assert.That(condition, Is.False ,message, null);
+ }
+ /// <summary>
+ /// Asserts that a condition is false. If the condition is true the method throws
+ /// an <see cref="AssertionException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ public static void IsFalse(bool condition)
+ {
+ Assert.That(condition, Is.False ,null, null);
+ }
+
+ #endregion
+
+ #region NotNull
+
+ /// <summary>
+ /// Verifies that the object that is passed in is not equal to <code>null</code>
+ /// If the object is <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void NotNull(object anObject, string message, params object[] args)
+ {
+ Assert.That(anObject, Is.Not.Null ,message, args);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is not equal to <code>null</code>
+ /// If the object is <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void NotNull(object anObject, string message)
+ {
+ Assert.That(anObject, Is.Not.Null ,message, null);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is not equal to <code>null</code>
+ /// If the object is <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ public static void NotNull(object anObject)
+ {
+ Assert.That(anObject, Is.Not.Null ,null, null);
+ }
+
+ /// <summary>
+ /// Verifies that the object that is passed in is not equal to <code>null</code>
+ /// If the object is <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void IsNotNull(object anObject, string message, params object[] args)
+ {
+ Assert.That(anObject, Is.Not.Null ,message, args);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is not equal to <code>null</code>
+ /// If the object is <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void IsNotNull(object anObject, string message)
+ {
+ Assert.That(anObject, Is.Not.Null ,message, null);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is not equal to <code>null</code>
+ /// If the object is <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ public static void IsNotNull(object anObject)
+ {
+ Assert.That(anObject, Is.Not.Null ,null, null);
+ }
+
+ #endregion
+
+ #region Null
+
+ /// <summary>
+ /// Verifies that the object that is passed in is equal to <code>null</code>
+ /// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void Null(object anObject, string message, params object[] args)
+ {
+ Assert.That(anObject, Is.Null ,message, args);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is equal to <code>null</code>
+ /// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void Null(object anObject, string message)
+ {
+ Assert.That(anObject, Is.Null ,message, null);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is equal to <code>null</code>
+ /// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ public static void Null(object anObject)
+ {
+ Assert.That(anObject, Is.Null ,null, null);
+ }
+
+ /// <summary>
+ /// Verifies that the object that is passed in is equal to <code>null</code>
+ /// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void IsNull(object anObject, string message, params object[] args)
+ {
+ Assert.That(anObject, Is.Null ,message, args);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is equal to <code>null</code>
+ /// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void IsNull(object anObject, string message)
+ {
+ Assert.That(anObject, Is.Null ,message, null);
+ }
+ /// <summary>
+ /// Verifies that the object that is passed in is equal to <code>null</code>
+ /// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+ /// is thrown.
+ /// </summary>
+ /// <param name="anObject">The object that is to be tested</param>
+ public static void IsNull(object anObject)
+ {
+ Assert.That(anObject, Is.Null ,null, null);
+ }
+
+ #endregion
+
+ #region AreEqual
+
+ #region Ints
+
+ /// <summary>
+ /// Verifies that two ints are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreEqual(int expected, int actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two ints are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreEqual(int expected, int actual, string message)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two ints are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreEqual(int expected, int actual)
+ {
+ Assert.That(actual, Is.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Longs
+
+ /// <summary>
+ /// Verifies that two longs are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreEqual(long expected, long actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two longs are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreEqual(long expected, long actual, string message)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two longs are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreEqual(long expected, long actual)
+ {
+ Assert.That(actual, Is.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Unsigned Ints
+
+ /// <summary>
+ /// Verifies that two unsigned ints are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ [CLSCompliant(false)]
+ public static void AreEqual(uint expected, uint actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two unsigned ints are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ [CLSCompliant(false)]
+ public static void AreEqual(uint expected, uint actual, string message)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two unsigned ints are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ [CLSCompliant(false)]
+ public static void AreEqual(uint expected, uint actual)
+ {
+ Assert.That(actual, Is.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Unsigned Longs
+
+ /// <summary>
+ /// Verifies that two unsigned longs are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ [CLSCompliant(false)]
+ public static void AreEqual(ulong expected, ulong actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two unsigned longs are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ [CLSCompliant(false)]
+ public static void AreEqual(ulong expected, ulong actual, string message)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two unsigned longs are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ [CLSCompliant(false)]
+ public static void AreEqual(ulong expected, ulong actual)
+ {
+ Assert.That(actual, Is.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Decimals
+
+ /// <summary>
+ /// Verifies that two decimals are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreEqual(decimal expected, decimal actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two decimals are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreEqual(decimal expected, decimal actual, string message)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two decimals are equal. If they are not, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreEqual(decimal expected, decimal actual)
+ {
+ Assert.That(actual, Is.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Doubles
+
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is
+ /// thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreEqual(double expected, double actual, double delta, string message, params object[] args)
+ {
+ AssertDoublesAreEqual(expected, actual, delta, message, args);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is
+ /// thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreEqual(double expected, double actual, double delta, string message)
+ {
+ AssertDoublesAreEqual(expected, actual, delta, message, null);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is
+ /// thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ public static void AreEqual(double expected, double actual, double delta)
+ {
+ AssertDoublesAreEqual(expected, actual, delta, null, null);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is
+ /// thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreEqual(double expected, double? actual, double delta, string message, params object[] args)
+ {
+ AssertDoublesAreEqual(expected, (double)actual, delta, message, args);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is
+ /// thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreEqual(double expected, double? actual, double delta, string message)
+ {
+ AssertDoublesAreEqual(expected, (double)actual, delta, message, null);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is
+ /// thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ public static void AreEqual(double expected, double? actual, double delta)
+ {
+ AssertDoublesAreEqual(expected, (double)actual, delta, null, null);
+ }
+#endif
+
+ #endregion
+
+ #region Objects
+
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The value that is expected</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreEqual(object expected, object actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The value that is expected</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreEqual(object expected, object actual, string message)
+ {
+ Assert.That(actual, Is.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The value that is expected</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreEqual(object expected, object actual)
+ {
+ Assert.That(actual, Is.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #endregion
+
+ #region AreNotEqual
+
+ #region Ints
+
+ /// <summary>
+ /// Verifies that two ints are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotEqual(int expected, int actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two ints are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotEqual(int expected, int actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two ints are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreNotEqual(int expected, int actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Longs
+
+ /// <summary>
+ /// Verifies that two longs are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotEqual(long expected, long actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two longs are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotEqual(long expected, long actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two longs are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreNotEqual(long expected, long actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Unsigned Ints
+
+ /// <summary>
+ /// Verifies that two unsigned ints are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ [CLSCompliant(false)]
+ public static void AreNotEqual(uint expected, uint actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two unsigned ints are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ [CLSCompliant(false)]
+ public static void AreNotEqual(uint expected, uint actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two unsigned ints are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ [CLSCompliant(false)]
+ public static void AreNotEqual(uint expected, uint actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Unsigned Longs
+
+ /// <summary>
+ /// Verifies that two unsigned longs are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ [CLSCompliant(false)]
+ public static void AreNotEqual(ulong expected, ulong actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two unsigned longs are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ [CLSCompliant(false)]
+ public static void AreNotEqual(ulong expected, ulong actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two unsigned longs are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ [CLSCompliant(false)]
+ public static void AreNotEqual(ulong expected, ulong actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Decimals
+
+ /// <summary>
+ /// Verifies that two decimals are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotEqual(decimal expected, decimal actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two decimals are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotEqual(decimal expected, decimal actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two decimals are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreNotEqual(decimal expected, decimal actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Floats
+
+ /// <summary>
+ /// Verifies that two floats are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotEqual(float expected, float actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two floats are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotEqual(float expected, float actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two floats are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreNotEqual(float expected, float actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Doubles
+
+ /// <summary>
+ /// Verifies that two doubles are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotEqual(double expected, double actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// Verifies that two doubles are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotEqual(double expected, double actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// Verifies that two doubles are not equal. If they are equal, then an
+ /// <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreNotEqual(double expected, double actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #region Objects
+
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The value that is expected</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotEqual(object expected, object actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The value that is expected</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotEqual(object expected, object actual, string message)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), message, null);
+ }
+ /// <summary>
+ /// 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 <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The value that is expected</param>
+ /// <param name="actual">The actual value</param>
+ public static void AreNotEqual(object expected, object actual)
+ {
+ Assert.That(actual, Is.Not.EqualTo(expected), null, null);
+ }
+
+ #endregion
+
+ #endregion
+
+ #region AreSame
+
+ /// <summary>
+ /// Asserts that two objects refer to the same object. If they
+ /// are not the same an <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected object</param>
+ /// <param name="actual">The actual object</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreSame(object expected, object actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.SameAs(expected), message, args);
+ }
+ /// <summary>
+ /// Asserts that two objects refer to the same object. If they
+ /// are not the same an <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected object</param>
+ /// <param name="actual">The actual object</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreSame(object expected, object actual, string message)
+ {
+ Assert.That(actual, Is.SameAs(expected), message, null);
+ }
+ /// <summary>
+ /// Asserts that two objects refer to the same object. If they
+ /// are not the same an <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected object</param>
+ /// <param name="actual">The actual object</param>
+ public static void AreSame(object expected, object actual)
+ {
+ Assert.That(actual, Is.SameAs(expected), null, null);
+ }
+
+ #endregion
+
+ #region AreNotSame
+
+ /// <summary>
+ /// Asserts that two objects do not refer to the same object. If they
+ /// are the same an <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected object</param>
+ /// <param name="actual">The actual object</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ public static void AreNotSame(object expected, object actual, string message, params object[] args)
+ {
+ Assert.That(actual, Is.Not.SameAs(expected), message, args);
+ }
+ /// <summary>
+ /// Asserts that two objects do not refer to the same object. If they
+ /// are the same an <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected object</param>
+ /// <param name="actual">The actual object</param>
+ /// <param name="message">The message to display in case of failure</param>
+ public static void AreNotSame(object expected, object actual, string message)
+ {
+ Assert.That(actual, Is.Not.SameAs(expected), message, null);
+ }
+ /// <summary>
+ /// Asserts that two objects do not refer to the same object. If they
+ /// are the same an <see cref="AssertionException"/> is thrown.
+ /// </summary>
+ /// <param name="expected">The expected object</param>
+ /// <param name="actual">The actual object</param>
+ public static void AreNotSame(object expected, object actual)
+ {
+ Assert.That(actual, Is.Not.SameAs(expected), null, null);
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ /// <summary>
+ /// Helper for Assert.AreEqual(double expected, double actual, ...)
+ /// allowing code generation to work consistently.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="delta">The maximum acceptable difference between the
+ /// the expected and the actual</param>
+ /// <param name="message">The message to display in case of failure</param>
+ /// <param name="args">Array of objects to be used in formatting the message</param>
+ protected static void AssertDoublesAreEqual(double expected, double actual, double delta, string message, object[] args)
+ {
+ if (double.IsNaN(expected) || double.IsInfinity(expected))
+ Assert.That(actual, Is.EqualTo(expected), message, args);
+ else
+ Assert.That(actual, Is.EqualTo(expected).Within(delta), message, args);
+ }
+
+ private static void IncrementAssertCount()
+ {
+ TestExecutionContext.CurrentContext.IncrementAssertCount();
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/AssertionHelper.cs b/NUnitLite-0.9.0/src/framework/AssertionHelper.cs
new file mode 100755
index 0000000..38869af
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/AssertionHelper.cs
@@ -0,0 +1,366 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// 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
+ /// <see cref="Is"/>, from which it inherits much of its
+ /// behavior, in certain mock object frameworks.
+ /// </summary>
+ public class AssertionHelper : ConstraintFactory
+ {
+ #region Assert
+ //private Assertions assert = new Assertions();
+ //public virtual Assertions Assert
+ //{
+ // get { return assert; }
+ //}
+ #endregion
+
+ #region Expect
+
+ #region Object
+
+#if !CLR_2_0 && !CLR_4_0
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ public void Expect(object actual, IResolveConstraint expression)
+ {
+ Assert.That(actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message to be displayed in case of failure</param>
+ public void Expect(object actual, IResolveConstraint expression, string message)
+ {
+ Assert.That(actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message to be displayed in case of failure</param>
+ /// <param name="args">Arguments to use in formatting the message</param>
+ public void Expect(object actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Assert.That(actual, expression, message, args);
+ }
+#endif
+
+ #endregion
+
+ #region Boolean
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>. Works Identically to
+ /// <see cref="Assert.That(bool, string, object[])"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display if the condition is false</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public void Expect(bool condition, string message, params object[] args)
+ {
+ Assert.That(condition, Is.True, message, args);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>. Works Identically to
+ /// <see cref="Assert.That(bool, string)"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display if the condition is false</param>
+ public void Expect(bool condition, string message)
+ {
+ Assert.That(condition, Is.True, message, null);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="AssertionException"/>. Works Identically to <see cref="Assert.That(bool)"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ public void Expect(bool condition)
+ {
+ Assert.That(condition, Is.True, null, null);
+ }
+
+ #endregion
+
+ #region ref Boolean
+
+#if !CLR_2_0 && !CLR_4_0
+ /// <summary>
+ /// Apply a constraint to a referenced boolean, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="constraint">A Constraint to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ public void Expect(ref bool actual, IResolveConstraint constraint)
+ {
+ Assert.That(ref actual, constraint.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="constraint">A Constraint to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public void Expect(ref bool actual, IResolveConstraint constraint, string message)
+ {
+ Assert.That(ref actual, constraint.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public void Expect(ref bool actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Assert.That(ref actual, expression, message, args);
+ }
+#endif
+
+ #endregion
+
+ #region ActualValueDelegate
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ public void Expect<T>(ActualValueDelegate<T> del, IResolveConstraint expr)
+ {
+ Assert.That(del, expr.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public void Expect<T>(ActualValueDelegate<T> del, IResolveConstraint expr, string message)
+ {
+ Assert.That(del, expr.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public void Expect<T>(ActualValueDelegate<T> del, IResolveConstraint expr, string message, params object[] args)
+ {
+ Assert.That(del, expr, message, args);
+ }
+#else
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ public void Expect(ActualValueDelegate del, IResolveConstraint expr)
+ {
+ Assert.That(del, expr.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public void Expect(ActualValueDelegate del, IResolveConstraint expr, string message)
+ {
+ Assert.That(del, expr.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public void Expect(ActualValueDelegate del, IResolveConstraint expr, string message, params object[] args)
+ {
+ Assert.That(del, expr, message, args);
+ }
+#endif
+
+ #endregion
+
+ #region ref Object
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ public void Expect<T>(ref T actual, IResolveConstraint expression)
+ {
+ Assert.That(ref actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ public void Expect<T>(ref T actual, IResolveConstraint expression, string message)
+ {
+ Assert.That(ref actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ public void Expect<T>(ref T actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Assert.That(ref actual, expression, message, args);
+ }
+#endif
+
+ #endregion
+
+ #region TestDelegate
+
+ /// <summary>
+ /// Asserts that the code represented by a delegate throws an exception
+ /// that satisfies the constraint provided.
+ /// </summary>
+ /// <param name="code">A TestDelegate to be executed</param>
+ /// <param name="constraint">A ThrowsConstraint used in the test</param>
+ public void Expect(TestDelegate code, IResolveConstraint constraint)
+ {
+ Assert.That((object)code, constraint);
+ }
+
+ #endregion
+
+ #endregion
+
+ #region Expect<T>
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ static public void Expect<T>(T actual, IResolveConstraint expression)
+ {
+ Assert.That(actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void Expect<T>(T actual, IResolveConstraint expression, string message)
+ {
+ Assert.That(actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an assertion exception on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void Expect<T>(T actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Assert.That(actual, expression, message, args);
+ }
+
+#endif
+
+ #endregion
+
+ #region Map
+ /// <summary>
+ /// Returns a ListMapper based on a collection.
+ /// </summary>
+ /// <param name="original">The original collection</param>
+ /// <returns></returns>
+ public ListMapper Map( ICollection original )
+ {
+ return new ListMapper( original );
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Assume.cs b/NUnitLite-0.9.0/src/framework/Assume.cs
new file mode 100755
index 0000000..d1581c4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Assume.cs
@@ -0,0 +1,360 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.ComponentModel;
+using NUnit.Framework.Constraints;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class Assume
+ {
+ #region Equals and ReferenceEquals
+
+ /// <summary>
+ /// The Equals method throws an AssertionException. This is done
+ /// to make sure there is no mistake by calling this function.
+ /// </summary>
+ /// <param name="a"></param>
+ /// <param name="b"></param>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static new bool Equals(object a, object b)
+ {
+ // TODO: This should probably be InvalidOperationException
+ throw new AssertionException("Assert.Equals should not be used for Assertions");
+ }
+
+ /// <summary>
+ /// override the default ReferenceEquals to throw an AssertionException. This
+ /// implementation makes sure there is no mistake in calling this function
+ /// as part of Assert.
+ /// </summary>
+ /// <param name="a"></param>
+ /// <param name="b"></param>
+ public static new void ReferenceEquals(object a, object b)
+ {
+ throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
+ }
+
+ #endregion
+
+ #region Assume.That
+
+ #region Object
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ static public void That(object actual, IResolveConstraint expression)
+ {
+ Assume.That(actual, expression, null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That(object actual, IResolveConstraint expression, string message)
+ {
+ Assume.That(actual, expression, message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(object actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Constraint constraint = expression.Resolve();
+
+ if (!constraint.Matches(actual))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new InconclusiveException(writer.ToString());
+ }
+ }
+ #endregion
+
+ #region Boolean
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="InconclusiveException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display if the condition is false</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(bool condition, string message, params object[] args)
+ {
+ Assume.That(condition, Is.True, message, args);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the method throws
+ /// an <see cref="InconclusiveException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ /// <param name="message">The message to display if the condition is false</param>
+ static public void That(bool condition, string message)
+ {
+ Assume.That(condition, Is.True, message, null);
+ }
+
+ /// <summary>
+ /// Asserts that a condition is true. If the condition is false the
+ /// method throws an <see cref="InconclusiveException"/>.
+ /// </summary>
+ /// <param name="condition">The evaluated condition</param>
+ static public void That(bool condition)
+ {
+ Assume.That(condition, Is.True, null, null);
+ }
+
+ #endregion
+
+ #region ref Boolean
+
+#if !CLR_2_0 && !CLR_4_0
+ /// <summary>
+ /// Apply a constraint to a referenced boolean, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ static public void That(ref bool actual, IResolveConstraint expression)
+ {
+ Assume.That(ref actual, expression.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced boolean, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That(ref bool actual, IResolveConstraint expression, string message)
+ {
+ Assume.That(ref actual, expression.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced boolean, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(ref bool actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Constraint constraint = expression.Resolve();
+
+ if (!constraint.Matches(ref actual))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new InconclusiveException(writer.ToString());
+ }
+ }
+#endif
+
+ #endregion
+
+ #region ActualValueDelegate
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ static public void That<T>(ActualValueDelegate<T> del, IResolveConstraint expr)
+ {
+ Assume.That(del, expr.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That<T>(ActualValueDelegate<T> del, IResolveConstraint expr, string message)
+ {
+ Assume.That(del, expr.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That<T>(ActualValueDelegate<T> del, IResolveConstraint expr, string message, params object[] args)
+ {
+ Constraint constraint = expr.Resolve();
+
+ if (!constraint.Matches(del))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new InconclusiveException(writer.ToString());
+ }
+ }
+#else
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ static public void That(ActualValueDelegate del, IResolveConstraint expr)
+ {
+ Assume.That(del, expr.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That(ActualValueDelegate del, IResolveConstraint expr, string message)
+ {
+ Assume.That(del, expr.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to an actual value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="del">An ActualValueDelegate returning the value to be tested</param>
+ /// <param name="expr">A Constraint expression to be applied</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That(ActualValueDelegate del, IResolveConstraint expr, string message, params object[] args)
+ {
+ Constraint constraint = expr.Resolve();
+
+ if (!constraint.Matches(del))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new InconclusiveException(writer.ToString());
+ }
+ }
+#endif
+
+ #endregion
+
+ #region ref Object
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ static public void That<T>(ref T actual, IResolveConstraint expression)
+ {
+ Assume.That(ref actual, expression.Resolve(), null, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ static public void That<T>(ref T actual, IResolveConstraint expression, string message)
+ {
+ Assume.That(ref actual, expression.Resolve(), message, null);
+ }
+
+ /// <summary>
+ /// Apply a constraint to a referenced value, succeeding if the constraint
+ /// is satisfied and throwing an InconclusiveException on failure.
+ /// </summary>
+ /// <param name="expression">A Constraint expression to be applied</param>
+ /// <param name="actual">The actual value to test</param>
+ /// <param name="message">The message that will be displayed on failure</param>
+ /// <param name="args">Arguments to be used in formatting the message</param>
+ static public void That<T>(ref T actual, IResolveConstraint expression, string message, params object[] args)
+ {
+ Constraint constraint = expression.Resolve();
+
+ if (!constraint.Matches(ref actual))
+ {
+ MessageWriter writer = new TextMessageWriter(message, args);
+ constraint.WriteMessageTo(writer);
+ throw new InconclusiveException(writer.ToString());
+ }
+ }
+#endif
+
+ #endregion
+
+ #region TestDelegate
+
+ /// <summary>
+ /// Asserts that the code represented by a delegate throws an exception
+ /// that satisfies the constraint provided.
+ /// </summary>
+ /// <param name="code">A TestDelegate to be executed</param>
+ /// <param name="constraint">A ThrowsConstraint used in the test</param>
+ static public void That(TestDelegate code, IResolveConstraint constraint)
+ {
+ Assume.That((object)code, constraint);
+ }
+
+ #endregion
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/CategoryAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/CategoryAttribute.cs
new file mode 100755
index 0000000..d859b4a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/CategoryAttribute.cs
@@ -0,0 +1,95 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Attribute used to apply a category to a test
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true, Inherited=true)]
+ public class CategoryAttribute : NUnitAttribute, IApplyToTest
+ {
+ /// <summary>
+ /// The name of the category
+ /// </summary>
+ protected string categoryName;
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="name">The name of the category</param>
+ public CategoryAttribute(string name)
+ {
+ this.categoryName = name.Trim();
+ }
+
+ /// <summary>
+ /// Protected constructor uses the Type name as the name
+ /// of the category.
+ /// </summary>
+ protected CategoryAttribute()
+ {
+ this.categoryName = this.GetType().Name;
+ if ( categoryName.EndsWith( "Attribute" ) )
+ categoryName = categoryName.Substring( 0, categoryName.Length - 9 );
+ }
+
+ /// <summary>
+ /// The name of the category
+ /// </summary>
+ public string Name
+ {
+ get { return categoryName; }
+ }
+
+ #region IApplyToTest Members
+
+ /// <summary>
+ /// Modifies a test by adding a category to it.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ test.Properties.Add(PropertyNames.Category, this.Name);
+
+ if (this.Name.IndexOfAny(new char[] { ',', '!', '+', '-' }) >= 0)
+ {
+ test.RunState = RunState.NotRunnable;
+ test.Properties.Set(PropertyNames.SkipReason, "Category name must not contain ',', '!', '+' or '-'");
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/CombinatorialAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/CombinatorialAttribute.cs
new file mode 100755
index 0000000..4f5c911
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/CombinatorialAttribute.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Marks a test to use a combinatorial join of any argument
+ /// data provided. Since this is the default, the attribute is
+ /// not needed.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=false)]
+ public class CombinatorialAttribute : PropertyAttribute
+ {
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public CombinatorialAttribute() : base(PropertyNames.JoinType, "Combinatorial") { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/CultureAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/CultureAttribute.cs
new file mode 100755
index 0000000..ca5e57a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/CultureAttribute.cs
@@ -0,0 +1,131 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Globalization;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// CultureAttribute is used to mark a test fixture or an
+ /// individual method as applying to a particular Culture only.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Assembly, AllowMultiple = false, Inherited=false)]
+ public class CultureAttribute : IncludeExcludeAttribute, IApplyToTest
+ {
+ private CultureDetector cultureDetector = new CultureDetector();
+ private CultureInfo currentCulture = CultureInfo.CurrentCulture;
+
+ /// <summary>
+ /// Constructor with no cultures specified, for use
+ /// with named property syntax.
+ /// </summary>
+ public CultureAttribute() { }
+
+ /// <summary>
+ /// Constructor taking one or more cultures
+ /// </summary>
+ /// <param name="cultures">Comma-deliminted list of cultures</param>
+ public CultureAttribute(string cultures) : base(cultures) { }
+
+ #region IApplyToTest members
+
+ /// <summary>
+ /// Causes a test to be skipped if this CultureAttribute is not satisfied.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ if (test.RunState != RunState.NotRunnable && !IsCultureSupported())
+ {
+ test.RunState = RunState.Skipped;
+ test.Properties.Set(PropertyNames.SkipReason, Reason);
+ }
+ }
+
+ #endregion
+
+ /// <summary>
+ /// Tests to determine if the current culture is supported
+ /// based on the properties of this attribute.
+ /// </summary>
+ /// <returns>True, if the current culture is supported</returns>
+ private bool IsCultureSupported()
+ {
+ if (Include != null && !cultureDetector.IsCultureSupported(Include))
+ {
+ Reason = string.Format("Only supported under culture {0}", Include);
+ return false;
+ }
+
+ if (Exclude != null && cultureDetector.IsCultureSupported(Exclude))
+ {
+ Reason = string.Format("Not supported under culture {0}", Exclude);
+ return false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// Test to determine if the a particular culture or comma-
+ /// delimited set of cultures is in use.
+ /// </summary>
+ /// <param name="culture">Name of the culture or comma-separated list of culture names</param>
+ /// <returns>True if the culture is in use on the system</returns>
+ public bool IsCultureSupported(string culture)
+ {
+ culture = culture.Trim();
+
+ if (culture.IndexOf(',') >= 0)
+ {
+ if (IsCultureSupported(culture.Split(new char[] { ',' })))
+ return true;
+ }
+ else
+ {
+ if (currentCulture.Name == culture || currentCulture.TwoLetterISOLanguageName == culture)
+ return true;
+ }
+
+ return false;
+ }
+
+ /// <summary>
+ /// Test to determine if one of a collection of culturess
+ /// is being used currently.
+ /// </summary>
+ /// <param name="cultures"></param>
+ /// <returns></returns>
+ public bool IsCultureSupported(string[] cultures)
+ {
+ foreach (string culture in cultures)
+ if (IsCultureSupported(culture))
+ return true;
+
+ return false;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/DataAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/DataAttribute.cs
new file mode 100755
index 0000000..28a7a7c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/DataAttribute.cs
@@ -0,0 +1,40 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// The abstract base class for all data-providing attributes
+ /// defined by NUnit. Used to select all data sources for a
+ /// method, class or parameter.
+ /// </summary>
+ public abstract class DataAttribute : NUnitAttribute
+ {
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public DataAttribute() { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/DatapointAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/DatapointAttribute.cs
new file mode 100755
index 0000000..5e386ee
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/DatapointAttribute.cs
@@ -0,0 +1,36 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
+ public class DatapointAttribute : NUnitAttribute
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/DatapointSourceAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/DatapointSourceAttribute.cs
new file mode 100755
index 0000000..f00b512
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/DatapointSourceAttribute.cs
@@ -0,0 +1,39 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Used to mark a field, property or method providing a set of datapoints to
+ /// be used in executing any theories within the same fixture that require an
+ /// argument of the Type provided. The data source may provide an array of
+ /// the required Type or an IEnumerable&lt;T&gt;.
+ /// Synonymous with DatapointsAttribute.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
+ public class DatapointSourceAttribute : NUnitAttribute
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/DatapointsAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/DatapointsAttribute.cs
new file mode 100755
index 0000000..cbf120a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/DatapointsAttribute.cs
@@ -0,0 +1,39 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Used to mark a field, property or method providing a set of datapoints to
+ /// be used in executing any theories within the same fixture that require an
+ /// argument of the Type provided. The data source may provide an array of
+ /// the required Type or an IEnumerable&lt;T&gt;.
+ /// Synonymous with DatapointSourceAttribute.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
+ public class DatapointsAttribute : DatapointSourceAttribute
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/DescriptionAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/DescriptionAttribute.cs
new file mode 100755
index 0000000..224ed09
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/DescriptionAttribute.cs
@@ -0,0 +1,43 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Attribute used to provide descriptive text about a
+ /// test case or fixture.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly, AllowMultiple = false, Inherited=false)]
+ public sealed class DescriptionAttribute : PropertyAttribute
+ {
+ /// <summary>
+ /// Construct a description Attribute
+ /// </summary>
+ /// <param name="description">The text of the description</param>
+ public DescriptionAttribute(string description) : base(PropertyNames.Description, description) { }
+ }
+
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/ExpectedExceptionAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/ExpectedExceptionAttribute.cs
new file mode 100755
index 0000000..790cd1c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/ExpectedExceptionAttribute.cs
@@ -0,0 +1,175 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// ExpectedExceptionAttribute
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=false)]
+ public class ExpectedExceptionAttribute : NUnitAttribute
+ {
+ private ExpectedExceptionData exceptionData = new ExpectedExceptionData();
+
+ /// <summary>
+ /// Constructor for a non-specific exception
+ /// </summary>
+ public ExpectedExceptionAttribute()
+ {
+ }
+
+ /// <summary>
+ /// Constructor for a given type of exception
+ /// </summary>
+ /// <param name="exceptionType">The type of the expected exception</param>
+ public ExpectedExceptionAttribute(Type exceptionType)
+ {
+ exceptionData.ExpectedExceptionType = exceptionType;
+ }
+
+ /// <summary>
+ /// Constructor for a given exception name
+ /// </summary>
+ /// <param name="exceptionName">The full name of the expected exception</param>
+ public ExpectedExceptionAttribute(string exceptionName)
+ {
+ exceptionData.ExpectedExceptionName = exceptionName;
+ }
+
+ /// <summary>
+ /// Gets or sets the expected exception type
+ /// </summary>
+ public Type ExpectedException
+ {
+ get { return exceptionData.ExpectedExceptionType; }
+ set { exceptionData.ExpectedExceptionType = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the full Type name of the expected exception
+ /// </summary>
+ public string ExpectedExceptionName
+ {
+ get { return exceptionData.ExpectedExceptionName; }
+ set { exceptionData.ExpectedExceptionName = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the expected message text
+ /// </summary>
+ public string ExpectedMessage
+ {
+ get { return exceptionData.ExpectedMessage; }
+ set { exceptionData.ExpectedMessage = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the user message displayed in case of failure
+ /// </summary>
+ public string UserMessage
+ {
+ get { return exceptionData.UserMessage; }
+ set { exceptionData.UserMessage = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the type of match to be performed on the expected message
+ /// </summary>
+ public MessageMatch MatchType
+ {
+ get { return exceptionData.MatchType; }
+ set { exceptionData.MatchType = value; }
+ }
+
+ /// <summary>
+ /// Gets the name of a method to be used as an exception handler
+ /// </summary>
+ public string Handler
+ {
+ get { return exceptionData.HandlerName; }
+ set { exceptionData.HandlerName = value; }
+ }
+
+ /// <summary>
+ /// Gets all data about the expected exception.
+ /// </summary>
+ public ExpectedExceptionData ExceptionData
+ {
+ get { return exceptionData; }
+ }
+
+ //#region IApplyToTest Members
+
+ //void IApplyToTest.ApplyToTest(ITest test)
+ //{
+ // TestMethod testMethod = test as TestMethod;
+ // if (testMethod != null)
+ // testMethod.CustomDecorators.Add(new ExpectedExceptionDecorator());
+ //}
+
+ //#endregion
+ }
+
+ /// <summary>
+ /// ExpectedExceptionDecorator applies to a TestCommand and returns
+ /// a success result only if the expected exception is thrown.
+ /// Otherwise, an appropriate failure result is returned.
+ /// </summary>
+ public class ExpectedExceptionDecorator : ICommandDecorator
+ {
+ private ExpectedExceptionData exceptionData;
+
+ /// <summary>
+ /// Construct an ExpectedExceptionDecorator using specified data.
+ /// </summary>
+ /// <param name="exceptionData">Data describing the expected exception</param>
+ public ExpectedExceptionDecorator(ExpectedExceptionData exceptionData)
+ {
+ this.exceptionData = exceptionData;
+ }
+
+ #region ICommandDecorator Members
+
+ CommandStage ICommandDecorator.Stage
+ {
+ get { return CommandStage.BelowSetUpTearDown; }
+ }
+
+ int ICommandDecorator.Priority
+ {
+ get { return 0; }
+ }
+
+ TestCommand ICommandDecorator.Decorate(TestCommand command)
+ {
+ return new ExpectedExceptionCommand(command, exceptionData);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/ExplicitAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/ExplicitAttribute.cs
new file mode 100755
index 0000000..3c466db
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/ExplicitAttribute.cs
@@ -0,0 +1,75 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
+ public class ExplicitAttribute : NUnitAttribute, IApplyToTest
+ {
+ private string reason;
+
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public ExplicitAttribute()
+ {
+ this.reason = "";
+ }
+
+ /// <summary>
+ /// Constructor with a reason
+ /// </summary>
+ /// <param name="reason">The reason test is marked explicit</param>
+ public ExplicitAttribute(string reason)
+ {
+ this.reason = reason;
+ }
+
+ #region IApplyToTest members
+
+ /// <summary>
+ /// Modifies a test by marking it as explicit.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ if (test.RunState != RunState.NotRunnable)
+ {
+ test.RunState = RunState.Explicit;
+ test.Properties.Set(PropertyNames.SkipReason, reason);
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/IgnoreAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/IgnoreAttribute.cs
new file mode 100755
index 0000000..48fdb5a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/IgnoreAttribute.cs
@@ -0,0 +1,75 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Attribute used to mark a test that is to be ignored.
+ /// Ignored tests result in a warning message when the
+ /// tests are run.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method|AttributeTargets.Class|AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
+ public class IgnoreAttribute : NUnitAttribute, IApplyToTest
+ {
+ private string reason;
+
+ /// <summary>
+ /// Constructs the attribute without giving a reason
+ /// for ignoring the test.
+ /// </summary>
+ public IgnoreAttribute()
+ {
+ this.reason = "";
+ }
+
+ /// <summary>
+ /// Constructs the attribute giving a reason for ignoring the test
+ /// </summary>
+ /// <param name="reason">The reason for ignoring the test</param>
+ public IgnoreAttribute(string reason)
+ {
+ this.reason = reason;
+ }
+
+ #region IApplyToTest members
+
+ /// <summary>
+ /// Modifies a test by marking it as Ignored.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ if (test.RunState != RunState.NotRunnable)
+ {
+ test.RunState = RunState.Ignored;
+ test.Properties.Set(PropertyNames.SkipReason, reason);
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/IncludeExcludeAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/IncludeExcludeAttribute.cs
new file mode 100755
index 0000000..762d911
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/IncludeExcludeAttribute.cs
@@ -0,0 +1,83 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Abstract base for Attributes that are used to include tests
+ /// in the test run based on environmental settings.
+ /// </summary>
+ public abstract class IncludeExcludeAttribute : NUnitAttribute
+ {
+ private string include;
+ private string exclude;
+ private string reason;
+
+ /// <summary>
+ /// Constructor with no included items specified, for use
+ /// with named property syntax.
+ /// </summary>
+ public IncludeExcludeAttribute() { }
+
+ /// <summary>
+ /// Constructor taking one or more included items
+ /// </summary>
+ /// <param name="include">Comma-delimited list of included items</param>
+ public IncludeExcludeAttribute( string include )
+ {
+ this.include = include;
+ }
+
+ /// <summary>
+ /// Name of the item that is needed in order for
+ /// a test to run. Multiple itemss may be given,
+ /// separated by a comma.
+ /// </summary>
+ public string Include
+ {
+ get { return this.include; }
+ set { include = value; }
+ }
+
+ /// <summary>
+ /// Name of the item to be excluded. Multiple items
+ /// may be given, separated by a comma.
+ /// </summary>
+ public string Exclude
+ {
+ get { return this.exclude; }
+ set { this.exclude = value; }
+ }
+
+ /// <summary>
+ /// The reason for including or excluding the test
+ /// </summary>
+ public string Reason
+ {
+ get { return reason; }
+ set { reason = value; }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/MaxTimeAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/MaxTimeAttribute.cs
new file mode 100755
index 0000000..4e29722
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/MaxTimeAttribute.cs
@@ -0,0 +1,63 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Summary description for MaxTimeAttribute.
+ /// </summary>
+ [AttributeUsage( AttributeTargets.Method, AllowMultiple=false, Inherited=false )]
+ public sealed class MaxTimeAttribute : PropertyAttribute, ICommandDecorator
+ {
+ /// <summary>
+ /// Construct a MaxTimeAttribute, given a time in milliseconds.
+ /// </summary>
+ /// <param name="milliseconds">The maximum elapsed time in milliseconds</param>
+ public MaxTimeAttribute( int milliseconds )
+ : base( milliseconds ) { }
+
+ #region ICommandDecorator Members
+
+ CommandStage ICommandDecorator.Stage
+ {
+ get { return CommandStage.AboveSetUpTearDown; }
+ }
+
+ int ICommandDecorator.Priority
+ {
+ get { return 0; }
+ }
+
+ TestCommand ICommandDecorator.Decorate(TestCommand command)
+ {
+ return new MaxTimeCommand(command);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/NUnitAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/NUnitAttribute.cs
new file mode 100755
index 0000000..dac58dc
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/NUnitAttribute.cs
@@ -0,0 +1,38 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// The abstract base class for all custom attributes defined by NUnit.
+ /// </summary>
+ public abstract class NUnitAttribute : Attribute
+ {
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public NUnitAttribute() { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/PairwiseAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/PairwiseAttribute.cs
new file mode 100755
index 0000000..73d342c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/PairwiseAttribute.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Marks a test to use a pairwise join of any argument
+ /// data provided. Arguments will be combined in such a
+ /// way that all possible pairs of arguments are used.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=false)]
+ public class PairwiseAttribute : PropertyAttribute
+ {
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public PairwiseAttribute() : base(PropertyNames.JoinType, "Pairwise") { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/PlatformAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/PlatformAttribute.cs
new file mode 100755
index 0000000..4ab68fb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/PlatformAttribute.cs
@@ -0,0 +1,68 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// PlatformAttribute is used to mark a test fixture or an
+ /// individual method as applying to a particular platform only.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Assembly, AllowMultiple = true, Inherited=false)]
+ public class PlatformAttribute : IncludeExcludeAttribute, IApplyToTest
+ {
+ private PlatformHelper platformHelper = new PlatformHelper();
+
+ /// <summary>
+ /// Constructor with no platforms specified, for use
+ /// with named property syntax.
+ /// </summary>
+ public PlatformAttribute() { }
+
+ /// <summary>
+ /// Constructor taking one or more platforms
+ /// </summary>
+ /// <param name="platforms">Comma-deliminted list of platforms</param>
+ public PlatformAttribute(string platforms) : base(platforms) { }
+
+ #region IApplyToTest members
+
+ /// <summary>
+ /// Causes a test to be skipped if this PlatformAttribute is not satisfied.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ if (test.RunState != RunState.NotRunnable && !platformHelper.IsPlatformSupported(this))
+ {
+ test.RunState = RunState.Skipped;
+ test.Properties.Add(PropertyNames.SkipReason, platformHelper.Reason);
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/PropertyAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/PropertyAttribute.cs
new file mode 100755
index 0000000..39a8133
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/PropertyAttribute.cs
@@ -0,0 +1,113 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// PropertyAttribute is used to attach information to a test as a name/value pair..
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true, Inherited=true)]
+ public class PropertyAttribute : NUnitAttribute, IApplyToTest
+ {
+ private PropertyBag properties = new PropertyBag();
+
+ /// <summary>
+ /// Construct a PropertyAttribute with a name and string value
+ /// </summary>
+ /// <param name="propertyName">The name of the property</param>
+ /// <param name="propertyValue">The property value</param>
+ public PropertyAttribute(string propertyName, string propertyValue)
+ {
+ this.properties.Add(propertyName, propertyValue);
+ }
+
+ /// <summary>
+ /// Construct a PropertyAttribute with a name and int value
+ /// </summary>
+ /// <param name="propertyName">The name of the property</param>
+ /// <param name="propertyValue">The property value</param>
+ public PropertyAttribute(string propertyName, int propertyValue)
+ {
+ this.properties.Add(propertyName, propertyValue);
+ }
+
+ /// <summary>
+ /// Construct a PropertyAttribute with a name and double value
+ /// </summary>
+ /// <param name="propertyName">The name of the property</param>
+ /// <param name="propertyValue">The property value</param>
+ public PropertyAttribute(string propertyName, double propertyValue)
+ {
+ this.properties.Add(propertyName, propertyValue);
+ }
+
+ /// <summary>
+ /// Constructor for derived classes that set the
+ /// property dictionary directly.
+ /// </summary>
+ protected PropertyAttribute() { }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ protected PropertyAttribute( object propertyValue )
+ {
+ string propertyName = this.GetType().Name;
+ if ( propertyName.EndsWith( "Attribute" ) )
+ propertyName = propertyName.Substring( 0, propertyName.Length - 9 );
+ this.properties.Add(propertyName, propertyValue);
+ }
+
+ /// <summary>
+ /// Gets the property dictionary for this attribute
+ /// </summary>
+ public IPropertyBag Properties
+ {
+ get { return properties; }
+ }
+
+ #region IApplyToTest Members
+
+ /// <summary>
+ /// Modifies a test by adding properties to it.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public virtual void ApplyToTest(Test test)
+ {
+ foreach (string key in Properties.Keys)
+ foreach(object value in Properties[key])
+ test.Properties.Add(key, value);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/RandomAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/RandomAttribute.cs
new file mode 100755
index 0000000..33813fd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/RandomAttribute.cs
@@ -0,0 +1,126 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// RandomAttribute is used to supply a set of random values
+ /// to a single parameter of a parameterized test.
+ /// </summary>
+ public class RandomAttribute : ValuesAttribute, IParameterDataSource
+ {
+ enum SampleType
+ {
+ Auto,
+ Raw,
+ IntRange,
+ DoubleRange
+ }
+
+ SampleType sampleType;
+ private int count;
+ private int min, max;
+ private double dmin, dmax;
+
+ /// <summary>
+ /// Construct a set of Enums if the type is an Enum otherwise
+ /// Construct a set of doubles from 0.0 to 1.0,
+ /// specifying only the count.
+ /// </summary>
+ /// <param name="count"></param>
+ public RandomAttribute(int count)
+ {
+ this.count = count;
+ this.sampleType = SampleType.Raw;
+ }
+
+ /// <summary>
+ /// Construct a set of doubles from min to max
+ /// </summary>
+ /// <param name="min"></param>
+ /// <param name="max"></param>
+ /// <param name="count"></param>
+ public RandomAttribute(double min, double max, int count)
+ {
+ this.count = count;
+ this.dmin = min;
+ this.dmax = max;
+ this.sampleType = SampleType.DoubleRange;
+ }
+
+ /// <summary>
+ /// Construct a set of ints from min to max
+ /// </summary>
+ /// <param name="min"></param>
+ /// <param name="max"></param>
+ /// <param name="count"></param>
+ public RandomAttribute(int min, int max, int count)
+ {
+ this.count = count;
+ this.min = min;
+ this.max = max;
+ this.sampleType = SampleType.IntRange;
+ }
+
+ /// <summary>
+ /// Get the collection of values to be used as arguments
+ /// </summary>
+ public new IEnumerable GetData(ParameterInfo parameter)
+ {
+ Randomizer r = Randomizer.GetRandomizer(parameter);
+ IList values;
+
+ switch (sampleType)
+ {
+ default:
+ case SampleType.Raw:
+ if (parameter.ParameterType.IsEnum)
+ values = r.GetEnums(count,parameter.ParameterType);
+ else
+ values = r.GetDoubles(count);
+ break;
+ case SampleType.IntRange:
+ values = r.GetInts(min, max, count);
+ break;
+ case SampleType.DoubleRange:
+ values = r.GetDoubles(dmin, dmax, count);
+ break;
+ }
+
+ // Copy the random values into the data array
+ // and call the base class which may need to
+ // convert them to another type.
+ this.data = new object[values.Count];
+ for (int i = 0; i < values.Count; i++)
+ this.data[i] = values[i];
+
+ return base.GetData(parameter);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/RangeAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/RangeAttribute.cs
new file mode 100755
index 0000000..0425298
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/RangeAttribute.cs
@@ -0,0 +1,104 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// RangeAttribute is used to supply a range of values to an
+ /// individual parameter of a parameterized test.
+ /// </summary>
+ public class RangeAttribute : ValuesAttribute
+ {
+ /// <summary>
+ /// Construct a range of ints using default step of 1
+ /// </summary>
+ /// <param name="from"></param>
+ /// <param name="to"></param>
+ public RangeAttribute(int from, int to) : this(from, to, 1) { }
+
+ /// <summary>
+ /// Construct a range of ints specifying the step size
+ /// </summary>
+ /// <param name="from"></param>
+ /// <param name="to"></param>
+ /// <param name="step"></param>
+ public RangeAttribute(int from, int to, int step)
+ {
+ int count = (to - from) / step + 1;
+ this.data = new object[count];
+ int index = 0;
+ for (int val = from; index < count; val += step)
+ this.data[index++] = val;
+ }
+
+ /// <summary>
+ /// Construct a range of longs
+ /// </summary>
+ /// <param name="from"></param>
+ /// <param name="to"></param>
+ /// <param name="step"></param>
+ public RangeAttribute(long from, long to, long step)
+ {
+ long count = (to - from) / step + 1;
+ this.data = new object[count];
+ int index = 0;
+ for (long val = from; index < count; val += step)
+ this.data[index++] = val;
+ }
+
+ /// <summary>
+ /// Construct a range of doubles
+ /// </summary>
+ /// <param name="from"></param>
+ /// <param name="to"></param>
+ /// <param name="step"></param>
+ public RangeAttribute(double from, double to, double step)
+ {
+ double tol = step / 1000;
+ int count = (int)((to - from) / step + tol + 1);
+ this.data = new object[count];
+ int index = 0;
+ for (double val = from; index < count; val += step)
+ this.data[index++] = val;
+ }
+
+ /// <summary>
+ /// Construct a range of floats
+ /// </summary>
+ /// <param name="from"></param>
+ /// <param name="to"></param>
+ /// <param name="step"></param>
+ public RangeAttribute(float from, float to, float step)
+ {
+ float tol = step / 1000;
+ int count = (int)((to - from) / step + tol + 1);
+ this.data = new object[count];
+ int index = 0;
+ for (float val = from; index < count; val += step)
+ this.data[index++] = val;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/RepeatAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/RepeatAttribute.cs
new file mode 100755
index 0000000..91a7a7d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/RepeatAttribute.cs
@@ -0,0 +1,90 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if false
+// TODO: Rework this
+// RepeatAttribute should either
+// 1) Apply at load time to create the exact number of tests, or
+// 2) Apply at run time, generating tests or results dynamically
+//
+// #1 is feasible but doesn't provide much benefit
+// #2 requires infrastructure for dynamic test cases first
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal.Commands;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// RepeatAttribute may be applied to test case in order
+ /// to run it multiple times.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
+ public class RepeatAttribute : PropertyAttribute, ICommandDecorator
+ {
+ /// <summary>
+ /// Construct a RepeatAttribute
+ /// </summary>
+ /// <param name="count">The number of times to run the test</param>
+ public RepeatAttribute(int count) : base(count) { }
+
+ //private int count;
+
+ ///// <summary>
+ ///// Construct a RepeatAttribute
+ ///// </summary>
+ ///// <param name="count">The number of times to run the test</param>
+ //public RepeatAttribute(int count)
+ //{
+ // this.count = count;
+ //}
+
+ ///// <summary>
+ ///// Gets the number of times to run the test.
+ ///// </summary>
+ //public int Count
+ //{
+ // get { return count; }
+ //}
+
+ #region ICommandDecorator Members
+
+ CommandStage ICommandDecorator.Stage
+ {
+ get { return CommandStage.Repeat; }
+ }
+
+ int ICommandDecorator.Priority
+ {
+ get { return 0; }
+ }
+
+ TestCommand ICommandDecorator.Decorate(TestCommand command)
+ {
+ return new RepeatedTestCommand(command);
+ }
+
+ #endregion
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/SequentialAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/SequentialAttribute.cs
new file mode 100755
index 0000000..f8a8da3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/SequentialAttribute.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Marks a test to use a Sequential join of any argument
+ /// data provided. Arguments will be combined into test cases,
+ /// taking the next value of each argument until all are used.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=false)]
+ public class SequentialAttribute : PropertyAttribute
+ {
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public SequentialAttribute() : base(PropertyNames.JoinType, "Sequential") { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/SetCultureAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/SetCultureAttribute.cs
new file mode 100755
index 0000000..47a6725
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/SetCultureAttribute.cs
@@ -0,0 +1,55 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Summary description for SetCultureAttribute.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false, Inherited=true)]
+ public class SetCultureAttribute : PropertyAttribute, IApplyToContext
+ {
+ private string _culture;
+
+ /// <summary>
+ /// Construct given the name of a culture
+ /// </summary>
+ /// <param name="culture"></param>
+ public SetCultureAttribute( string culture ) : base( PropertyNames.SetCulture, culture )
+ {
+ _culture = culture;
+ }
+
+ #region IApplyToContext Members
+
+ void IApplyToContext.ApplyToContext(TestExecutionContext context)
+ {
+ context.CurrentCulture = new System.Globalization.CultureInfo(_culture);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/SetUICultureAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/SetUICultureAttribute.cs
new file mode 100755
index 0000000..cf514b8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/SetUICultureAttribute.cs
@@ -0,0 +1,55 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Summary description for SetUICultureAttribute.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Assembly, AllowMultiple = false, Inherited=true)]
+ public class SetUICultureAttribute : PropertyAttribute, IApplyToContext
+ {
+ private string _culture;
+
+ /// <summary>
+ /// Construct given the name of a culture
+ /// </summary>
+ /// <param name="culture"></param>
+ public SetUICultureAttribute(string culture) : base("SetUICulture", culture)
+ {
+ _culture = culture;
+ }
+
+ #region IApplyToContext Members
+
+ void IApplyToContext.ApplyToContext(TestExecutionContext context)
+ {
+ context.CurrentUICulture = new System.Globalization.CultureInfo(_culture);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/SetUpAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/SetUpAttribute.cs
new file mode 100755
index 0000000..e7f45dd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/SetUpAttribute.cs
@@ -0,0 +1,54 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=true)]
+ public class SetUpAttribute : NUnitAttribute
+ { }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=true)]
+ public class PreTestAttribute : NUnitAttribute
+ { }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=true)]
+ public class PostTestAttribute : NUnitAttribute
+ { }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TearDownAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TearDownAttribute.cs
new file mode 100755
index 0000000..c16b903
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TearDownAttribute.cs
@@ -0,0 +1,36 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=true)]
+ public class TearDownAttribute : NUnitAttribute
+ {}
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TestAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TestAttribute.cs
new file mode 100755
index 0000000..b92e45e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TestAttribute.cs
@@ -0,0 +1,79 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+ using NUnit.Framework.Api;
+ using NUnit.Framework.Internal;
+
+ /// <summary>
+ /// Adding this attribute to a method within a <seealso cref="TestFixtureAttribute"/>
+ /// 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.
+ /// </summary>
+ ///
+ /// <example>
+ /// [TestFixture]
+ /// public class Fixture
+ /// {
+ /// [Test]
+ /// public void MethodToTest()
+ /// {}
+ ///
+ /// [Test(Description = "more detailed description")]
+ /// publc void TestDescriptionMethod()
+ /// {}
+ /// }
+ /// </example>
+ ///
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=true)]
+ public class TestAttribute : NUnitAttribute, IApplyToTest
+ {
+ private string description;
+
+ /// <summary>
+ /// Descriptive text for this test
+ /// </summary>
+ public string Description
+ {
+ get { return description; }
+ set { description = value; }
+ }
+
+ #region IApplyToTest Members
+
+ /// <summary>
+ /// Modifies a test by adding a description, if not already set.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ if (!test.Properties.ContainsKey(PropertyNames.Description) && description != null)
+ test.Properties.Set(PropertyNames.Description, description);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TestCaseAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TestCaseAttribute.cs
new file mode 100755
index 0000000..92e86a7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TestCaseAttribute.cs
@@ -0,0 +1,446 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// TestCaseAttribute is used to mark parameterized test cases
+ /// and provide them with their arguments.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited=false)]
+ public class TestCaseAttribute : DataAttribute, ITestCaseData, ITestCaseSource
+ {
+ #region Instance variables
+
+ private object[] arguments;
+ // NOTE: Ignore unsupressed warning about exceptionData in .NET 1.1 build
+ private ExpectedExceptionData exceptionData;
+ private object expectedResult;
+ private bool hasExpectedResult;
+ private IPropertyBag properties;
+ private RunState runState;
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Construct a TestCaseAttribute with a list of arguments.
+ /// This constructor is not CLS-Compliant
+ /// </summary>
+ /// <param name="arguments"></param>
+ public TestCaseAttribute(params object[] arguments)
+ {
+ this.runState = RunState.Runnable;
+
+ if (arguments == null)
+ this.arguments = new object[] { null };
+ else
+ this.arguments = arguments;
+ }
+
+ /// <summary>
+ /// Construct a TestCaseAttribute with a single argument
+ /// </summary>
+ /// <param name="arg"></param>
+ public TestCaseAttribute(object arg)
+ {
+ this.runState = RunState.Runnable;
+ this.arguments = new object[] { arg };
+ }
+
+ /// <summary>
+ /// Construct a TestCaseAttribute with a two arguments
+ /// </summary>
+ /// <param name="arg1"></param>
+ /// <param name="arg2"></param>
+ public TestCaseAttribute(object arg1, object arg2)
+ {
+ this.runState = RunState.Runnable;
+ this.arguments = new object[] { arg1, arg2 };
+ }
+
+ /// <summary>
+ /// Construct a TestCaseAttribute with a three arguments
+ /// </summary>
+ /// <param name="arg1"></param>
+ /// <param name="arg2"></param>
+ /// <param name="arg3"></param>
+ public TestCaseAttribute(object arg1, object arg2, object arg3)
+ {
+ this.runState = RunState.Runnable;
+ this.arguments = new object[] { arg1, arg2, arg3 };
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the list of arguments to a test case
+ /// </summary>
+ public object[] Arguments
+ {
+ get { return arguments; }
+ }
+
+ /// <summary>
+ /// Gets or sets the expected result.
+ /// </summary>
+ /// <value>The result.</value>
+ public object ExpectedResult
+ {
+ get { return expectedResult; }
+ set
+ {
+ expectedResult = value;
+ hasExpectedResult = true;
+ }
+ }
+
+ /// <summary>
+ /// Gets the expected result (alias for use
+ /// by NUnit 2.6.x runners and for use
+ /// in legacy code. Remove the setter
+ /// after a time.)
+ /// </summary>
+ [Obsolete("Use ExpectedResult")]
+ public object Result
+ {
+ get { return ExpectedResult; }
+ set { ExpectedResult = value; }
+ }
+
+ /// <summary>
+ /// Returns true if the expected result has been set
+ /// </summary>
+ public bool HasExpectedResult
+ {
+ get { return hasExpectedResult; }
+ }
+
+ /// <summary>
+ /// Gets data about any expected exception for this test case.
+ /// </summary>
+ public ExpectedExceptionData ExceptionData
+ {
+ get { return exceptionData; }
+ }
+
+ /// <summary>
+ /// Gets or sets the expected exception.
+ /// </summary>
+ /// <value>The expected exception.</value>
+ public Type ExpectedException
+ {
+ get { return exceptionData.ExpectedExceptionType; }
+ set { exceptionData.ExpectedExceptionType = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the name the expected exception.
+ /// </summary>
+ /// <value>The expected name of the exception.</value>
+ public string ExpectedExceptionName
+ {
+ get { return exceptionData.ExpectedExceptionName; }
+ set { exceptionData.ExpectedExceptionName = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the expected message of the expected exception
+ /// </summary>
+ /// <value>The expected message of the exception.</value>
+ public string ExpectedMessage
+ {
+ get { return exceptionData.ExpectedMessage; }
+ set { exceptionData.ExpectedMessage = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the type of match to be performed on the expected message
+ /// </summary>
+ public MessageMatch MatchType
+ {
+ get { return exceptionData.MatchType; }
+ set { exceptionData.MatchType = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the description.
+ /// </summary>
+ /// <value>The description.</value>
+ public string Description
+ {
+ get { return this.Properties.Get(PropertyNames.Description) as string; }
+ set { this.Properties.Set(PropertyNames.Description, value); }
+ }
+
+ private string testName;
+ /// <summary>
+ /// Gets or sets the name of the test.
+ /// </summary>
+ /// <value>The name of the test.</value>
+ public string TestName
+ {
+ get { return testName; }
+ set { testName = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the ignored status of the test
+ /// </summary>
+ public bool Ignore
+ {
+ get { return this.RunState == RunState.Ignored; }
+ set { this.runState = value ? RunState.Ignored : RunState.Runnable; }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this <see cref="NUnit.Framework.TestCaseAttribute"/> is explicit.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if explicit; otherwise, <c>false</c>.
+ /// </value>
+ public bool Explicit
+ {
+ get { return this.RunState == RunState.Explicit; }
+ set { this.runState = value ? RunState.Explicit : RunState.Runnable; }
+ }
+
+ /// <summary>
+ /// Gets the RunState of this test case.
+ /// </summary>
+ public RunState RunState
+ {
+ get { return runState; }
+ }
+
+ /// <summary>
+ /// Gets or sets the reason for not running the test.
+ /// </summary>
+ /// <value>The reason.</value>
+ public string Reason
+ {
+ get { return this.Properties.Get(PropertyNames.SkipReason) as string; }
+ set { this.Properties.Set(PropertyNames.SkipReason, value); }
+ }
+
+ /// <summary>
+ /// Gets or sets the ignore reason. When set to a non-null
+ /// non-empty value, the test is marked as ignored.
+ /// </summary>
+ /// <value>The ignore reason.</value>
+ public string IgnoreReason
+ {
+ get { return this.Reason; }
+ set
+ {
+ this.runState = RunState.Ignored;
+ this.Reason = value;
+ }
+ }
+
+ /// <summary>
+ /// Gets and sets the category for this fixture.
+ /// May be a comma-separated list of categories.
+ /// </summary>
+ public string Category
+ {
+ get { return Properties.Get(PropertyNames.Category) as string; }
+ set
+ {
+ foreach (string cat in value.Split(new char[] { ',' }) )
+ Properties.Add(PropertyNames.Category, cat);
+ }
+ }
+
+ /// <summary>
+ /// Gets a list of categories for this fixture
+ /// </summary>
+ public IList Categories
+ {
+ get { return Properties[PropertyNames.Category] as IList; }
+ }
+
+ /// <summary>
+ /// NYI
+ /// </summary>
+ public IPropertyBag Properties
+ {
+ get
+ {
+ if (properties == null)
+ properties = new PropertyBag();
+
+ return properties;
+ }
+ }
+
+ #endregion
+
+ #region ITestCaseSource Members
+
+ /// <summary>
+ /// Returns an collection containing a single ITestCaseData item,
+ /// constructed from the arguments provided in the constructor and
+ /// possibly converted to match the specified method.
+ /// </summary>
+ /// <param name="method">The method for which data is being provided</param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ public System.Collections.Generic.IEnumerable<ITestCaseData> GetTestCasesFor(System.Reflection.MethodInfo method)
+#else
+ public System.Collections.IEnumerable GetTestCasesFor(System.Reflection.MethodInfo method)
+#endif
+ {
+ ParameterSet parms;
+
+ try
+ {
+ ParameterInfo[] parameters = method.GetParameters();
+ int argsNeeded = parameters.Length;
+ int argsProvided = Arguments.Length;
+
+ parms = new ParameterSet(this);
+
+ // Special handling for params arguments
+ if (argsNeeded > 0 && argsProvided >= argsNeeded - 1)
+ {
+ ParameterInfo lastParameter = parameters[argsNeeded - 1];
+ Type lastParameterType = lastParameter.ParameterType;
+ Type elementType = lastParameterType.GetElementType();
+
+ if (lastParameterType.IsArray && lastParameter.IsDefined(typeof(ParamArrayAttribute), false))
+ {
+ if (argsProvided == argsNeeded)
+ {
+ Type lastArgumentType = parms.Arguments[argsProvided - 1].GetType();
+ if (!lastParameterType.IsAssignableFrom(lastArgumentType))
+ {
+ Array array = Array.CreateInstance(elementType, 1);
+ array.SetValue(parms.Arguments[argsProvided - 1], 0);
+ parms.Arguments[argsProvided - 1] = array;
+ }
+ }
+ else
+ {
+ object[] newArglist = new object[argsNeeded];
+ for (int i = 0; i < argsNeeded && i < argsProvided; i++)
+ newArglist[i] = parms.Arguments[i];
+
+ int length = argsProvided - argsNeeded + 1;
+ Array array = Array.CreateInstance(elementType, length);
+ for (int i = 0; i < length; i++)
+ array.SetValue(parms.Arguments[argsNeeded + i - 1], i);
+
+ newArglist[argsNeeded - 1] = array;
+ parms.Arguments = newArglist;
+ argsProvided = argsNeeded;
+ }
+ }
+ }
+
+ //if (method.GetParameters().Length == 1 && method.GetParameters()[0].ParameterType == typeof(object[]))
+ // parms.Arguments = new object[]{parms.Arguments};
+
+ // Special handling when sole argument is an object[]
+ if (argsNeeded == 1 && method.GetParameters()[0].ParameterType == typeof(object[]))
+ {
+ if (argsProvided > 1 ||
+ argsProvided == 1 && parms.Arguments[0].GetType() != typeof(object[]))
+ {
+ parms.Arguments = new object[] { parms.Arguments };
+ }
+ }
+
+ if (argsProvided == argsNeeded)
+ PerformSpecialConversions(parms.Arguments, parameters);
+ }
+ catch (Exception ex)
+ {
+ parms = new ParameterSet(ex);
+ }
+
+ return new ITestCaseData[] { parms };
+ }
+
+ #endregion
+
+ #region Helper Methods
+ /// <summary>
+ /// Performs several special conversions allowed by NUnit in order to
+ /// permit arguments with types that cannot be used in the constructor
+ /// of an Attribute such as TestCaseAttribute or to simplify their use.
+ /// </summary>
+ /// <param name="arglist">The arguments to be converted</param>
+ /// <param name="parameters">The ParameterInfo array for the method</param>
+ private static void PerformSpecialConversions(object[] arglist, ParameterInfo[] parameters)
+ {
+ for (int i = 0; i < arglist.Length; i++)
+ {
+ object arg = arglist[i];
+ Type targetType = parameters[i].ParameterType;
+
+ if (arg == null)
+ continue;
+
+ if (arg is SpecialValue && (SpecialValue)arg == SpecialValue.Null)
+ {
+ arglist[i] = null;
+ continue;
+ }
+
+ if (targetType.IsAssignableFrom(arg.GetType()))
+ continue;
+
+ if (arg is DBNull)
+ {
+ arglist[i] = null;
+ continue;
+ }
+
+ bool convert = false;
+
+ if (targetType == typeof(short) || targetType == typeof(byte) || targetType == typeof(sbyte))
+ convert = arg is int;
+ else
+ if (targetType == typeof(decimal))
+ convert = arg is double || arg is string || arg is int;
+ else
+ if (targetType == typeof(DateTime) || targetType == typeof(TimeSpan))
+ convert = arg is string;
+
+ if (convert)
+ arglist[i] = Convert.ChangeType(arg, targetType, System.Globalization.CultureInfo.InvariantCulture);
+ }
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TestCaseSourceAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TestCaseSourceAttribute.cs
new file mode 100755
index 0000000..a2e9ef5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TestCaseSourceAttribute.cs
@@ -0,0 +1,212 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// TestCaseSourceAttribute indicates the source to be used to
+ /// provide test cases for a test method.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
+ public class TestCaseSourceAttribute : DataAttribute, ITestCaseSource
+ {
+ private readonly string sourceName;
+ private readonly Type sourceType;
+
+ /// <summary>
+ /// Construct with the name of the method, property or field that will prvide data
+ /// </summary>
+ /// <param name="sourceName">The name of the method, property or field that will provide data</param>
+ public TestCaseSourceAttribute(string sourceName)
+ {
+ this.sourceName = sourceName;
+ }
+
+ /// <summary>
+ /// Construct with a Type and name
+ /// </summary>
+ /// <param name="sourceType">The Type that will provide data</param>
+ /// <param name="sourceName">The name of the method, property or field that will provide data</param>
+ public TestCaseSourceAttribute(Type sourceType, string sourceName)
+ {
+ this.sourceType = sourceType;
+ this.sourceName = sourceName;
+ }
+
+ /// <summary>
+ /// Construct with a Type
+ /// </summary>
+ /// <param name="sourceType">The type that will provide data</param>
+ public TestCaseSourceAttribute(Type sourceType)
+ {
+ this.sourceType = sourceType;
+ }
+
+ /// <summary>
+ /// The name of a the method, property or fiend to be used as a source
+ /// </summary>
+ public string SourceName
+ {
+ get { return sourceName; }
+ }
+
+ /// <summary>
+ /// A Type to be used as a source
+ /// </summary>
+ public Type SourceType
+ {
+ get { return sourceType; }
+ }
+
+ private string category;
+ /// <summary>
+ /// Gets or sets the category associated with this test.
+ /// May be a single category or a comma-separated list.
+ /// </summary>
+ public string Category
+ {
+ get { return category; }
+ set { category = value; }
+ }
+
+ #region ITestCaseSource Members
+ /// <summary>
+ /// Returns a set of ITestCaseDataItems for use as arguments
+ /// to a parameterized test method.
+ /// </summary>
+ /// <param name="method">The method for which data is needed.</param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ public IEnumerable<ITestCaseData> GetTestCasesFor(MethodInfo method)
+ {
+ List<ITestCaseData> data = new List<ITestCaseData>();
+#else
+ public IEnumerable GetTestCasesFor(MethodInfo method)
+ {
+ ArrayList data = new ArrayList();
+#endif
+ IEnumerable source = GetTestCaseSource(method);
+
+ if (source != null)
+ {
+ ParameterInfo[] parameters = method.GetParameters();
+
+ foreach (object item in source)
+ {
+ ParameterSet parms = new ParameterSet();
+ ITestCaseData testCaseData = item as ITestCaseData;
+
+ if (testCaseData != null)
+ parms = new ParameterSet(testCaseData);
+ else if (item is object[])
+ {
+ object[] array = item as object[];
+ parms.Arguments = array.Length == parameters.Length
+ ? array
+ : new object[] { item };
+ }
+ //else if (parameters.Length == 1 && parameters[0].ParameterType.IsAssignableFrom(item.GetType()))
+ //{
+ // parms.Arguments = new object[] { item };
+ //}
+ else if (item is Array)
+ {
+ Array array = item as Array;
+
+ if (array.Rank == 1 && array.Length == parameters.Length)
+ {
+ parms.Arguments = new object[array.Length];
+ for (int i = 0; i < array.Length; i++)
+ parms.Arguments[i] = (object)array.GetValue(i);
+ }
+ else
+ {
+ parms.Arguments = new object[] { item };
+ }
+ }
+ else
+ {
+ parms.Arguments = new object[] { item };
+ }
+
+ if (this.Category != null)
+ foreach (string cat in this.Category.Split(new char[] { ',' }))
+ parms.Properties.Add(PropertyNames.Category, cat);
+
+ data.Add(parms);
+ }
+ }
+
+ return data;
+ }
+
+ private IEnumerable GetTestCaseSource(MethodInfo method)
+ {
+ IEnumerable source = null;
+
+ Type sourceType = this.sourceType;
+ if (sourceType == null)
+ sourceType = method.ReflectedType;
+
+ if (this.sourceName == null)
+ {
+ return Reflect.Construct(sourceType) as IEnumerable;
+ }
+
+ MemberInfo[] members = sourceType.GetMember(sourceName,
+ BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
+ if (members.Length == 1)
+ {
+ MemberInfo member = members[0];
+ object sourceobject = Internal.Reflect.Construct(sourceType);
+ switch (member.MemberType)
+ {
+ case MemberTypes.Field:
+ FieldInfo field = member as FieldInfo;
+ source = (IEnumerable)field.GetValue(sourceobject);
+ break;
+ case MemberTypes.Property:
+ PropertyInfo property = member as PropertyInfo;
+ source = (IEnumerable)property.GetValue(sourceobject, null);
+ break;
+ case MemberTypes.Method:
+ MethodInfo m = member as MethodInfo;
+ source = (IEnumerable)m.Invoke(sourceobject, null);
+ break;
+ }
+ }
+ return source;
+ }
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureAttribute.cs
new file mode 100755
index 0000000..25f6dd7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureAttribute.cs
@@ -0,0 +1,202 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <example>
+ /// [TestFixture]
+ /// public class ExampleClass
+ /// {}
+ /// </example>
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
+ public class TestFixtureAttribute : NUnitAttribute, IApplyToTest
+ {
+ private string description;
+
+ private object[] originalArgs;
+ private object[] constructorArgs;
+ private Type[] typeArgs;
+ private bool argsInitialized;
+
+ private bool isIgnored;
+ private string ignoreReason;
+ private string category;
+
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ public TestFixtureAttribute() : this( null ) { }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="arguments"></param>
+ public TestFixtureAttribute(params object[] arguments)
+ {
+ this.originalArgs = arguments == null
+ ? new object[0]
+ : arguments;
+ this.constructorArgs = this.originalArgs;
+ this.typeArgs = new Type[0];
+ }
+
+ /// <summary>
+ /// Descriptive text for this fixture
+ /// </summary>
+ public string Description
+ {
+ get { return description; }
+ set { description = value; }
+ }
+
+ /// <summary>
+ /// The arguments originally provided to the attribute
+ /// </summary>
+ public object[] Arguments
+ {
+ get
+ {
+ if (!argsInitialized)
+ InitializeArgs();
+ return constructorArgs;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this <see cref="TestFixtureAttribute"/> should be ignored.
+ /// </summary>
+ /// <value><c>true</c> if ignore; otherwise, <c>false</c>.</value>
+ public bool Ignore
+ {
+ get { return isIgnored; }
+ set { isIgnored = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the ignore reason. May set Ignored as a side effect.
+ /// </summary>
+ /// <value>The ignore reason.</value>
+ public string IgnoreReason
+ {
+ get { return ignoreReason; }
+ set
+ {
+ ignoreReason = value;
+ isIgnored = ignoreReason != null && ignoreReason != string.Empty;
+ }
+ }
+
+ /// <summary>
+ /// Get or set the type arguments. If not set
+ /// explicitly, any leading arguments that are
+ /// Types are taken as type arguments.
+ /// </summary>
+ public Type[] TypeArgs
+ {
+ get
+ {
+ if (!argsInitialized)
+ InitializeArgs();
+ return typeArgs;
+ }
+ set
+ {
+ typeArgs = value;
+ argsInitialized = true;
+ }
+ }
+
+ /// <summary>
+ /// Gets and sets the category for this fixture.
+ /// May be a comma-separated list of categories.
+ /// </summary>
+ public string Category
+ {
+ get { return category; }
+ set { category = value; }
+ }
+
+ /// <summary>
+ /// Gets a list of categories for this fixture
+ /// </summary>
+ public IList Categories
+ {
+ get { return category == null ? null : category.Split(','); }
+ }
+
+ /// <summary>
+ /// Helper method to split the original argument list
+ /// into type arguments and constructor arguments.
+ /// This action has to be delayed rather than done in
+ /// the constructor, since TypeArgs may be set by
+ /// menas of a named parameter.
+ /// </summary>
+ private void InitializeArgs()
+ {
+ int typeArgCount = 0;
+
+ if (this.originalArgs != null)
+ {
+ foreach (object o in this.originalArgs)
+ if (o is Type) typeArgCount++;
+ else break;
+ }
+
+ this.typeArgs = new Type[typeArgCount];
+ for (int i = 0; i < typeArgCount; i++)
+ this.typeArgs[i] = (Type)this.originalArgs[i];
+
+ int constructorArgCount = originalArgs.Length - typeArgCount;
+ this.constructorArgs = new object[constructorArgCount];
+ for (int i = 0; i < constructorArgCount; i++)
+ this.constructorArgs[i] = this.originalArgs[typeArgCount + i];
+
+ argsInitialized = true;
+ }
+
+ #region IApplyToTest Members
+
+ /// <summary>
+ /// Modifies a test by adding a description, if not already set.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ public void ApplyToTest(Test test)
+ {
+ if (!test.Properties.ContainsKey(PropertyNames.Description) && description != null)
+ test.Properties.Set(PropertyNames.Description, description);
+
+ if (category != null)
+ foreach (string cat in category.Split(new char[] { ',' }) )
+ test.Properties.Add(PropertyNames.Category, cat);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureSetUpAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureSetUpAttribute.cs
new file mode 100755
index 0000000..57116a6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureSetUpAttribute.cs
@@ -0,0 +1,36 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// Attribute used to identify a method that is
+ /// called before any tests in a fixture are run.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=true)]
+ public class TestFixtureSetUpAttribute : NUnitAttribute
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureTearDownAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureTearDownAttribute.cs
new file mode 100755
index 0000000..27feb84
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TestFixtureTearDownAttribute.cs
@@ -0,0 +1,37 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=true)]
+ public class TestFixtureTearDownAttribute : NUnitAttribute
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TheoryAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TheoryAttribute.cs
new file mode 100755
index 0000000..aed00d1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TheoryAttribute.cs
@@ -0,0 +1,63 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// Adding this attribute to a method within a <seealso cref="TestFixtureAttribute"/>
+ /// 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.
+ /// </summary>
+ ///
+ /// <example>
+ /// [TestFixture]
+ /// public class Fixture
+ /// {
+ /// [Test]
+ /// public void MethodToTest()
+ /// {}
+ ///
+ /// [Test(Description = "more detailed description")]
+ /// publc void TestDescriptionMethod()
+ /// {}
+ /// }
+ /// </example>
+ ///
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited=true)]
+ public class TheoryAttribute : NUnitAttribute
+ {
+ //private string description;
+
+ ///// <summary>
+ ///// Descriptive text for this test
+ ///// </summary>
+ //public string Description
+ //{
+ // get { return description; }
+ // set { description = value; }
+ //}
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/TimeoutAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/TimeoutAttribute.cs
new file mode 100755
index 0000000..d4a09a3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/TimeoutAttribute.cs
@@ -0,0 +1,60 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+using System;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Used on a method, marks the test with a timeout value in milliseconds.
+ /// The test will be run in a separate thread and is cancelled if the timeout
+ /// is exceeded. Used on a class or assembly, sets the default timeout
+ /// for all contained test methods.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly, AllowMultiple = false, Inherited=false)]
+ public class TimeoutAttribute : PropertyAttribute, IApplyToContext
+ {
+ private int _timeout;
+
+ /// <summary>
+ /// Construct a TimeoutAttribute given a time in milliseconds
+ /// </summary>
+ /// <param name="timeout">The timeout value in milliseconds</param>
+ public TimeoutAttribute(int timeout)
+ : base(timeout)
+ {
+ _timeout = timeout;
+ }
+
+ void IApplyToContext.ApplyToContext(TestExecutionContext context)
+ {
+ context.TestCaseTimeout = _timeout;
+ }
+ }
+}
+#endif
+
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/ValueSourceAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/ValueSourceAttribute.cs
new file mode 100755
index 0000000..24d3d96
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/ValueSourceAttribute.cs
@@ -0,0 +1,146 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// ValueSourceAttribute indicates the source to be used to
+ /// provide data for one parameter of a test method.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = false)]
+ public class ValueSourceAttribute : DataAttribute, Api.IParameterDataSource
+ {
+ private readonly string sourceName;
+ private readonly Type sourceType;
+
+ /// <summary>
+ /// Construct with the name of the factory - for use with languages
+ /// that don't support params arrays.
+ /// </summary>
+ /// <param name="sourceName">The name of the data source to be used</param>
+ public ValueSourceAttribute(string sourceName)
+ {
+ this.sourceName = sourceName;
+ }
+
+ /// <summary>
+ /// Construct with a Type and name - for use with languages
+ /// that don't support params arrays.
+ /// </summary>
+ /// <param name="sourceType">The Type that will provide data</param>
+ /// <param name="sourceName">The name of the method, property or field that will provide data</param>
+ public ValueSourceAttribute(Type sourceType, string sourceName)
+ {
+ this.sourceType = sourceType;
+ this.sourceName = sourceName;
+ }
+
+ /// <summary>
+ /// The name of a the method, property or fiend to be used as a source
+ /// </summary>
+ public string SourceName
+ {
+ get { return sourceName; }
+ }
+
+ /// <summary>
+ /// A Type to be used as a source
+ /// </summary>
+ public Type SourceType
+ {
+ get { return sourceType; }
+ }
+
+ #region IParameterDataSource Members
+
+ /// <summary>
+ /// Gets an enumeration of data items for use as arguments
+ /// for a test method parameter.
+ /// </summary>
+ /// <param name="parameter">The parameter for which data is needed</param>
+ /// <returns>
+ /// An enumeration containing individual data items
+ /// </returns>
+ public IEnumerable GetData(ParameterInfo parameter)
+ {
+ ObjectList data = new ObjectList();
+ IEnumerable source = GetDataSource(parameter);
+
+ if (source != null)
+ foreach (object item in source)
+ data.Add(item);
+
+ return source;
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private IEnumerable GetDataSource(ParameterInfo parameter)
+ {
+ IEnumerable source = null;
+
+ Type sourceType = this.sourceType;
+ if (sourceType == null)
+ sourceType = parameter.Member.ReflectedType;
+
+ // TODO: Test this
+ if (this.sourceName == null)
+ {
+ return Reflect.Construct(sourceType) as IEnumerable;
+ }
+
+ MemberInfo[] members = sourceType.GetMember(sourceName,
+ BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
+ if (members.Length == 1)
+ {
+ MemberInfo member = members[0];
+ object sourceobject = Internal.Reflect.Construct(sourceType);
+ switch (member.MemberType)
+ {
+ case MemberTypes.Field:
+ FieldInfo field = member as FieldInfo;
+ source = (IEnumerable)field.GetValue(sourceobject);
+ break;
+ case MemberTypes.Property:
+ PropertyInfo property = member as PropertyInfo;
+ source = (IEnumerable)property.GetValue(sourceobject, null);
+ break;
+ case MemberTypes.Method:
+ MethodInfo m = member as MethodInfo;
+ source = (IEnumerable)m.Invoke(sourceobject, null);
+ break;
+ }
+ }
+ return source;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Attributes/ValuesAttribute.cs b/NUnitLite-0.9.0/src/framework/Attributes/ValuesAttribute.cs
new file mode 100755
index 0000000..bd5c119
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Attributes/ValuesAttribute.cs
@@ -0,0 +1,134 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// ValuesAttribute is used to provide literal arguments for
+ /// an individual parameter of a test.
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
+ public class ValuesAttribute : DataAttribute, Api.IParameterDataSource
+ {
+ /// <summary>
+ /// 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
+ /// </summary>
+ // TODO: This causes a lot of boxing so we should eliminate it
+ protected object[] data;
+
+ /// <summary>
+ /// Construct with one argument
+ /// </summary>
+ /// <param name="arg1"></param>
+ public ValuesAttribute(object arg1)
+ {
+ data = new object[] { arg1 };
+ }
+
+ /// <summary>
+ /// Construct with two arguments
+ /// </summary>
+ /// <param name="arg1"></param>
+ /// <param name="arg2"></param>
+ public ValuesAttribute(object arg1, object arg2)
+ {
+ data = new object[] { arg1, arg2 };
+ }
+
+ /// <summary>
+ /// Construct with three arguments
+ /// </summary>
+ /// <param name="arg1"></param>
+ /// <param name="arg2"></param>
+ /// <param name="arg3"></param>
+ public ValuesAttribute(object arg1, object arg2, object arg3)
+ {
+ data = new object[] { arg1, arg2, arg3 };
+ }
+
+ /// <summary>
+ /// Construct with an array of arguments
+ /// </summary>
+ /// <param name="args"></param>
+ public ValuesAttribute(params object[] args)
+ {
+ data = args;
+ }
+
+ /// <summary>
+ /// Get the collection of values to be used as arguments
+ /// </summary>
+ public IEnumerable GetData(ParameterInfo parameter)
+ {
+ Type targetType = parameter.ParameterType;
+
+ for (int i = 0; i < data.Length; i++)
+ {
+ object arg = data[i];
+
+ if (arg == null)
+ continue;
+
+ if (arg.GetType().FullName == "NUnit.Framework.SpecialValue" &&
+ arg.ToString() == "Null")
+ {
+ data[i] = null;
+ continue;
+ }
+
+ if (targetType.IsAssignableFrom(arg.GetType()))
+ continue;
+
+ if (arg is DBNull)
+ {
+ data[i] = null;
+ continue;
+ }
+
+ bool convert = false;
+
+ if (targetType == typeof(short) || targetType == typeof(byte) || targetType == typeof(sbyte))
+ convert = arg is int;
+ else
+ if (targetType == typeof(decimal))
+ convert = arg is double || arg is string || arg is int;
+ else
+ if (targetType == typeof(DateTime) || targetType == typeof(TimeSpan))
+ convert = arg is string;
+
+ if (convert)
+ data[i] = Convert.ChangeType(arg, targetType, System.Globalization.CultureInfo.InvariantCulture);
+ }
+
+ return data;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Compatibility/SerializableAttribute.cs b/NUnitLite-0.9.0/src/framework/Compatibility/SerializableAttribute.cs
new file mode 100755
index 0000000..87b53d5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Compatibility/SerializableAttribute.cs
@@ -0,0 +1,35 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if NETCF_1_0 || SILVERLIGHT
+namespace System
+{
+ /// <summary>
+ /// Replacement for the SerializableAttribute so we compile
+ /// under Silverlight.
+ /// </summary>
+ public class SerializableAttribute : Attribute
+ {
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/AllItemsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/AllItemsConstraint.cs
new file mode 100755
index 0000000..c940f3f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/AllItemsConstraint.cs
@@ -0,0 +1,75 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// AllItemsConstraint applies another constraint to each
+ /// item in a collection, succeeding if they all succeed.
+ /// </summary>
+ public class AllItemsConstraint : PrefixConstraint
+ {
+ /// <summary>
+ /// Construct an AllItemsConstraint on top of an existing constraint
+ /// </summary>
+ /// <param name="itemConstraint"></param>
+ public AllItemsConstraint(Constraint itemConstraint)
+ : base(itemConstraint)
+ {
+ this.DisplayName = "all";
+ }
+
+ /// <summary>
+ /// Apply the item constraint to each item in the collection,
+ /// failing if any item fails.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (!(actual is IEnumerable))
+ throw new ArgumentException("The actual value must be an IEnumerable", "actual");
+
+ foreach (object item in (IEnumerable)actual)
+ if (!baseConstraint.Matches(item))
+ return false;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("all items");
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/AndConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/AndConstraint.cs
new file mode 100755
index 0000000..818e078
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/AndConstraint.cs
@@ -0,0 +1,100 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// AndConstraint succeeds only if both members succeed.
+ /// </summary>
+ public class AndConstraint : BinaryConstraint
+ {
+ private enum FailurePoint
+ {
+ None,
+ Left,
+ Right
+ };
+
+ private FailurePoint failurePoint;
+
+ /// <summary>
+ /// Create an AndConstraint from two other constraints
+ /// </summary>
+ /// <param name="left">The first constraint</param>
+ /// <param name="right">The second constraint</param>
+ public AndConstraint(Constraint left, Constraint right) : base(left, right) { }
+
+ /// <summary>
+ /// Apply both member constraints to an actual value, succeeding
+ /// succeeding only if both of them succeed.
+ /// </summary>
+ /// <param name="actual">The actual value</param>
+ /// <returns>True if the constraints both succeeded</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ failurePoint = left.Matches(actual)
+ ? right.Matches(actual)
+ ? FailurePoint.None
+ : FailurePoint.Right
+ : FailurePoint.Left;
+
+ return failurePoint == FailurePoint.None;
+ }
+
+ /// <summary>
+ /// Write a description for this contraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The MessageWriter to receive the description</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ left.WriteDescriptionTo(writer);
+ writer.WriteConnector("and");
+ right.WriteDescriptionTo(writer);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ switch (failurePoint)
+ {
+ case FailurePoint.Left:
+ left.WriteActualValueTo(writer);
+ break;
+ case FailurePoint.Right:
+ right.WriteActualValueTo(writer);
+ break;
+ default:
+ base.WriteActualValueTo(writer);
+ break;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/AssignableFromConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/AssignableFromConstraint.cs
new file mode 100755
index 0000000..d674b02
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/AssignableFromConstraint.cs
@@ -0,0 +1,61 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// AssignableFromConstraint is used to test that an object
+ /// can be assigned from a given Type.
+ /// </summary>
+ public class AssignableFromConstraint : TypeConstraint
+ {
+ /// <summary>
+ /// Construct an AssignableFromConstraint for the type provided
+ /// </summary>
+ /// <param name="type"></param>
+ public AssignableFromConstraint(Type type) : base(type) { }
+
+ /// <summary>
+ /// Test whether an object can be assigned from the specified type
+ /// </summary>
+ /// <param name="actual">The object to be tested</param>
+ /// <returns>True if the object can be assigned a value of the expected Type, otherwise false.</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return actual != null && actual.GetType().IsAssignableFrom(expectedType);
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The MessageWriter to use</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("assignable from");
+ writer.WriteExpectedValue(expectedType);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/AssignableToConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/AssignableToConstraint.cs
new file mode 100755
index 0000000..66b3ffd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/AssignableToConstraint.cs
@@ -0,0 +1,61 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// AssignableToConstraint is used to test that an object
+ /// can be assigned to a given Type.
+ /// </summary>
+ public class AssignableToConstraint : TypeConstraint
+ {
+ /// <summary>
+ /// Construct an AssignableToConstraint for the type provided
+ /// </summary>
+ /// <param name="type"></param>
+ public AssignableToConstraint(Type type) : base(type) { }
+
+ /// <summary>
+ /// Test whether an object can be assigned to the specified type
+ /// </summary>
+ /// <param name="actual">The object to be tested</param>
+ /// <returns>True if the object can be assigned a value of the expected Type, otherwise false.</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return actual != null && expectedType.IsAssignableFrom(actual.GetType());
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The MessageWriter to use</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("assignable to");
+ writer.WriteExpectedValue(expectedType);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/AttributeConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/AttributeConstraint.cs
new file mode 100755
index 0000000..8773357
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/AttributeConstraint.cs
@@ -0,0 +1,106 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class AttributeConstraint : PrefixConstraint
+ {
+ private readonly Type expectedType;
+ private Attribute attrFound;
+
+ /// <summary>
+ /// Constructs an AttributeConstraint for a specified attriute
+ /// Type and base constraint.
+ /// </summary>
+ /// <param name="type"></param>
+ /// <param name="baseConstraint"></param>
+ public AttributeConstraint(Type type, Constraint baseConstraint)
+ : base(baseConstraint)
+ {
+ this.expectedType = type;
+
+ if (!typeof(Attribute).IsAssignableFrom(expectedType))
+ throw new ArgumentException(string.Format(
+ "Type {0} is not an attribute", expectedType), "type");
+ }
+
+ /// <summary>
+ /// Determines whether the Type or other provider has the
+ /// expected attribute and if its value matches the
+ /// additional constraint specified.
+ /// </summary>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ System.Reflection.ICustomAttributeProvider attrProvider =
+ actual as System.Reflection.ICustomAttributeProvider;
+
+ if (attrProvider == null)
+ throw new ArgumentException(string.Format("Actual value {0} does not implement ICustomAttributeProvider", actual), "actual");
+
+ Attribute[] attrs = (Attribute[])attrProvider.GetCustomAttributes(expectedType, true);
+ if (attrs.Length == 0)
+ throw new ArgumentException(string.Format("Attribute {0} was not found", expectedType), "actual");
+
+ attrFound = attrs[0];
+ return baseConstraint.Matches(attrFound);
+ }
+
+ /// <summary>
+ /// Writes a description of the attribute to the specified writer.
+ /// </summary>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("attribute " + expectedType.FullName);
+ if (baseConstraint != null)
+ {
+ if (baseConstraint is EqualConstraint)
+ writer.WritePredicate("equal to");
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+ }
+
+ /// <summary>
+ /// Writes the actual value supplied to the specified writer.
+ /// </summary>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.WriteActualValue(attrFound);
+ }
+
+ /// <summary>
+ /// Returns a string representation of the constraint.
+ /// </summary>
+ protected override string GetStringRepresentation()
+ {
+ return string.Format("<attribute {0} {1}>", expectedType, baseConstraint);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/AttributeExistsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/AttributeExistsConstraint.cs
new file mode 100755
index 0000000..5e1109f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/AttributeExistsConstraint.cs
@@ -0,0 +1,76 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// AttributeExistsConstraint tests for the presence of a
+ /// specified attribute on a Type.
+ /// </summary>
+ public class AttributeExistsConstraint : Constraint
+ {
+ private Type expectedType;
+
+ /// <summary>
+ /// Constructs an AttributeExistsConstraint for a specific attribute Type
+ /// </summary>
+ /// <param name="type"></param>
+ public AttributeExistsConstraint(Type type)
+ : base(type)
+ {
+ this.expectedType = type;
+
+ if (!typeof(Attribute).IsAssignableFrom(expectedType))
+ throw new ArgumentException(string.Format(
+ "Type {0} is not an attribute", expectedType), "type");
+ }
+
+ /// <summary>
+ /// Tests whether the object provides the expected attribute.
+ /// </summary>
+ /// <param name="actual">A Type, MethodInfo, or other ICustomAttributeProvider</param>
+ /// <returns>True if the expected attribute is present, otherwise false</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ System.Reflection.ICustomAttributeProvider attrProvider =
+ actual as System.Reflection.ICustomAttributeProvider;
+
+ if (attrProvider == null)
+ throw new ArgumentException(string.Format("Actual value {0} does not implement ICustomAttributeProvider", actual), "actual");
+
+ return attrProvider.GetCustomAttributes(expectedType, true).Length > 0;
+ }
+
+ /// <summary>
+ /// Writes the description of the constraint to the specified writer
+ /// </summary>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("type with attribute");
+ writer.WriteExpectedValue(expectedType);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/BasicConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/BasicConstraint.cs
new file mode 100755
index 0000000..383a790
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/BasicConstraint.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// BasicConstraint is the abstract base for constraints that
+ /// perform a simple comparison to a constant value.
+ /// </summary>
+ public abstract class BasicConstraint : Constraint
+ {
+ private readonly object expected;
+ private readonly string description;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:BasicConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected.</param>
+ /// <param name="description">The description.</param>
+ protected BasicConstraint(object expected, string description)
+ {
+ this.expected = expected;
+ this.description = description;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (actual == null && expected == null)
+ return true;
+
+ if (actual == null || expected == null)
+ return false;
+
+ return expected.Equals(actual);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write(description);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/BinaryConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/BinaryConstraint.cs
new file mode 100755
index 0000000..3d3c2b1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/BinaryConstraint.cs
@@ -0,0 +1,53 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// BinaryConstraint is the abstract base of all constraints
+ /// that combine two other constraints in some fashion.
+ /// </summary>
+ public abstract class BinaryConstraint : Constraint
+ {
+ /// <summary>
+ /// The first constraint being combined
+ /// </summary>
+ protected Constraint left;
+ /// <summary>
+ /// The second constraint being combined
+ /// </summary>
+ protected Constraint right;
+
+ /// <summary>
+ /// Construct a BinaryConstraint from two other constraints
+ /// </summary>
+ /// <param name="left">The first constraint</param>
+ /// <param name="right">The second constraint</param>
+ protected BinaryConstraint(Constraint left, Constraint right)
+ : base(left, right)
+ {
+ this.left = left;
+ this.right = right;
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/BinarySerializableConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/BinarySerializableConstraint.cs
new file mode 100755
index 0000000..916c570
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/BinarySerializableConstraint.cs
@@ -0,0 +1,100 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !NETCF && !SILVERLIGHT
+using System;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// BinarySerializableConstraint tests whether
+ /// an object is serializable in binary format.
+ /// </summary>
+ public class BinarySerializableConstraint : Constraint
+ {
+ readonly BinaryFormatter serializer = new BinaryFormatter();
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (actual == null)
+ throw new ArgumentException();
+
+ MemoryStream stream = new MemoryStream();
+
+ try
+ {
+ serializer.Serialize(stream, actual);
+
+ stream.Seek(0, SeekOrigin.Begin);
+
+ object value = serializer.Deserialize(stream);
+
+ return value != null;
+ }
+ catch (SerializationException)
+ {
+ return false;
+ }
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("binary serializable");
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.Write("<{0}>", actual.GetType().Name);
+ }
+
+ /// <summary>
+ /// Returns the string representation
+ /// </summary>
+ protected override string GetStringRepresentation()
+ {
+ return "<binaryserializable>";
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionConstraint.cs
new file mode 100755
index 0000000..3f3b383
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionConstraint.cs
@@ -0,0 +1,89 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionConstraint is the abstract base class for
+ /// constraints that operate on collections.
+ /// </summary>
+ public abstract class CollectionConstraint : Constraint
+ {
+ /// <summary>
+ /// Construct an empty CollectionConstraint
+ /// </summary>
+ protected CollectionConstraint() { }
+
+ /// <summary>
+ /// Construct a CollectionConstraint
+ /// </summary>
+ /// <param name="arg"></param>
+ protected CollectionConstraint(object arg) : base(arg) { }
+
+ /// <summary>
+ /// Determines whether the specified enumerable is empty.
+ /// </summary>
+ /// <param name="enumerable">The enumerable.</param>
+ /// <returns>
+ /// <c>true</c> if the specified enumerable is empty; otherwise, <c>false</c>.
+ /// </returns>
+ protected static bool IsEmpty(IEnumerable enumerable)
+ {
+ ICollection collection = enumerable as ICollection;
+ if (collection != null)
+ return collection.Count == 0;
+
+ // NOTE: Ignore unsuppressed warning about o in .NET 1.1 build
+ foreach (object o in enumerable)
+ return false;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ IEnumerable enumerable = actual as IEnumerable;
+ if (enumerable == null)
+ throw new ArgumentException("The actual value must be an IEnumerable", "actual");
+
+ return doMatch(enumerable);
+ }
+
+ /// <summary>
+ /// Protected method to be implemented by derived classes
+ /// </summary>
+ /// <param name="collection"></param>
+ /// <returns></returns>
+ protected abstract bool doMatch(IEnumerable collection);
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionContainsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionContainsConstraint.cs
new file mode 100755
index 0000000..0ba8c32
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionContainsConstraint.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionContainsConstraint is used to test whether a collection
+ /// contains an expected object as a member.
+ /// </summary>
+ public class CollectionContainsConstraint : CollectionItemsEqualConstraint
+ {
+ private readonly object expected;
+
+ /// <summary>
+ /// Construct a CollectionContainsConstraint
+ /// </summary>
+ /// <param name="expected"></param>
+ public CollectionContainsConstraint(object expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ this.DisplayName = "contains";
+ }
+
+ /// <summary>
+ /// Test whether the expected item is contained in the collection
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool doMatch(IEnumerable actual)
+ {
+ foreach (object obj in actual)
+ if (ItemsEqual(obj, expected))
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Write a descripton of the constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("collection containing");
+ writer.WriteExpectedValue(expected);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionEquivalentConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionEquivalentConstraint.cs
new file mode 100755
index 0000000..81a0215
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionEquivalentConstraint.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionEquivalentCOnstraint is used to determine whether two
+ /// collections are equivalent.
+ /// </summary>
+ public class CollectionEquivalentConstraint : CollectionItemsEqualConstraint
+ {
+ private readonly IEnumerable expected;
+
+ /// <summary>
+ /// Construct a CollectionEquivalentConstraint
+ /// </summary>
+ /// <param name="expected"></param>
+ public CollectionEquivalentConstraint(IEnumerable expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ this.DisplayName = "equivalent";
+ }
+
+ /// <summary>
+ /// Test whether two collections are equivalent
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool doMatch(IEnumerable actual)
+ {
+ // This is just an optimization
+ if (expected is ICollection && actual is ICollection)
+ if (((ICollection)actual).Count != ((ICollection)expected).Count)
+ return false;
+
+ CollectionTally tally = Tally(expected);
+ return tally.TryRemove(actual) && tally.Count == 0;
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("equivalent to");
+ writer.WriteExpectedValue(expected);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionItemsEqualConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionItemsEqualConstraint.cs
new file mode 100755
index 0000000..2d64343
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionItemsEqualConstraint.cs
@@ -0,0 +1,150 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionItemsEqualConstraint is the abstract base class for all
+ /// collection constraints that apply some notion of item equality
+ /// as a part of their operation.
+ /// </summary>
+ public abstract class CollectionItemsEqualConstraint : CollectionConstraint
+ {
+ private readonly NUnitEqualityComparer comparer = NUnitEqualityComparer.Default;
+
+ /// <summary>
+ /// Construct an empty CollectionConstraint
+ /// </summary>
+ protected CollectionItemsEqualConstraint() { }
+
+ /// <summary>
+ /// Construct a CollectionConstraint
+ /// </summary>
+ /// <param name="arg"></param>
+ protected CollectionItemsEqualConstraint(object arg) : base(arg) { }
+
+ #region Modifiers
+
+ /// <summary>
+ /// Flag the constraint to ignore case and return self.
+ /// </summary>
+ public CollectionItemsEqualConstraint IgnoreCase
+ {
+ get
+ {
+ comparer.IgnoreCase = true;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied EqualityAdapter.
+ /// NOTE: For internal use only.
+ /// </summary>
+ /// <param name="adapter">The EqualityAdapter to use.</param>
+ /// <returns>Self.</returns>
+ internal CollectionItemsEqualConstraint Using(EqualityAdapter adapter)
+ {
+ this.comparer.ExternalComparers.Add(adapter);
+ return this;
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public CollectionItemsEqualConstraint Using(IComparer comparer)
+ {
+ return Using(EqualityAdapter.For(comparer));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Flag the constraint to use the supplied IComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public CollectionItemsEqualConstraint Using<T>(IComparer<T> comparer)
+ {
+ return Using(EqualityAdapter.For(comparer));
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied Comparison object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public CollectionItemsEqualConstraint Using<T>(Comparison<T> comparer)
+ {
+ return Using(EqualityAdapter.For(comparer));
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IEqualityComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public CollectionItemsEqualConstraint Using(IEqualityComparer comparer)
+ {
+ return Using(EqualityAdapter.For(comparer));
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IEqualityComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public CollectionItemsEqualConstraint Using<T>(IEqualityComparer<T> comparer)
+ {
+ return Using(EqualityAdapter.For(comparer));
+ }
+#endif
+
+ #endregion
+
+ /// <summary>
+ /// Compares two collection members for equality
+ /// </summary>
+ protected bool ItemsEqual(object x, object y)
+ {
+ Tolerance tolerance = Tolerance.Zero;
+ return comparer.AreEqual(x, y, ref tolerance);
+ }
+
+ /// <summary>
+ /// Return a new CollectionTally for use in making tests
+ /// </summary>
+ /// <param name="c">The collection to be included in the tally</param>
+ protected CollectionTally Tally(IEnumerable c)
+ {
+ return new CollectionTally(comparer, c);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionOrderedConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionOrderedConstraint.cs
new file mode 100755
index 0000000..f8c62b0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionOrderedConstraint.cs
@@ -0,0 +1,185 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Text;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionOrderedConstraint is used to test whether a collection is ordered.
+ /// </summary>
+ public class CollectionOrderedConstraint : CollectionConstraint
+ {
+ private ComparisonAdapter comparer = ComparisonAdapter.Default;
+ private string comparerName;
+ private string propertyName;
+ private bool descending;
+
+ /// <summary>
+ /// Construct a CollectionOrderedConstraint
+ /// </summary>
+ public CollectionOrderedConstraint()
+ {
+ this.DisplayName = "ordered";
+ }
+
+ ///<summary>
+ /// If used performs a reverse comparison
+ ///</summary>
+ public CollectionOrderedConstraint Descending
+ {
+ get
+ {
+ descending = true;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Modifies the constraint to use an IComparer and returns self.
+ /// </summary>
+ public CollectionOrderedConstraint Using(IComparer comparer)
+ {
+ this.comparer = ComparisonAdapter.For(comparer);
+ this.comparerName = comparer.GetType().FullName;
+ return this;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Modifies the constraint to use an IComparer&lt;T&gt; and returns self.
+ /// </summary>
+ public CollectionOrderedConstraint Using<T>(IComparer<T> comparer)
+ {
+ this.comparer = ComparisonAdapter.For(comparer);
+ this.comparerName = comparer.GetType().FullName;
+ return this;
+ }
+
+ /// <summary>
+ /// Modifies the constraint to use a Comparison&lt;T&gt; and returns self.
+ /// </summary>
+ public CollectionOrderedConstraint Using<T>(Comparison<T> comparer)
+ {
+ this.comparer = ComparisonAdapter.For(comparer);
+ this.comparerName = comparer.GetType().FullName;
+ return this;
+ }
+#endif
+
+ /// <summary>
+ /// Modifies the constraint to test ordering by the value of
+ /// a specified property and returns self.
+ /// </summary>
+ public CollectionOrderedConstraint By(string propertyName)
+ {
+ this.propertyName = propertyName;
+ return this;
+ }
+
+ /// <summary>
+ /// Test whether the collection is ordered
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool doMatch(IEnumerable actual)
+ {
+ object previous = null;
+ int index = 0;
+ foreach (object obj in actual)
+ {
+ object objToCompare = obj;
+ if (obj == null)
+ throw new ArgumentNullException("actual", "Null value at index " + index.ToString());
+
+ if (this.propertyName != null)
+ {
+ PropertyInfo prop = obj.GetType().GetProperty(propertyName);
+ objToCompare = prop.GetValue(obj, null);
+ if (objToCompare == null)
+ throw new ArgumentNullException("actual", "Null property value at index " + index.ToString());
+ }
+
+ if (previous != null)
+ {
+ //int comparisonResult = comparer.Compare(al[i], al[i + 1]);
+ int comparisonResult = comparer.Compare(previous, objToCompare);
+
+ if (descending && comparisonResult < 0)
+ return false;
+ if (!descending && comparisonResult > 0)
+ return false;
+ }
+
+ previous = objToCompare;
+ index++;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// Write a description of the constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ if (propertyName == null)
+ writer.Write("collection ordered");
+ else
+ {
+ writer.WritePredicate("collection ordered by");
+ writer.WriteExpectedValue(propertyName);
+ }
+
+ if (descending)
+ writer.WriteModifier("descending");
+ }
+
+ /// <summary>
+ /// Returns the string representation of the constraint.
+ /// </summary>
+ /// <returns></returns>
+ protected override string GetStringRepresentation()
+ {
+ StringBuilder sb = new StringBuilder("<ordered");
+
+ if (propertyName != null)
+ sb.Append("by " + propertyName);
+ if (descending)
+ sb.Append(" descending");
+ if (comparerName != null)
+ sb.Append(" " + comparerName);
+
+ sb.Append(">");
+
+ return sb.ToString();
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionSubsetConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionSubsetConstraint.cs
new file mode 100755
index 0000000..2cbb0da
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionSubsetConstraint.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionSubsetConstraint is used to determine whether
+ /// one collection is a subset of another
+ /// </summary>
+ public class CollectionSubsetConstraint : CollectionItemsEqualConstraint
+ {
+ private IEnumerable expected;
+
+ /// <summary>
+ /// Construct a CollectionSubsetConstraint
+ /// </summary>
+ /// <param name="expected">The collection that the actual value is expected to be a subset of</param>
+ public CollectionSubsetConstraint(IEnumerable expected) : base(expected)
+ {
+ this.expected = expected;
+ this.DisplayName = "subsetof";
+ }
+
+ /// <summary>
+ /// Test whether the actual collection is a subset of
+ /// the expected collection provided.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool doMatch(IEnumerable actual)
+ {
+ return Tally(expected).TryRemove( actual );
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate( "subset of" );
+ writer.WriteExpectedValue(expected);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/CollectionTally.cs b/NUnitLite-0.9.0/src/framework/Constraints/CollectionTally.cs
new file mode 100755
index 0000000..94e02a5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/CollectionTally.cs
@@ -0,0 +1,95 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// CollectionTally counts (tallies) the number of
+ /// occurences of each object in one or more enumerations.
+ /// </summary>
+ public class CollectionTally
+ {
+ // Internal list used to track occurences
+ private readonly ObjectList list = new ObjectList();
+
+ private readonly NUnitEqualityComparer comparer;
+
+ /// <summary>
+ /// Construct a CollectionTally object from a comparer and a collection
+ /// </summary>
+ public CollectionTally(NUnitEqualityComparer comparer, IEnumerable c)
+ {
+ this.comparer = comparer;
+
+ foreach (object o in c)
+ list.Add(o);
+ }
+
+ /// <summary>
+ /// The number of objects remaining in the tally
+ /// </summary>
+ public int Count
+ {
+ get { return list.Count; }
+ }
+
+ private bool ItemsEqual(object expected, object actual)
+ {
+ Tolerance tolerance = Tolerance.Zero;
+ return comparer.AreEqual(expected, actual, ref tolerance);
+ }
+
+ /// <summary>
+ /// Try to remove an object from the tally
+ /// </summary>
+ /// <param name="o">The object to remove</param>
+ /// <returns>True if successful, false if the object was not found</returns>
+ public bool TryRemove(object o)
+ {
+ for (int index = 0; index < list.Count; index++)
+ if (ItemsEqual(list[index], o))
+ {
+ list.RemoveAt(index);
+ return true;
+ }
+
+ return false;
+ }
+
+ /// <summary>
+ /// Try to remove a set of objects from the tally
+ /// </summary>
+ /// <param name="c">The objects to remove</param>
+ /// <returns>True if successful, false if any object was not found</returns>
+ public bool TryRemove(IEnumerable c)
+ {
+ foreach (object o in c)
+ if (!TryRemove(o))
+ return false;
+
+ return true;
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ComparisonAdapter.cs b/NUnitLite-0.9.0/src/framework/Constraints/ComparisonAdapter.cs
new file mode 100755
index 0000000..b09f51f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ComparisonAdapter.cs
@@ -0,0 +1,172 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ComparisonAdapter class centralizes all comparisons of
+ /// values in NUnit, adapting to the use of any provided
+ /// IComparer, IComparer&lt;T&gt; or Comparison&lt;T&gt;
+ /// </summary>
+ public abstract class ComparisonAdapter
+ {
+ /// <summary>
+ /// Gets the default ComparisonAdapter, which wraps an
+ /// NUnitComparer object.
+ /// </summary>
+ public static ComparisonAdapter Default
+ {
+ get { return new DefaultComparisonAdapter(); }
+ }
+
+ /// <summary>
+ /// Returns a ComparisonAdapter that wraps an IComparer
+ /// </summary>
+ public static ComparisonAdapter For(IComparer comparer)
+ {
+ return new ComparerAdapter(comparer);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a ComparisonAdapter that wraps an IComparer&lt;T&gt;
+ /// </summary>
+ public static ComparisonAdapter For<T>(IComparer<T> comparer)
+ {
+ return new ComparerAdapter<T>(comparer);
+ }
+
+ /// <summary>
+ /// Returns a ComparisonAdapter that wraps a Comparison&lt;T&gt;
+ /// </summary>
+ public static ComparisonAdapter For<T>(Comparison<T> comparer)
+ {
+ return new ComparisonAdapterForComparison<T>(comparer);
+ }
+#endif
+
+ /// <summary>
+ /// Compares two objects
+ /// </summary>
+ public abstract int Compare(object expected, object actual);
+
+ class DefaultComparisonAdapter : ComparerAdapter
+ {
+ /// <summary>
+ /// Construct a default ComparisonAdapter
+ /// </summary>
+ public DefaultComparisonAdapter() : base( NUnitComparer.Default ) { }
+ }
+
+ class ComparerAdapter : ComparisonAdapter
+ {
+ private readonly IComparer comparer;
+
+ /// <summary>
+ /// Construct a ComparisonAdapter for an IComparer
+ /// </summary>
+ public ComparerAdapter(IComparer comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ /// <summary>
+ /// Compares two objects
+ /// </summary>
+ /// <param name="expected"></param>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ public override int Compare(object expected, object actual)
+ {
+ return comparer.Compare(expected, actual);
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// ComparisonAdapter&lt;T&gt; extends ComparisonAdapter and
+ /// allows use of an IComparer&lt;T&gt; or Comparison&lt;T&gt;
+ /// to actually perform the comparison.
+ /// </summary>
+ class ComparerAdapter<T> : ComparisonAdapter
+ {
+ private readonly IComparer<T> comparer;
+
+ /// <summary>
+ /// Construct a ComparisonAdapter for an IComparer&lt;T&gt;
+ /// </summary>
+ public ComparerAdapter(IComparer<T> comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ /// <summary>
+ /// Compare a Type T to an object
+ /// </summary>
+ public override int Compare(object expected, object actual)
+ {
+ if (!typeof(T).IsAssignableFrom(expected.GetType()))
+ throw new ArgumentException("Cannot compare " + expected.ToString());
+
+ if (!typeof(T).IsAssignableFrom(actual.GetType()))
+ throw new ArgumentException("Cannot compare to " + actual.ToString());
+
+ return comparer.Compare((T)expected, (T)actual);
+ }
+ }
+
+ class ComparisonAdapterForComparison<T> : ComparisonAdapter
+ {
+ private readonly Comparison<T> comparison;
+
+ /// <summary>
+ /// Construct a ComparisonAdapter for a Comparison&lt;T&gt;
+ /// </summary>
+ public ComparisonAdapterForComparison(Comparison<T> comparer)
+ {
+ this.comparison = comparer;
+ }
+
+ /// <summary>
+ /// Compare a Type T to an object
+ /// </summary>
+ public override int Compare(object expected, object actual)
+ {
+ if (!typeof(T).IsAssignableFrom(expected.GetType()))
+ throw new ArgumentException("Cannot compare " + expected.ToString());
+
+ if (!typeof(T).IsAssignableFrom(actual.GetType()))
+ throw new ArgumentException("Cannot compare to " + actual.ToString());
+
+ return comparison.Invoke((T)expected, (T)actual);
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ComparisonConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ComparisonConstraint.cs
new file mode 100755
index 0000000..8b7d678
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ComparisonConstraint.cs
@@ -0,0 +1,83 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public abstract class ComparisonConstraint : Constraint
+ {
+ /// <summary>
+ /// ComparisonAdapter to be used in making the comparison
+ /// </summary>
+ protected ComparisonAdapter comparer = ComparisonAdapter.Default;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
+ /// </summary>
+ public ComparisonConstraint(object arg) : base(arg) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
+ /// </summary>
+ public ComparisonConstraint(object arg1, object arg2) : base(arg1, arg2) { }
+
+ /// <summary>
+ /// Modifies the constraint to use an IComparer and returns self
+ /// </summary>
+ public ComparisonConstraint Using(IComparer comparer)
+ {
+ this.comparer = ComparisonAdapter.For(comparer);
+ return this;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Modifies the constraint to use an IComparer&lt;T&gt; and returns self
+ /// </summary>
+ public ComparisonConstraint Using<T>(IComparer<T> comparer)
+ {
+ this.comparer = ComparisonAdapter.For(comparer);
+ return this;
+ }
+
+ /// <summary>
+ /// Modifies the constraint to use a Comparison&lt;T&gt; and returns self
+ /// </summary>
+ public ComparisonConstraint Using<T>(Comparison<T> comparer)
+ {
+ this.comparer = ComparisonAdapter.For(comparer);
+ return this;
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Constraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/Constraint.cs
new file mode 100755
index 0000000..cdf29b5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Constraint.cs
@@ -0,0 +1,416 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Delegate used to delay evaluation of the actual value
+ /// to be used in evaluating a constraint
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public delegate T ActualValueDelegate<T>();
+#else
+ public delegate object ActualValueDelegate();
+#endif
+
+ /// <summary>
+ /// The Constraint class is the base of all built-in constraints
+ /// within NUnit. It provides the operator overloads used to combine
+ /// constraints.
+ /// </summary>
+ public abstract class Constraint : IResolveConstraint
+ {
+ #region UnsetObject Class
+ /// <summary>
+ /// Class used to detect any derived constraints
+ /// that fail to set the actual value in their
+ /// Matches override.
+ /// </summary>
+ private class UnsetObject
+ {
+ public override string ToString()
+ {
+ return "UNSET";
+ }
+ }
+ #endregion
+
+ #region Static and Instance Fields
+ /// <summary>
+ /// Static UnsetObject used to detect derived constraints
+ /// failing to set the actual value.
+ /// </summary>
+ protected static object UNSET = new UnsetObject();
+
+ /// <summary>
+ /// The actual value being tested against a constraint
+ /// </summary>
+ protected object actual = UNSET;
+
+ /// <summary>
+ /// The display name of this Constraint for use by ToString()
+ /// </summary>
+ private string displayName;
+
+ /// <summary>
+ /// Argument fields used by ToString();
+ /// </summary>
+ private readonly int argcnt;
+ private readonly object arg1;
+ private readonly object arg2;
+
+ /// <summary>
+ /// The builder holding this constraint
+ /// </summary>
+ private ConstraintBuilder builder;
+ #endregion
+
+ #region Constructors
+ /// <summary>
+ /// Construct a constraint with no arguments
+ /// </summary>
+ protected Constraint()
+ {
+ argcnt = 0;
+ }
+
+ /// <summary>
+ /// Construct a constraint with one argument
+ /// </summary>
+ protected Constraint(object arg)
+ {
+ argcnt = 1;
+ this.arg1 = arg;
+ }
+
+ /// <summary>
+ /// Construct a constraint with two arguments
+ /// </summary>
+ protected Constraint(object arg1, object arg2)
+ {
+ argcnt = 2;
+ this.arg1 = arg1;
+ this.arg2 = arg2;
+ }
+ #endregion
+
+ #region Set Containing ConstraintBuilder
+ /// <summary>
+ /// Sets the ConstraintBuilder holding this constraint
+ /// </summary>
+ internal void SetBuilder(ConstraintBuilder builder)
+ {
+ this.builder = builder;
+ }
+ #endregion
+
+ #region Properties
+ /// <summary>
+ /// 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.
+ /// </summary>
+ protected string DisplayName
+ {
+ get
+ {
+ if (displayName == null)
+ {
+ displayName = this.GetType().Name.ToLower();
+ if (displayName.EndsWith("`1") || displayName.EndsWith("`2"))
+ displayName = displayName.Substring(0, displayName.Length - 2);
+ if (displayName.EndsWith("constraint"))
+ displayName = displayName.Substring(0, displayName.Length - 10);
+ }
+
+ return displayName;
+ }
+
+ set { displayName = value; }
+ }
+ #endregion
+
+ #region Abstract and Virtual Methods
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The MessageWriter on which to display the message</param>
+ public virtual void WriteMessageTo(MessageWriter writer)
+ {
+ writer.DisplayDifferences(this);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public abstract bool Matches(object actual);
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="del">An <see cref="ActualValueDelegate{T}" /></param>
+ /// <returns>True for success, false for failure</returns>
+ public virtual bool Matches<T>(ActualValueDelegate<T> del)
+ {
+#if NET_4_5
+ if (AsyncInvocationRegion.IsAsyncOperation(del))
+ using (var region = AsyncInvocationRegion.Create(del))
+ return Matches(region.WaitForPendingOperationsToComplete(del()));
+#endif
+ return Matches(del());
+ }
+#else
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="del">An <see cref="ActualValueDelegate" /></param>
+ /// <returns>True for success, false for failure</returns>
+ public virtual bool Matches(ActualValueDelegate del)
+ {
+ return Matches(del());
+ }
+#endif
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">A reference to the value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+#if CLR_2_0 || CLR_4_0
+ public virtual bool Matches<T>(ref T actual)
+#else
+ public virtual bool Matches(ref bool actual)
+#endif
+ {
+ return Matches(actual);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public abstract void WriteDescriptionTo(MessageWriter writer);
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public virtual void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.WriteActualValue(actual);
+ }
+ #endregion
+
+ #region ToString Override
+ /// <summary>
+ /// Default override of ToString returns the constraint DisplayName
+ /// followed by any arguments within angle brackets.
+ /// </summary>
+ /// <returns></returns>
+ public override string ToString()
+ {
+ string rep = GetStringRepresentation();
+
+ return this.builder == null ? rep : string.Format("<unresolved {0}>", rep);
+ }
+
+ /// <summary>
+ /// Returns the string representation of this constraint
+ /// </summary>
+ protected virtual string GetStringRepresentation()
+ {
+ switch (argcnt)
+ {
+ default:
+ case 0:
+ return string.Format("<{0}>", DisplayName);
+ case 1:
+ return string.Format("<{0} {1}>", DisplayName, _displayable(arg1));
+ case 2:
+ return string.Format("<{0} {1} {2}>", DisplayName, _displayable(arg1), _displayable(arg2));
+ }
+ }
+
+ private static string _displayable(object o)
+ {
+ if (o == null) return "null";
+
+ string fmt = o is string ? "\"{0}\"" : "{0}";
+ return string.Format(System.Globalization.CultureInfo.InvariantCulture, fmt, o);
+ }
+ #endregion
+
+ #region Operator Overloads
+ /// <summary>
+ /// This operator creates a constraint that is satisfied only if both
+ /// argument constraints are satisfied.
+ /// </summary>
+ public static Constraint operator &(Constraint left, Constraint right)
+ {
+ IResolveConstraint l = (IResolveConstraint)left;
+ IResolveConstraint r = (IResolveConstraint)right;
+ return new AndConstraint(l.Resolve(), r.Resolve());
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied if either
+ /// of the argument constraints is satisfied.
+ /// </summary>
+ public static Constraint operator |(Constraint left, Constraint right)
+ {
+ IResolveConstraint l = (IResolveConstraint)left;
+ IResolveConstraint r = (IResolveConstraint)right;
+ return new OrConstraint(l.Resolve(), r.Resolve());
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied if the
+ /// argument constraint is not satisfied.
+ /// </summary>
+ public static Constraint operator !(Constraint constraint)
+ {
+ IResolveConstraint r = constraint as IResolveConstraint;
+ return new NotConstraint(r == null ? new NullConstraint() : r.Resolve());
+ }
+ #endregion
+
+ #region Binary Operators
+ /// <summary>
+ /// Returns a ConstraintExpression by appending And
+ /// to the current constraint.
+ /// </summary>
+ public ConstraintExpression And
+ {
+ get
+ {
+ ConstraintBuilder builder = this.builder;
+ if (builder == null)
+ {
+ builder = new ConstraintBuilder();
+ builder.Append(this);
+ }
+
+ builder.Append(new AndOperator());
+
+ return new ConstraintExpression(builder);
+ }
+ }
+
+ /// <summary>
+ /// Returns a ConstraintExpression by appending And
+ /// to the current constraint.
+ /// </summary>
+ public ConstraintExpression With
+ {
+ get { return this.And; }
+ }
+
+ /// <summary>
+ /// Returns a ConstraintExpression by appending Or
+ /// to the current constraint.
+ /// </summary>
+ public ConstraintExpression Or
+ {
+ get
+ {
+ ConstraintBuilder builder = this.builder;
+ if (builder == null)
+ {
+ builder = new ConstraintBuilder();
+ builder.Append(this);
+ }
+
+ builder.Append(new OrOperator());
+
+ return new ConstraintExpression(builder);
+ }
+ }
+ #endregion
+
+ #region After Modifier
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Returns a DelayedConstraint with the specified delay time.
+ /// </summary>
+ /// <param name="delayInMilliseconds">The delay in milliseconds.</param>
+ /// <returns></returns>
+ public DelayedConstraint After(int delayInMilliseconds)
+ {
+ return new DelayedConstraint(
+ builder == null ? this : builder.Resolve(),
+ delayInMilliseconds);
+ }
+
+ /// <summary>
+ /// Returns a DelayedConstraint with the specified delay time
+ /// and polling interval.
+ /// </summary>
+ /// <param name="delayInMilliseconds">The delay in milliseconds.</param>
+ /// <param name="pollingInterval">The interval at which to test the constraint.</param>
+ /// <returns></returns>
+ public DelayedConstraint After(int delayInMilliseconds, int pollingInterval)
+ {
+ return new DelayedConstraint(
+ builder == null ? this : builder.Resolve(),
+ delayInMilliseconds,
+ pollingInterval);
+ }
+#endif
+
+ #endregion
+
+ #region IResolveConstraint Members
+ Constraint IResolveConstraint.Resolve()
+ {
+ return builder == null ? this : builder.Resolve();
+ }
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ConstraintBuilder.cs b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintBuilder.cs
new file mode 100755
index 0000000..7d6af14
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintBuilder.cs
@@ -0,0 +1,286 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class ConstraintBuilder
+ {
+ #region Nested Operator Stack Class
+ /// <summary>
+ /// OperatorStack is a type-safe stack for holding ConstraintOperators
+ /// </summary>
+ public class OperatorStack
+ {
+#if CLR_2_0 || CLR_4_0
+ private Stack<ConstraintOperator> stack = new Stack<ConstraintOperator>();
+#else
+ private Stack stack = new Stack();
+#endif
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:OperatorStack"/> class.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public OperatorStack(ConstraintBuilder builder)
+ {
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this <see cref="T:OpStack"/> is empty.
+ /// </summary>
+ /// <value><c>true</c> if empty; otherwise, <c>false</c>.</value>
+ public bool Empty
+ {
+ get { return stack.Count == 0; }
+ }
+
+ /// <summary>
+ /// Gets the topmost operator without modifying the stack.
+ /// </summary>
+ /// <value>The top.</value>
+ public ConstraintOperator Top
+ {
+ get { return (ConstraintOperator)stack.Peek(); }
+ }
+
+ /// <summary>
+ /// Pushes the specified operator onto the stack.
+ /// </summary>
+ /// <param name="op">The op.</param>
+ public void Push(ConstraintOperator op)
+ {
+ stack.Push(op);
+ }
+
+ /// <summary>
+ /// Pops the topmost operator from the stack.
+ /// </summary>
+ /// <returns></returns>
+ public ConstraintOperator Pop()
+ {
+ return (ConstraintOperator)stack.Pop();
+ }
+ }
+ #endregion
+
+ #region Nested Constraint Stack Class
+ /// <summary>
+ /// ConstraintStack is a type-safe stack for holding Constraints
+ /// </summary>
+ public class ConstraintStack
+ {
+#if CLR_2_0 || CLR_4_0
+ private Stack<Constraint> stack = new Stack<Constraint>();
+#else
+ private Stack stack = new Stack();
+#endif
+ private ConstraintBuilder builder;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ConstraintStack"/> class.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public ConstraintStack(ConstraintBuilder builder)
+ {
+ this.builder = builder;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this <see cref="T:ConstraintStack"/> is empty.
+ /// </summary>
+ /// <value><c>true</c> if empty; otherwise, <c>false</c>.</value>
+ public bool Empty
+ {
+ get { return stack.Count == 0; }
+ }
+
+ /// <summary>
+ /// Gets the topmost constraint without modifying the stack.
+ /// </summary>
+ /// <value>The topmost constraint</value>
+ public Constraint Top
+ {
+ get { return (Constraint)stack.Peek(); }
+ }
+
+ /// <summary>
+ /// Pushes the specified constraint. As a side effect,
+ /// the constraint's builder field is set to the
+ /// ConstraintBuilder owning this stack.
+ /// </summary>
+ /// <param name="constraint">The constraint.</param>
+ public void Push(Constraint constraint)
+ {
+ stack.Push(constraint);
+ constraint.SetBuilder( this.builder );
+ }
+
+ /// <summary>
+ /// Pops this topmost constrait from the stack.
+ /// As a side effect, the constraint's builder
+ /// field is set to null.
+ /// </summary>
+ /// <returns></returns>
+ public Constraint Pop()
+ {
+ Constraint constraint = (Constraint)stack.Pop();
+ constraint.SetBuilder( null );
+ return constraint;
+ }
+ }
+ #endregion
+
+ #region Instance Fields
+ private readonly OperatorStack ops;
+
+ private readonly ConstraintStack constraints;
+
+ private object lastPushed;
+ #endregion
+
+ #region Constructor
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ConstraintBuilder"/> class.
+ /// </summary>
+ public ConstraintBuilder()
+ {
+ this.ops = new OperatorStack(this);
+ this.constraints = new ConstraintStack(this);
+ }
+ #endregion
+
+ #region Properties
+ /// <summary>
+ /// Gets a value indicating whether this instance is resolvable.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if this instance is resolvable; otherwise, <c>false</c>.
+ /// </value>
+ public bool IsResolvable
+ {
+ get { return lastPushed is Constraint || lastPushed is SelfResolvingOperator; }
+ }
+ #endregion
+
+ #region Public Methods
+ /// <summary>
+ /// Appends the specified operator to the expression by first
+ /// reducing the operator stack and then pushing the new
+ /// operator on the stack.
+ /// </summary>
+ /// <param name="op">The operator to push.</param>
+ public void Append(ConstraintOperator op)
+ {
+ op.LeftContext = lastPushed;
+ if (lastPushed is ConstraintOperator)
+ SetTopOperatorRightContext(op);
+
+ // Reduce any lower precedence operators
+ ReduceOperatorStack(op.LeftPrecedence);
+
+ ops.Push(op);
+ lastPushed = op;
+ }
+
+ /// <summary>
+ /// Appends the specified constraint to the expresson by pushing
+ /// it on the constraint stack.
+ /// </summary>
+ /// <param name="constraint">The constraint to push.</param>
+ public void Append(Constraint constraint)
+ {
+ if (lastPushed is ConstraintOperator)
+ SetTopOperatorRightContext(constraint);
+
+ constraints.Push(constraint);
+ lastPushed = constraint;
+ constraint.SetBuilder( this );
+ }
+
+ /// <summary>
+ /// Sets the top operator right context.
+ /// </summary>
+ /// <param name="rightContext">The right context.</param>
+ private void SetTopOperatorRightContext(object rightContext)
+ {
+ // Some operators change their precedence based on
+ // the right context - save current precedence.
+ int oldPrecedence = ops.Top.LeftPrecedence;
+
+ ops.Top.RightContext = rightContext;
+
+ // If the precedence increased, we may be able to
+ // reduce the region of the stack below the operator
+ if (ops.Top.LeftPrecedence > oldPrecedence)
+ {
+ ConstraintOperator changedOp = ops.Pop();
+ ReduceOperatorStack(changedOp.LeftPrecedence);
+ ops.Push(changedOp);
+ }
+ }
+
+ /// <summary>
+ /// Reduces the operator stack until the topmost item
+ /// precedence is greater than or equal to the target precedence.
+ /// </summary>
+ /// <param name="targetPrecedence">The target precedence.</param>
+ private void ReduceOperatorStack(int targetPrecedence)
+ {
+ while (!ops.Empty && ops.Top.RightPrecedence < targetPrecedence)
+ ops.Pop().Reduce(constraints);
+ }
+
+ /// <summary>
+ /// Resolves this instance, returning a Constraint. If the builder
+ /// is not currently in a resolvable state, an exception is thrown.
+ /// </summary>
+ /// <returns>The resolved constraint</returns>
+ public Constraint Resolve()
+ {
+ if (!IsResolvable)
+ throw new InvalidOperationException("A partial expression may not be resolved");
+
+ while (!ops.Empty)
+ {
+ ConstraintOperator op = ops.Pop();
+ op.Reduce(constraints);
+ }
+
+ return constraints.Pop();
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ConstraintExpression.cs b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintExpression.cs
new file mode 100755
index 0000000..53a9180
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintExpression.cs
@@ -0,0 +1,803 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class ConstraintExpression : ConstraintExpressionBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ConstraintExpression"/> class.
+ /// </summary>
+ public ConstraintExpression() { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ConstraintExpression"/>
+ /// class passing in a ConstraintBuilder, which may be pre-populated.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public ConstraintExpression(ConstraintBuilder builder)
+ : base( builder ) { }
+
+ #region Not
+
+ /// <summary>
+ /// Returns a ConstraintExpression that negates any
+ /// following constraint.
+ /// </summary>
+ public ConstraintExpression Not
+ {
+ get { return this.Append(new NotOperator()); }
+ }
+
+ /// <summary>
+ /// Returns a ConstraintExpression that negates any
+ /// following constraint.
+ /// </summary>
+ public ConstraintExpression No
+ {
+ get { return this.Append(new NotOperator()); }
+ }
+
+ #endregion
+
+ #region All
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them succeed.
+ /// </summary>
+ public ConstraintExpression All
+ {
+ get { return this.Append(new AllOperator()); }
+ }
+
+ #endregion
+
+ #region Some
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if at least one of them succeeds.
+ /// </summary>
+ public ConstraintExpression Some
+ {
+ get { return this.Append(new SomeOperator()); }
+ }
+
+ #endregion
+
+ #region None
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them fail.
+ /// </summary>
+ public ConstraintExpression None
+ {
+ get { return this.Append(new NoneOperator()); }
+ }
+
+ #endregion
+
+ #region Exactly(n)
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding only if a specified number of them succeed.
+ /// </summary>
+ public ConstraintExpression Exactly(int expectedCount)
+ {
+ return this.Append(new ExactCountOperator(expectedCount));
+ }
+
+ #endregion
+
+ #region Property
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public ResolvableConstraintExpression Property(string name)
+ {
+ return this.Append(new PropOperator(name));
+ }
+
+ #endregion
+
+ #region Length
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Length property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression Length
+ {
+ get { return Property("Length"); }
+ }
+
+ #endregion
+
+ #region Count
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Count property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression Count
+ {
+ get { return Property("Count"); }
+ }
+
+ #endregion
+
+ #region Message
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Message property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression Message
+ {
+ get { return Property("Message"); }
+ }
+
+ #endregion
+
+ #region InnerException
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the InnerException property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression InnerException
+ {
+ get { return Property("InnerException"); }
+ }
+
+ #endregion
+
+ #region Attribute
+
+ /// <summary>
+ /// Returns a new AttributeConstraint checking for the
+ /// presence of a particular attribute on an object.
+ /// </summary>
+ public ResolvableConstraintExpression Attribute(Type expectedType)
+ {
+ return this.Append(new AttributeOperator(expectedType));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a new AttributeConstraint checking for the
+ /// presence of a particular attribute on an object.
+ /// </summary>
+ public ResolvableConstraintExpression Attribute<T>()
+ {
+ return Attribute(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region With
+
+ /// <summary>
+ /// With is currently a NOP - reserved for future use.
+ /// </summary>
+ public ConstraintExpression With
+ {
+ get { return this.Append(new WithOperator()); }
+ }
+
+ #endregion
+
+ #region Matches
+
+ /// <summary>
+ /// Returns the constraint provided as an argument - used to allow custom
+ /// custom constraints to easily participate in the syntax.
+ /// </summary>
+ public Constraint Matches(Constraint constraint)
+ {
+ return this.Append(constraint);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns the constraint provided as an argument - used to allow custom
+ /// custom constraints to easily participate in the syntax.
+ /// </summary>
+ public Constraint Matches<T>(Predicate<T> predicate)
+ {
+ return this.Append(new PredicateConstraint<T>(predicate));
+ }
+#endif
+
+ #endregion
+
+ #region Null
+
+ /// <summary>
+ /// Returns a constraint that tests for null
+ /// </summary>
+ public NullConstraint Null
+ {
+ get { return (NullConstraint)this.Append(new NullConstraint()); }
+ }
+
+ #endregion
+
+ #region True
+
+ /// <summary>
+ /// Returns a constraint that tests for True
+ /// </summary>
+ public TrueConstraint True
+ {
+ get { return (TrueConstraint)this.Append(new TrueConstraint()); }
+ }
+
+ #endregion
+
+ #region False
+
+ /// <summary>
+ /// Returns a constraint that tests for False
+ /// </summary>
+ public FalseConstraint False
+ {
+ get { return (FalseConstraint)this.Append(new FalseConstraint()); }
+ }
+
+ #endregion
+
+ #region Positive
+
+ /// <summary>
+ /// Returns a constraint that tests for a positive value
+ /// </summary>
+ public GreaterThanConstraint Positive
+ {
+ get { return (GreaterThanConstraint)this.Append(new GreaterThanConstraint(0)); }
+ }
+
+ #endregion
+
+ #region Negative
+
+ /// <summary>
+ /// Returns a constraint that tests for a negative value
+ /// </summary>
+ public LessThanConstraint Negative
+ {
+ get { return (LessThanConstraint)this.Append(new LessThanConstraint(0)); }
+ }
+
+ #endregion
+
+ #region NaN
+
+ /// <summary>
+ /// Returns a constraint that tests for NaN
+ /// </summary>
+ public NaNConstraint NaN
+ {
+ get { return (NaNConstraint)this.Append(new NaNConstraint()); }
+ }
+
+ #endregion
+
+ #region Empty
+
+ /// <summary>
+ /// Returns a constraint that tests for empty
+ /// </summary>
+ public EmptyConstraint Empty
+ {
+ get { return (EmptyConstraint)this.Append(new EmptyConstraint()); }
+ }
+
+ #endregion
+
+ #region Unique
+
+ /// <summary>
+ /// Returns a constraint that tests whether a collection
+ /// contains all unique items.
+ /// </summary>
+ public UniqueItemsConstraint Unique
+ {
+ get { return (UniqueItemsConstraint)this.Append(new UniqueItemsConstraint()); }
+ }
+
+ #endregion
+
+ #region BinarySerializable
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Returns a constraint that tests whether an object graph is serializable in binary format.
+ /// </summary>
+ public BinarySerializableConstraint BinarySerializable
+ {
+ get { return (BinarySerializableConstraint)this.Append(new BinarySerializableConstraint()); }
+ }
+#endif
+
+ #endregion
+
+ #region XmlSerializable
+
+#if !SILVERLIGHT
+ /// <summary>
+ /// Returns a constraint that tests whether an object graph is serializable in xml format.
+ /// </summary>
+ public XmlSerializableConstraint XmlSerializable
+ {
+ get { return (XmlSerializableConstraint)this.Append(new XmlSerializableConstraint()); }
+ }
+#endif
+
+ #endregion
+
+ #region EqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests two items for equality
+ /// </summary>
+ public EqualConstraint EqualTo(object expected)
+ {
+ return (EqualConstraint)this.Append(new EqualConstraint(expected));
+ }
+
+ #endregion
+
+ #region SameAs
+
+ /// <summary>
+ /// Returns a constraint that tests that two references are the same object
+ /// </summary>
+ public SameAsConstraint SameAs(object expected)
+ {
+ return (SameAsConstraint)this.Append(new SameAsConstraint(expected));
+ }
+
+ #endregion
+
+ #region GreaterThan
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than the suppled argument
+ /// </summary>
+ public GreaterThanConstraint GreaterThan(object expected)
+ {
+ return (GreaterThanConstraint)this.Append(new GreaterThanConstraint(expected));
+ }
+
+ #endregion
+
+ #region GreaterThanOrEqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than or equal to the suppled argument
+ /// </summary>
+ public GreaterThanOrEqualConstraint GreaterThanOrEqualTo(object expected)
+ {
+ return (GreaterThanOrEqualConstraint)this.Append(new GreaterThanOrEqualConstraint(expected));
+ }
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than or equal to the suppled argument
+ /// </summary>
+ public GreaterThanOrEqualConstraint AtLeast(object expected)
+ {
+ return (GreaterThanOrEqualConstraint)this.Append(new GreaterThanOrEqualConstraint(expected));
+ }
+
+ #endregion
+
+ #region LessThan
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than the suppled argument
+ /// </summary>
+ public LessThanConstraint LessThan(object expected)
+ {
+ return (LessThanConstraint)this.Append(new LessThanConstraint(expected));
+ }
+
+ #endregion
+
+ #region LessThanOrEqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than or equal to the suppled argument
+ /// </summary>
+ public LessThanOrEqualConstraint LessThanOrEqualTo(object expected)
+ {
+ return (LessThanOrEqualConstraint)this.Append(new LessThanOrEqualConstraint(expected));
+ }
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than or equal to the suppled argument
+ /// </summary>
+ public LessThanOrEqualConstraint AtMost(object expected)
+ {
+ return (LessThanOrEqualConstraint)this.Append(new LessThanOrEqualConstraint(expected));
+ }
+
+ #endregion
+
+ #region TypeOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual
+ /// value is of the exact type supplied as an argument.
+ /// </summary>
+ public ExactTypeConstraint TypeOf(Type expectedType)
+ {
+ return (ExactTypeConstraint)this.Append(new ExactTypeConstraint(expectedType));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual
+ /// value is of the exact type supplied as an argument.
+ /// </summary>
+ public ExactTypeConstraint TypeOf<T>()
+ {
+ return (ExactTypeConstraint)this.Append(new ExactTypeConstraint(typeof(T)));
+ }
+#endif
+
+ #endregion
+
+ #region InstanceOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is of the type supplied as an argument or a derived type.
+ /// </summary>
+ public InstanceOfTypeConstraint InstanceOf(Type expectedType)
+ {
+ return (InstanceOfTypeConstraint)this.Append(new InstanceOfTypeConstraint(expectedType));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is of the type supplied as an argument or a derived type.
+ /// </summary>
+ public InstanceOfTypeConstraint InstanceOf<T>()
+ {
+ return (InstanceOfTypeConstraint)this.Append(new InstanceOfTypeConstraint(typeof(T)));
+ }
+#endif
+
+ #endregion
+
+ #region AssignableFrom
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableFromConstraint AssignableFrom(Type expectedType)
+ {
+ return (AssignableFromConstraint)this.Append(new AssignableFromConstraint(expectedType));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableFromConstraint AssignableFrom<T>()
+ {
+ return (AssignableFromConstraint)this.Append(new AssignableFromConstraint(typeof(T)));
+ }
+#endif
+
+ #endregion
+
+ #region AssignableTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableToConstraint AssignableTo(Type expectedType)
+ {
+ return (AssignableToConstraint)this.Append(new AssignableToConstraint(expectedType));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableToConstraint AssignableTo<T>()
+ {
+ return (AssignableToConstraint)this.Append(new AssignableToConstraint(typeof(T)));
+ }
+#endif
+
+ #endregion
+
+ #region EquivalentTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is a collection containing the same elements as the
+ /// collection supplied as an argument.
+ /// </summary>
+ public CollectionEquivalentConstraint EquivalentTo(IEnumerable expected)
+ {
+ return (CollectionEquivalentConstraint)this.Append(new CollectionEquivalentConstraint(expected));
+ }
+
+ #endregion
+
+ #region SubsetOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is a subset of the collection supplied as an argument.
+ /// </summary>
+ public CollectionSubsetConstraint SubsetOf(IEnumerable expected)
+ {
+ return (CollectionSubsetConstraint)this.Append(new CollectionSubsetConstraint(expected));
+ }
+
+ #endregion
+
+ #region Ordered
+
+ /// <summary>
+ /// Returns a constraint that tests whether a collection is ordered
+ /// </summary>
+ public CollectionOrderedConstraint Ordered
+ {
+ get { return (CollectionOrderedConstraint)this.Append(new CollectionOrderedConstraint()); }
+ }
+
+ #endregion
+
+ #region Member
+
+ /// <summary>
+ /// Returns a new CollectionContainsConstraint checking for the
+ /// presence of a particular object in the collection.
+ /// </summary>
+ public CollectionContainsConstraint Member(object expected)
+ {
+ return (CollectionContainsConstraint)this.Append(new CollectionContainsConstraint(expected));
+ }
+
+ /// <summary>
+ /// Returns a new CollectionContainsConstraint checking for the
+ /// presence of a particular object in the collection.
+ /// </summary>
+ public CollectionContainsConstraint Contains(object expected)
+ {
+ return (CollectionContainsConstraint)this.Append(new CollectionContainsConstraint(expected));
+ }
+
+ #endregion
+
+ #region Contains
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public ContainsConstraint Contains(string expected)
+ {
+ return (ContainsConstraint)this.Append(new ContainsConstraint(expected));
+ }
+
+ #endregion
+
+ #region StringContaining
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public SubstringConstraint StringContaining(string expected)
+ {
+ return (SubstringConstraint)this.Append(new SubstringConstraint(expected));
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public SubstringConstraint ContainsSubstring(string expected)
+ {
+ return (SubstringConstraint)this.Append(new SubstringConstraint(expected));
+ }
+
+ #endregion
+
+ #region StartsWith
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value starts with the substring supplied as an argument.
+ /// </summary>
+ public StartsWithConstraint StartsWith(string expected)
+ {
+ return (StartsWithConstraint)this.Append(new StartsWithConstraint(expected));
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value starts with the substring supplied as an argument.
+ /// </summary>
+ public StartsWithConstraint StringStarting(string expected)
+ {
+ return (StartsWithConstraint)this.Append(new StartsWithConstraint(expected));
+ }
+
+ #endregion
+
+ #region EndsWith
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value ends with the substring supplied as an argument.
+ /// </summary>
+ public EndsWithConstraint EndsWith(string expected)
+ {
+ return (EndsWithConstraint)this.Append(new EndsWithConstraint(expected));
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value ends with the substring supplied as an argument.
+ /// </summary>
+ public EndsWithConstraint StringEnding(string expected)
+ {
+ return (EndsWithConstraint)this.Append(new EndsWithConstraint(expected));
+ }
+
+ #endregion
+
+ #region Matches
+
+#if !NETCF
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value matches the regular expression supplied as an argument.
+ /// </summary>
+ public RegexConstraint Matches(string pattern)
+ {
+ return (RegexConstraint)this.Append(new RegexConstraint(pattern));
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value matches the regular expression supplied as an argument.
+ /// </summary>
+ public RegexConstraint StringMatching(string pattern)
+ {
+ return (RegexConstraint)this.Append(new RegexConstraint(pattern));
+ }
+#endif
+
+ #endregion
+
+ #region SamePath
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same as an expected path after canonicalization.
+ /// </summary>
+ public SamePathConstraint SamePath(string expected)
+ {
+ return (SamePathConstraint)this.Append(new SamePathConstraint(expected));
+ }
+
+ #endregion
+
+ #region SubPath
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same path or under an expected path after canonicalization.
+ /// </summary>
+ public SubPathConstraint SubPath(string expected)
+ {
+ return (SubPathConstraint)this.Append(new SubPathConstraint(expected));
+ }
+
+ #endregion
+
+ #region SamePathOrUnder
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same path or under an expected path after canonicalization.
+ /// </summary>
+ public SamePathOrUnderConstraint SamePathOrUnder(string expected)
+ {
+ return (SamePathOrUnderConstraint)this.Append(new SamePathOrUnderConstraint(expected));
+ }
+
+ #endregion
+
+ #region InRange
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value falls
+ /// within a specified range.
+ /// </summary>
+ public RangeConstraint<T> InRange<T>(T from, T to) where T : IComparable<T>
+ {
+ return (RangeConstraint<T>)this.Append(new RangeConstraint<T>(from, to));
+ }
+#else
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value falls
+ /// within a specified range.
+ /// </summary>
+ public RangeConstraint InRange(IComparable from, IComparable to)
+ {
+ return (RangeConstraint)this.Append(new RangeConstraint(from, to));
+ }
+#endif
+
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ConstraintExpressionBase.cs b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintExpressionBase.cs
new file mode 100755
index 0000000..bbd892e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintExpressionBase.cs
@@ -0,0 +1,115 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public abstract class ConstraintExpressionBase
+ {
+ #region Instance Fields
+ /// <summary>
+ /// The ConstraintBuilder holding the elements recognized so far
+ /// </summary>
+ protected ConstraintBuilder builder;
+ #endregion
+
+ #region Constructors
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ConstraintExpressionBase"/> class.
+ /// </summary>
+ public ConstraintExpressionBase()
+ {
+ this.builder = new ConstraintBuilder();
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:ConstraintExpressionBase"/>
+ /// class passing in a ConstraintBuilder, which may be pre-populated.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public ConstraintExpressionBase(ConstraintBuilder builder)
+ {
+ this.builder = builder;
+ }
+ #endregion
+
+ #region ToString()
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <returns></returns>
+ public override string ToString()
+ {
+ return builder.Resolve().ToString();
+ }
+ #endregion
+
+ #region Append Methods
+ /// <summary>
+ /// Appends an operator to the expression and returns the
+ /// resulting expression itself.
+ /// </summary>
+ public ConstraintExpression Append(ConstraintOperator op)
+ {
+ builder.Append(op);
+ return (ConstraintExpression)this;
+ }
+
+ /// <summary>
+ /// Appends a self-resolving operator to the expression and
+ /// returns a new ResolvableConstraintExpression.
+ /// </summary>
+ public ResolvableConstraintExpression Append(SelfResolvingOperator op)
+ {
+ builder.Append(op);
+ return new ResolvableConstraintExpression(builder);
+ }
+
+ /// <summary>
+ /// Appends a constraint to the expression and returns that
+ /// constraint, which is associated with the current state
+ /// of the expression being built.
+ /// </summary>
+ public Constraint Append(Constraint constraint)
+ {
+ builder.Append(constraint);
+ return constraint;
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ConstraintFactory.cs b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintFactory.cs
new file mode 100755
index 0000000..84dd449
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ConstraintFactory.cs
@@ -0,0 +1,804 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Helper class with properties and methods that supply
+ /// a number of constraints used in Asserts.
+ /// </summary>
+ public class ConstraintFactory
+ {
+ #region Not
+
+ /// <summary>
+ /// Returns a ConstraintExpression that negates any
+ /// following constraint.
+ /// </summary>
+ public ConstraintExpression Not
+ {
+ get { return Is.Not; }
+ }
+
+ /// <summary>
+ /// Returns a ConstraintExpression that negates any
+ /// following constraint.
+ /// </summary>
+ public ConstraintExpression No
+ {
+ get { return Has.No; }
+ }
+
+ #endregion
+
+ #region All
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them succeed.
+ /// </summary>
+ public ConstraintExpression All
+ {
+ get { return Is.All; }
+ }
+
+ #endregion
+
+ #region Some
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if at least one of them succeeds.
+ /// </summary>
+ public ConstraintExpression Some
+ {
+ get { return Has.Some; }
+ }
+
+ #endregion
+
+ #region None
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them fail.
+ /// </summary>
+ public ConstraintExpression None
+ {
+ get { return Has.None; }
+ }
+
+ #endregion
+
+ #region Exactly(n)
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding only if a specified number of them succeed.
+ /// </summary>
+ public static ConstraintExpression Exactly(int expectedCount)
+ {
+ return Has.Exactly(expectedCount);
+ }
+
+ #endregion
+
+ #region Property
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public ResolvableConstraintExpression Property(string name)
+ {
+ return Has.Property(name);
+ }
+
+ #endregion
+
+ #region Length
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Length property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression Length
+ {
+ get { return Has.Length; }
+ }
+
+ #endregion
+
+ #region Count
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Count property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression Count
+ {
+ get { return Has.Count; }
+ }
+
+ #endregion
+
+ #region Message
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Message property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression Message
+ {
+ get { return Has.Message; }
+ }
+
+ #endregion
+
+ #region InnerException
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the InnerException property of the object being tested.
+ /// </summary>
+ public ResolvableConstraintExpression InnerException
+ {
+ get { return Has.InnerException; }
+ }
+
+ #endregion
+
+ #region Attribute
+
+ /// <summary>
+ /// Returns a new AttributeConstraint checking for the
+ /// presence of a particular attribute on an object.
+ /// </summary>
+ public ResolvableConstraintExpression Attribute(Type expectedType)
+ {
+ return Has.Attribute(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a new AttributeConstraint checking for the
+ /// presence of a particular attribute on an object.
+ /// </summary>
+ public ResolvableConstraintExpression Attribute<T>()
+ {
+ return Attribute(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region Null
+
+ /// <summary>
+ /// Returns a constraint that tests for null
+ /// </summary>
+ public NullConstraint Null
+ {
+ get { return new NullConstraint(); }
+ }
+
+ #endregion
+
+ #region True
+
+ /// <summary>
+ /// Returns a constraint that tests for True
+ /// </summary>
+ public TrueConstraint True
+ {
+ get { return new TrueConstraint(); }
+ }
+
+ #endregion
+
+ #region False
+
+ /// <summary>
+ /// Returns a constraint that tests for False
+ /// </summary>
+ public FalseConstraint False
+ {
+ get { return new FalseConstraint(); }
+ }
+
+ #endregion
+
+ #region Positive
+
+ /// <summary>
+ /// Returns a constraint that tests for a positive value
+ /// </summary>
+ public GreaterThanConstraint Positive
+ {
+ get { return new GreaterThanConstraint(0); }
+ }
+
+ #endregion
+
+ #region Negative
+
+ /// <summary>
+ /// Returns a constraint that tests for a negative value
+ /// </summary>
+ public LessThanConstraint Negative
+ {
+ get { return new LessThanConstraint(0); }
+ }
+
+ #endregion
+
+ #region NaN
+
+ /// <summary>
+ /// Returns a constraint that tests for NaN
+ /// </summary>
+ public NaNConstraint NaN
+ {
+ get { return new NaNConstraint(); }
+ }
+
+ #endregion
+
+ #region Empty
+
+ /// <summary>
+ /// Returns a constraint that tests for empty
+ /// </summary>
+ public EmptyConstraint Empty
+ {
+ get { return new EmptyConstraint(); }
+ }
+
+ #endregion
+
+ #region Unique
+
+ /// <summary>
+ /// Returns a constraint that tests whether a collection
+ /// contains all unique items.
+ /// </summary>
+ public UniqueItemsConstraint Unique
+ {
+ get { return new UniqueItemsConstraint(); }
+ }
+
+ #endregion
+
+ #region BinarySerializable
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Returns a constraint that tests whether an object graph is serializable in binary format.
+ /// </summary>
+ public BinarySerializableConstraint BinarySerializable
+ {
+ get { return new BinarySerializableConstraint(); }
+ }
+#endif
+
+ #endregion
+
+ #region XmlSerializable
+
+#if !SILVERLIGHT
+ /// <summary>
+ /// Returns a constraint that tests whether an object graph is serializable in xml format.
+ /// </summary>
+ public XmlSerializableConstraint XmlSerializable
+ {
+ get { return new XmlSerializableConstraint(); }
+ }
+#endif
+
+ #endregion
+
+ #region EqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests two items for equality
+ /// </summary>
+ public EqualConstraint EqualTo(object expected)
+ {
+ return new EqualConstraint(expected);
+ }
+
+ #endregion
+
+ #region SameAs
+
+ /// <summary>
+ /// Returns a constraint that tests that two references are the same object
+ /// </summary>
+ public SameAsConstraint SameAs(object expected)
+ {
+ return new SameAsConstraint(expected);
+ }
+
+ #endregion
+
+ #region GreaterThan
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than the suppled argument
+ /// </summary>
+ public GreaterThanConstraint GreaterThan(object expected)
+ {
+ return new GreaterThanConstraint(expected);
+ }
+
+ #endregion
+
+ #region GreaterThanOrEqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than or equal to the suppled argument
+ /// </summary>
+ public GreaterThanOrEqualConstraint GreaterThanOrEqualTo(object expected)
+ {
+ return new GreaterThanOrEqualConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than or equal to the suppled argument
+ /// </summary>
+ public GreaterThanOrEqualConstraint AtLeast(object expected)
+ {
+ return new GreaterThanOrEqualConstraint(expected);
+ }
+
+ #endregion
+
+ #region LessThan
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than the suppled argument
+ /// </summary>
+ public LessThanConstraint LessThan(object expected)
+ {
+ return new LessThanConstraint(expected);
+ }
+
+ #endregion
+
+ #region LessThanOrEqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than or equal to the suppled argument
+ /// </summary>
+ public LessThanOrEqualConstraint LessThanOrEqualTo(object expected)
+ {
+ return new LessThanOrEqualConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than or equal to the suppled argument
+ /// </summary>
+ public LessThanOrEqualConstraint AtMost(object expected)
+ {
+ return new LessThanOrEqualConstraint(expected);
+ }
+
+ #endregion
+
+ #region TypeOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual
+ /// value is of the exact type supplied as an argument.
+ /// </summary>
+ public ExactTypeConstraint TypeOf(Type expectedType)
+ {
+ return new ExactTypeConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual
+ /// value is of the exact type supplied as an argument.
+ /// </summary>
+ public ExactTypeConstraint TypeOf<T>()
+ {
+ return new ExactTypeConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region InstanceOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is of the type supplied as an argument or a derived type.
+ /// </summary>
+ public InstanceOfTypeConstraint InstanceOf(Type expectedType)
+ {
+ return new InstanceOfTypeConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is of the type supplied as an argument or a derived type.
+ /// </summary>
+ public InstanceOfTypeConstraint InstanceOf<T>()
+ {
+ return new InstanceOfTypeConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region AssignableFrom
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableFromConstraint AssignableFrom(Type expectedType)
+ {
+ return new AssignableFromConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableFromConstraint AssignableFrom<T>()
+ {
+ return new AssignableFromConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region AssignableTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableToConstraint AssignableTo(Type expectedType)
+ {
+ return new AssignableToConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public AssignableToConstraint AssignableTo<T>()
+ {
+ return new AssignableToConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region EquivalentTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is a collection containing the same elements as the
+ /// collection supplied as an argument.
+ /// </summary>
+ public CollectionEquivalentConstraint EquivalentTo(IEnumerable expected)
+ {
+ return new CollectionEquivalentConstraint(expected);
+ }
+
+ #endregion
+
+ #region SubsetOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is a subset of the collection supplied as an argument.
+ /// </summary>
+ public CollectionSubsetConstraint SubsetOf(IEnumerable expected)
+ {
+ return new CollectionSubsetConstraint(expected);
+ }
+
+ #endregion
+
+ #region Ordered
+
+ /// <summary>
+ /// Returns a constraint that tests whether a collection is ordered
+ /// </summary>
+ public CollectionOrderedConstraint Ordered
+ {
+ get { return new CollectionOrderedConstraint(); }
+ }
+
+ #endregion
+
+ #region Member
+
+ /// <summary>
+ /// Returns a new CollectionContainsConstraint checking for the
+ /// presence of a particular object in the collection.
+ /// </summary>
+ public CollectionContainsConstraint Member(object expected)
+ {
+ return new CollectionContainsConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a new CollectionContainsConstraint checking for the
+ /// presence of a particular object in the collection.
+ /// </summary>
+ public CollectionContainsConstraint Contains(object expected)
+ {
+ return new CollectionContainsConstraint(expected);
+ }
+
+ #endregion
+
+ #region Contains
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public ContainsConstraint Contains(string expected)
+ {
+ return new ContainsConstraint(expected);
+ }
+
+ #endregion
+
+ #region StringContaining
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public SubstringConstraint StringContaining(string expected)
+ {
+ return new SubstringConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public SubstringConstraint ContainsSubstring(string expected)
+ {
+ return new SubstringConstraint(expected);
+ }
+
+ #endregion
+
+ #region DoesNotContain
+
+ /// <summary>
+ /// Returns a constraint that fails if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public SubstringConstraint DoesNotContain(string expected)
+ {
+ return new ConstraintExpression().Not.ContainsSubstring(expected);
+ }
+
+ #endregion
+
+ #region StartsWith
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value starts with the substring supplied as an argument.
+ /// </summary>
+ public StartsWithConstraint StartsWith(string expected)
+ {
+ return new StartsWithConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value starts with the substring supplied as an argument.
+ /// </summary>
+ public StartsWithConstraint StringStarting(string expected)
+ {
+ return new StartsWithConstraint(expected);
+ }
+
+ #endregion
+
+ #region DoesNotStartWith
+
+ /// <summary>
+ /// Returns a constraint that fails if the actual
+ /// value starts with the substring supplied as an argument.
+ /// </summary>
+ public StartsWithConstraint DoesNotStartWith(string expected)
+ {
+ return new ConstraintExpression().Not.StartsWith(expected);
+ }
+
+ #endregion
+
+ #region EndsWith
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value ends with the substring supplied as an argument.
+ /// </summary>
+ public EndsWithConstraint EndsWith(string expected)
+ {
+ return new EndsWithConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value ends with the substring supplied as an argument.
+ /// </summary>
+ public EndsWithConstraint StringEnding(string expected)
+ {
+ return new EndsWithConstraint(expected);
+ }
+
+ #endregion
+
+ #region DoesNotEndWith
+
+ /// <summary>
+ /// Returns a constraint that fails if the actual
+ /// value ends with the substring supplied as an argument.
+ /// </summary>
+ public EndsWithConstraint DoesNotEndWith(string expected)
+ {
+ return new ConstraintExpression().Not.EndsWith(expected);
+ }
+
+ #endregion
+
+ #region Matches
+
+#if !NETCF
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value matches the regular expression supplied as an argument.
+ /// </summary>
+ public RegexConstraint Matches(string pattern)
+ {
+ return new RegexConstraint(pattern);
+ }
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value matches the regular expression supplied as an argument.
+ /// </summary>
+ public RegexConstraint StringMatching(string pattern)
+ {
+ return new RegexConstraint(pattern);
+ }
+#endif
+
+ #endregion
+
+ #region DoesNotMatch
+
+#if !NETCF
+ /// <summary>
+ /// Returns a constraint that fails if the actual
+ /// value matches the pattern supplied as an argument.
+ /// </summary>
+ public RegexConstraint DoesNotMatch(string pattern)
+ {
+ return new ConstraintExpression().Not.Matches(pattern);
+ }
+#endif
+
+ #endregion
+
+ #region SamePath
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same as an expected path after canonicalization.
+ /// </summary>
+ public SamePathConstraint SamePath(string expected)
+ {
+ return new SamePathConstraint(expected);
+ }
+
+ #endregion
+
+ #region SubPath
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same path or under an expected path after canonicalization.
+ /// </summary>
+ public SubPathConstraint SubPath(string expected)
+ {
+ return new SubPathConstraint(expected);
+ }
+
+ #endregion
+
+ #region SamePathOrUnder
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same path or under an expected path after canonicalization.
+ /// </summary>
+ public SamePathOrUnderConstraint SamePathOrUnder(string expected)
+ {
+ return new SamePathOrUnderConstraint(expected);
+ }
+
+ #endregion
+
+ #region InRange
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value falls
+ /// within a specified range.
+ /// </summary>
+ public RangeConstraint<T> InRange<T>(T from, T to) where T : IComparable<T>
+ {
+ return new RangeConstraint<T>(from, to);
+ }
+#else
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value falls
+ /// within a specified range.
+ /// </summary>
+ public RangeConstraint InRange(IComparable from, IComparable to)
+ {
+ return new RangeConstraint(from, to);
+ }
+#endif
+
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ContainsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ContainsConstraint.cs
new file mode 100755
index 0000000..da8012a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ContainsConstraint.cs
@@ -0,0 +1,183 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ // TODO Needs tests
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class ContainsConstraint : Constraint
+ {
+ readonly object expected;
+ Constraint realConstraint;
+ bool ignoreCase;
+
+#if CLR_2_0 || CLR_4_0
+ private List<EqualityAdapter> equalityAdapters = new List<EqualityAdapter>();
+#else
+ private ArrayList equalityAdapters = new ArrayList();
+#endif
+
+ private Constraint RealConstraint
+ {
+ get
+ {
+ if ( realConstraint == null )
+ {
+ if (actual is string)
+ {
+ StringConstraint constraint = new SubstringConstraint((string)expected);
+ if (this.ignoreCase)
+ constraint = constraint.IgnoreCase;
+ this.realConstraint = constraint;
+ }
+ else
+ {
+ CollectionItemsEqualConstraint constraint = new CollectionContainsConstraint(expected);
+
+ foreach (EqualityAdapter adapter in equalityAdapters)
+ constraint = constraint.Using(adapter);
+
+ this.realConstraint = constraint;
+ }
+ }
+
+ return realConstraint;
+ }
+ set
+ {
+ realConstraint = value;
+ }
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ContainsConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected.</param>
+ public ContainsConstraint( object expected ) : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Flag the constraint to ignore case and return self.
+ /// </summary>
+ public ContainsConstraint IgnoreCase
+ {
+ get { this.ignoreCase = true; return this; }
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return this.RealConstraint.Matches( actual );
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ this.RealConstraint.WriteDescriptionTo(writer);
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public ContainsConstraint Using(IComparer comparer)
+ {
+ return AddAdapter(EqualityAdapter.For(comparer));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Flag the constraint to use the supplied IComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public ContainsConstraint Using<T>(IComparer<T> comparer)
+ {
+ return AddAdapter(EqualityAdapter.For(comparer));
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied Comparison object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public ContainsConstraint Using<T>(Comparison<T> comparer)
+ {
+ return AddAdapter(EqualityAdapter.For(comparer));
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IEqualityComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public ContainsConstraint Using(IEqualityComparer comparer)
+ {
+ return AddAdapter(EqualityAdapter.For(comparer));
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IEqualityComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public ContainsConstraint Using<T>(IEqualityComparer<T> comparer)
+ {
+ return AddAdapter(EqualityAdapter.For(comparer));
+ }
+#endif
+
+ #region Helper Methods
+
+ private ContainsConstraint AddAdapter(EqualityAdapter adapter)
+ {
+ this.equalityAdapters.Add(adapter);
+ return this;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/DelayedConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/DelayedConstraint.cs
new file mode 100755
index 0000000..355fe31
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/DelayedConstraint.cs
@@ -0,0 +1,234 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !NETCF
+using System;
+using System.Threading;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints
+{
+ ///<summary>
+ /// Applies a delay to the match so that a match can be evaluated in the future.
+ ///</summary>
+ public class DelayedConstraint : PrefixConstraint
+ {
+ private readonly int delayInMilliseconds;
+ private readonly int pollingInterval;
+
+ ///<summary>
+ /// Creates a new DelayedConstraint
+ ///</summary>
+ ///<param name="baseConstraint">The inner constraint two decorate</param>
+ ///<param name="delayInMilliseconds">The time interval after which the match is performed</param>
+ ///<exception cref="InvalidOperationException">If the value of <paramref name="delayInMilliseconds"/> is less than 0</exception>
+ public DelayedConstraint(Constraint baseConstraint, int delayInMilliseconds)
+ : this(baseConstraint, delayInMilliseconds, 0) { }
+
+ ///<summary>
+ /// Creates a new DelayedConstraint
+ ///</summary>
+ ///<param name="baseConstraint">The inner constraint two decorate</param>
+ ///<param name="delayInMilliseconds">The time interval after which the match is performed</param>
+ ///<param name="pollingInterval">The time interval used for polling</param>
+ ///<exception cref="InvalidOperationException">If the value of <paramref name="delayInMilliseconds"/> is less than 0</exception>
+ public DelayedConstraint(Constraint baseConstraint, int delayInMilliseconds, int pollingInterval)
+ : base(baseConstraint)
+ {
+ if (delayInMilliseconds < 0)
+ throw new ArgumentException("Cannot check a condition in the past", "delayInMilliseconds");
+
+ this.delayInMilliseconds = delayInMilliseconds;
+ this.pollingInterval = pollingInterval;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for if the base constraint fails, false if it succeeds</returns>
+ public override bool Matches(object actual)
+ {
+ int remainingDelay = delayInMilliseconds;
+
+ while (pollingInterval > 0 && pollingInterval < remainingDelay)
+ {
+ remainingDelay -= pollingInterval;
+ Thread.Sleep(pollingInterval);
+ this.actual = actual;
+ if (baseConstraint.Matches(actual))
+ return true;
+ }
+
+ if (remainingDelay > 0)
+ Thread.Sleep(remainingDelay);
+ this.actual = actual;
+ return baseConstraint.Matches(actual);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a delegate
+ /// </summary>
+ /// <param name="del">The delegate whose value is to be tested</param>
+ /// <returns>True for if the base constraint fails, false if it succeeds</returns>
+#if CLR_2_0 || CLR_4_0
+ public override bool Matches<T>(ActualValueDelegate<T> del)
+#else
+ public override bool Matches(ActualValueDelegate del)
+#endif
+ {
+ int remainingDelay = delayInMilliseconds;
+
+ while (pollingInterval > 0 && pollingInterval < remainingDelay)
+ {
+ remainingDelay -= pollingInterval;
+ Thread.Sleep(pollingInterval);
+ this.actual = InvokeDelegate(del);
+
+ try
+ {
+ if (baseConstraint.Matches(actual))
+ return true;
+ }
+ catch
+ {
+ // Ignore any exceptions when polling
+ }
+ }
+
+ if (remainingDelay > 0)
+ Thread.Sleep(remainingDelay);
+ this.actual = InvokeDelegate(del);
+ return baseConstraint.Matches(actual);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ private static object InvokeDelegate<T>(ActualValueDelegate<T> del)
+ {
+#if NET_4_5
+ if (AsyncInvocationRegion.IsAsyncOperation(del))
+ using (AsyncInvocationRegion region = AsyncInvocationRegion.Create(del))
+ return region.WaitForPendingOperationsToComplete(del());
+#endif
+
+ return del();
+ }
+#else
+ private static object InvokeDelegate(ActualValueDelegate del)
+ {
+ return del();
+ }
+#endif
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">A reference to the value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches<T>(ref T actual)
+ {
+ int remainingDelay = delayInMilliseconds;
+
+ while (pollingInterval > 0 && pollingInterval < remainingDelay)
+ {
+ remainingDelay -= pollingInterval;
+ Thread.Sleep(pollingInterval);
+ this.actual = actual;
+
+ try
+ {
+ if (baseConstraint.Matches(actual))
+ return true;
+ }
+ catch (Exception)
+ {
+ // Ignore any exceptions when polling
+ }
+ }
+
+ if (remainingDelay > 0)
+ Thread.Sleep(remainingDelay);
+ this.actual = actual;
+ return baseConstraint.Matches(actual);
+ }
+#else
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given boolean reference.
+ /// Overridden to wait for the specified delay period before
+ /// calling the base constraint with the dereferenced value.
+ /// </summary>
+ /// <param name="actual">A reference to the value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(ref bool actual)
+ {
+ int remainingDelay = delayInMilliseconds;
+
+ while (pollingInterval > 0 && pollingInterval < remainingDelay)
+ {
+ remainingDelay -= pollingInterval;
+ Thread.Sleep(pollingInterval);
+ this.actual = actual;
+
+ if (baseConstraint.Matches(actual))
+ return true;
+ }
+
+ if (remainingDelay > 0)
+ Thread.Sleep(remainingDelay);
+ this.actual = actual;
+ return baseConstraint.Matches(actual);
+ }
+#endif
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ baseConstraint.WriteDescriptionTo(writer);
+ writer.Write(string.Format(" after {0} millisecond delay", delayInMilliseconds));
+ }
+
+ /// <summary>
+ /// Write the actual value for a failing constraint test to a MessageWriter.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ baseConstraint.WriteActualValueTo(writer);
+ }
+
+ /// <summary>
+ /// Returns the string representation of the constraint.
+ /// </summary>
+ protected override string GetStringRepresentation()
+ {
+ return string.Format("<after {0} {1}>", delayInMilliseconds, baseConstraint);
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EmptyCollectionConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/EmptyCollectionConstraint.cs
new file mode 100755
index 0000000..35dd7f8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EmptyCollectionConstraint.cs
@@ -0,0 +1,52 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// EmptyCollectionConstraint tests whether a collection is empty.
+ /// </summary>
+ public class EmptyCollectionConstraint : CollectionConstraint
+ {
+ /// <summary>
+ /// Check that the collection is empty
+ /// </summary>
+ /// <param name="collection"></param>
+ /// <returns></returns>
+ protected override bool doMatch(IEnumerable collection)
+ {
+ return IsEmpty(collection);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("<empty>");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EmptyConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/EmptyConstraint.cs
new file mode 100755
index 0000000..28779d2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EmptyConstraint.cs
@@ -0,0 +1,72 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class EmptyConstraint : Constraint
+ {
+ private Constraint RealConstraint
+ {
+ get
+ {
+ if (actual is string)
+ return new EmptyStringConstraint();
+ else if (actual is System.IO.DirectoryInfo)
+ return new EmptyDirectoryConstraint();
+ else
+ return new EmptyCollectionConstraint();
+ }
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (actual == null)
+ throw new ArgumentException("The actual value must be a non-null string, IEnumerable or DirectoryInfo", "actual");
+
+ return this.RealConstraint.Matches( actual );
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ this.RealConstraint.WriteDescriptionTo( writer );
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EmptyDirectoryConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/EmptyDirectoryConstraint.cs
new file mode 100755
index 0000000..092aa61
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EmptyDirectoryConstraint.cs
@@ -0,0 +1,91 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// EmptyDirectoryConstraint is used to test that a directory is empty
+ /// </summary>
+ public class EmptyDirectoryConstraint : Constraint
+ {
+ private int files = 0;
+ private int subdirs = 0;
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ DirectoryInfo dirInfo = actual as DirectoryInfo;
+ if (dirInfo == null)
+ throw new ArgumentException("The actual value must be a DirectoryInfo", "actual");
+
+#if SL_4_0 || SL_5_0
+ foreach (FileInfo file in dirInfo.EnumerateFiles())
+ files++;
+ foreach (DirectoryInfo dir in dirInfo.EnumerateDirectories())
+ subdirs++;
+#else
+ files = dirInfo.GetFiles().Length;
+ subdirs = dirInfo.GetDirectories().Length;
+#endif
+
+ return files == 0 && subdirs == 0;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write( "An empty directory" );
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ DirectoryInfo dir = actual as DirectoryInfo;
+ if (dir == null)
+ base.WriteActualValueTo(writer);
+ else
+ {
+ writer.WriteActualValue(dir);
+ writer.Write(" with {0} files and {1} directories", files, subdirs);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EmptyStringConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/EmptyStringConstraint.cs
new file mode 100755
index 0000000..48c9314
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EmptyStringConstraint.cs
@@ -0,0 +1,52 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// EmptyStringConstraint tests whether a string is empty.
+ /// </summary>
+ public class EmptyStringConstraint : Constraint
+ {
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ return actual as string == string.Empty;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("<empty>");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EndsWithConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/EndsWithConstraint.cs
new file mode 100755
index 0000000..7cf5ab3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EndsWithConstraint.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// EndsWithConstraint can test whether a string ends
+ /// with an expected substring.
+ /// </summary>
+ public class EndsWithConstraint : StringConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected string</param>
+ public EndsWithConstraint(string expected) : base(expected) { }
+
+ /// <summary>
+ /// Test whether the constraint is matched by the actual value.
+ /// This is a template method, which calls the IsMatch method
+ /// of the derived class.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool Matches(string actual)
+ {
+ if (this.caseInsensitive)
+ return actual.ToLower().EndsWith(expected.ToLower());
+ else
+ return actual.EndsWith(expected);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("String ending with");
+ writer.WriteExpectedValue(expected);
+ if (this.caseInsensitive)
+ writer.WriteModifier("ignoring case");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EqualConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/EqualConstraint.cs
new file mode 100755
index 0000000..e791c3e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EqualConstraint.cs
@@ -0,0 +1,565 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class EqualConstraint : Constraint
+ {
+ #region Static and Instance Fields
+
+ private readonly object expected;
+
+ private Tolerance tolerance = Tolerance.Empty;
+
+ /// <summary>
+ /// If true, strings in error messages will be clipped
+ /// </summary>
+ private bool clipStrings = true;
+
+ /// <summary>
+ /// NUnitEqualityComparer used to test equality.
+ /// </summary>
+ private NUnitEqualityComparer comparer = new NUnitEqualityComparer();
+
+ #region Message Strings
+ private static readonly string StringsDiffer_1 =
+ "String lengths are both {0}. Strings differ at index {1}.";
+ private static readonly string StringsDiffer_2 =
+ "Expected string length {0} but was {1}. Strings differ at index {2}.";
+ private static readonly string StreamsDiffer_1 =
+ "Stream lengths are both {0}. Streams differ at offset {1}.";
+ private static readonly string StreamsDiffer_2 =
+ "Expected Stream length {0} but was {1}.";// Streams differ at offset {2}.";
+ private static readonly string CollectionType_1 =
+ "Expected and actual are both {0}";
+ private static readonly string CollectionType_2 =
+ "Expected is {0}, actual is {1}";
+ private static readonly string ValuesDiffer_1 =
+ "Values differ at index {0}";
+ private static readonly string ValuesDiffer_2 =
+ "Values differ at expected index {0}, actual index {1}";
+ #endregion
+
+ #endregion
+
+ #region Constructor
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EqualConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public EqualConstraint(object expected) : base(expected)
+ {
+ this.expected = expected;
+ }
+ #endregion
+
+ #region Constraint Modifiers
+ /// <summary>
+ /// Flag the constraint to ignore case and return self.
+ /// </summary>
+ public EqualConstraint IgnoreCase
+ {
+ get
+ {
+ comparer.IgnoreCase = true;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Flag the constraint to suppress string clipping
+ /// and return self.
+ /// </summary>
+ public EqualConstraint NoClip
+ {
+ get
+ {
+ clipStrings = false;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Flag the constraint to compare arrays as collections
+ /// and return self.
+ /// </summary>
+ public EqualConstraint AsCollection
+ {
+ get
+ {
+ comparer.CompareAsCollection = true;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Flag the constraint to use a tolerance when determining equality.
+ /// </summary>
+ /// <param name="amount">Tolerance value to be used</param>
+ /// <returns>Self.</returns>
+ public EqualConstraint Within(object amount)
+ {
+ if (!tolerance.IsEmpty)
+ throw new InvalidOperationException("Within modifier may appear only once in a constraint expression");
+
+ tolerance = new Tolerance(amount);
+ return this;
+ }
+
+ /// <summary>
+ /// Switches the .Within() modifier to interpret its tolerance as
+ /// a distance in representable values (see remarks).
+ /// </summary>
+ /// <returns>Self.</returns>
+ /// <remarks>
+ /// 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.
+ /// </remarks>
+ public EqualConstraint Ulps
+ {
+ get
+ {
+ tolerance = tolerance.Ulps;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Switches the .Within() modifier to interpret its tolerance as
+ /// a percentage that the actual values is allowed to deviate from
+ /// the expected value.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Percent
+ {
+ get
+ {
+ tolerance = tolerance.Percent;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Causes the tolerance to be interpreted as a TimeSpan in days.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Days
+ {
+ get
+ {
+ tolerance = tolerance.Days;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Causes the tolerance to be interpreted as a TimeSpan in hours.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Hours
+ {
+ get
+ {
+ tolerance = tolerance.Hours;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Causes the tolerance to be interpreted as a TimeSpan in minutes.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Minutes
+ {
+ get
+ {
+ tolerance = tolerance.Minutes;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Causes the tolerance to be interpreted as a TimeSpan in seconds.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Seconds
+ {
+ get
+ {
+ tolerance = tolerance.Seconds;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Causes the tolerance to be interpreted as a TimeSpan in milliseconds.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Milliseconds
+ {
+ get
+ {
+ tolerance = tolerance.Milliseconds;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Causes the tolerance to be interpreted as a TimeSpan in clock ticks.
+ /// </summary>
+ /// <returns>Self</returns>
+ public EqualConstraint Ticks
+ {
+ get
+ {
+ tolerance = tolerance.Ticks;
+ return this;
+ }
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public EqualConstraint Using(IComparer comparer)
+ {
+ this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
+ return this;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Flag the constraint to use the supplied IComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public EqualConstraint Using<T>(IComparer<T> comparer)
+ {
+ this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
+ return this;
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied Comparison object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public EqualConstraint Using<T>(Comparison<T> comparer)
+ {
+ this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
+ return this;
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IEqualityComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public EqualConstraint Using(IEqualityComparer comparer)
+ {
+ this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
+ return this;
+ }
+
+ /// <summary>
+ /// Flag the constraint to use the supplied IEqualityComparer object.
+ /// </summary>
+ /// <param name="comparer">The IComparer object to use.</param>
+ /// <returns>Self.</returns>
+ public EqualConstraint Using<T>(IEqualityComparer<T> comparer)
+ {
+ this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
+ return this;
+ }
+#endif
+
+ #endregion
+
+ #region Public Methods
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ return comparer.AreEqual(expected, actual, ref tolerance);
+ }
+
+ /// <summary>
+ /// Write a failure message. Overridden to provide custom
+ /// failure messages for EqualConstraint.
+ /// </summary>
+ /// <param name="writer">The MessageWriter to write to</param>
+ public override void WriteMessageTo(MessageWriter writer)
+ {
+ DisplayDifferences(writer, expected, actual, 0);
+ }
+
+
+ /// <summary>
+ /// Write description of this constraint
+ /// </summary>
+ /// <param name="writer">The MessageWriter to write to</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WriteExpectedValue(expected);
+
+ if (tolerance != null && !tolerance.IsEmpty)
+ {
+ writer.WriteConnector("+/-");
+ writer.WriteExpectedValue(tolerance.Value);
+ if (tolerance.Mode != ToleranceMode.Linear)
+ writer.Write(" {0}", tolerance.Mode);
+ }
+
+ if (comparer.IgnoreCase)
+ writer.WriteModifier("ignoring case");
+ }
+
+ private void DisplayDifferences(MessageWriter writer, object expected, object actual, int depth)
+ {
+ if (expected is string && actual is string)
+ DisplayStringDifferences(writer, (string)expected, (string)actual);
+ else if (expected is ICollection && actual is ICollection)
+ DisplayCollectionDifferences(writer, (ICollection)expected, (ICollection)actual, depth);
+ else if (expected is IEnumerable && actual is IEnumerable)
+ DisplayEnumerableDifferences(writer, (IEnumerable)expected, (IEnumerable)actual, depth);
+ else if (expected is Stream && actual is Stream)
+ DisplayStreamDifferences(writer, (Stream)expected, (Stream)actual, depth);
+ else if (tolerance != null)
+ writer.DisplayDifferences(expected, actual, tolerance);
+ else
+ writer.DisplayDifferences(expected, actual);
+ }
+ #endregion
+
+ #region DisplayStringDifferences
+ private void DisplayStringDifferences(MessageWriter writer, string expected, string actual)
+ {
+ int mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, comparer.IgnoreCase);
+
+ if (expected.Length == actual.Length)
+ writer.WriteMessageLine(StringsDiffer_1, expected.Length, mismatch);
+ else
+ writer.WriteMessageLine(StringsDiffer_2, expected.Length, actual.Length, mismatch);
+
+ writer.DisplayStringDifferences(expected, actual, mismatch, comparer.IgnoreCase, clipStrings);
+ }
+ #endregion
+
+ #region DisplayStreamDifferences
+ private void DisplayStreamDifferences(MessageWriter writer, Stream expected, Stream actual, int depth)
+ {
+ if (expected.Length == actual.Length)
+ {
+ FailurePoint fp = (FailurePoint)comparer.FailurePoints[depth];
+ long offset = fp.Position;
+ writer.WriteMessageLine(StreamsDiffer_1, expected.Length, offset);
+ }
+ else
+ writer.WriteMessageLine(StreamsDiffer_2, expected.Length, actual.Length);
+ }
+ #endregion
+
+ #region DisplayCollectionDifferences
+ /// <summary>
+ /// Display the failure information for two collections that did not match.
+ /// </summary>
+ /// <param name="writer">The MessageWriter on which to display</param>
+ /// <param name="expected">The expected collection.</param>
+ /// <param name="actual">The actual collection</param>
+ /// <param name="depth">The depth of this failure in a set of nested collections</param>
+ private void DisplayCollectionDifferences(MessageWriter writer, ICollection expected, ICollection actual, int depth)
+ {
+ DisplayTypesAndSizes(writer, expected, actual, depth);
+
+ if (comparer.FailurePoints.Count > depth)
+ {
+ FailurePoint failurePoint = (FailurePoint)comparer.FailurePoints[depth];
+
+ DisplayFailurePoint(writer, expected, actual, failurePoint, depth);
+
+ if (failurePoint.ExpectedHasData && failurePoint.ActualHasData)
+ DisplayDifferences(
+ writer,
+ failurePoint.ExpectedValue,
+ failurePoint.ActualValue,
+ ++depth);
+ else if (failurePoint.ActualHasData)
+ {
+ writer.Write(" Extra: ");
+ writer.WriteCollectionElements(actual, failurePoint.Position, 3);
+ }
+ else
+ {
+ writer.Write(" Missing: ");
+ writer.WriteCollectionElements(expected, failurePoint.Position, 3);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The MessageWriter on which to display</param>
+ /// <param name="expected">The expected collection or array</param>
+ /// <param name="actual">The actual collection or array</param>
+ /// <param name="indent">The indentation level for the message line</param>
+ private void DisplayTypesAndSizes(MessageWriter writer, IEnumerable expected, IEnumerable actual, int indent)
+ {
+ string sExpected = MsgUtils.GetTypeRepresentation(expected);
+ if (expected is ICollection && !(expected is Array))
+ sExpected += string.Format(" with {0} elements", ((ICollection)expected).Count);
+
+ string sActual = MsgUtils.GetTypeRepresentation(actual);
+ if (actual is ICollection && !(actual is Array))
+ sActual += string.Format(" with {0} elements", ((ICollection)actual).Count);
+
+ if (sExpected == sActual)
+ writer.WriteMessageLine(indent, CollectionType_1, sExpected);
+ else
+ writer.WriteMessageLine(indent, CollectionType_2, sExpected, sActual);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The MessageWriter on which to display</param>
+ /// <param name="expected">The expected array</param>
+ /// <param name="actual">The actual array</param>
+ /// <param name="failurePoint">Index of the failure point in the underlying collections</param>
+ /// <param name="indent">The indentation level for the message line</param>
+ private void DisplayFailurePoint(MessageWriter writer, IEnumerable expected, IEnumerable actual, FailurePoint failurePoint, int indent)
+ {
+ Array expectedArray = expected as Array;
+ Array actualArray = actual as Array;
+
+ int expectedRank = expectedArray != null ? expectedArray.Rank : 1;
+ int actualRank = actualArray != null ? actualArray.Rank : 1;
+
+ bool useOneIndex = expectedRank == actualRank;
+
+ if (expectedArray != null && actualArray != null)
+ for (int r = 1; r < expectedRank && useOneIndex; r++)
+ if (expectedArray.GetLength(r) != actualArray.GetLength(r))
+ useOneIndex = false;
+
+ int[] expectedIndices = MsgUtils.GetArrayIndicesFromCollectionIndex(expected, failurePoint.Position);
+ if (useOneIndex)
+ {
+ writer.WriteMessageLine(indent, ValuesDiffer_1, MsgUtils.GetArrayIndicesAsString(expectedIndices));
+ }
+ else
+ {
+ int[] actualIndices = MsgUtils.GetArrayIndicesFromCollectionIndex(actual, failurePoint.Position);
+ writer.WriteMessageLine(indent, ValuesDiffer_2,
+ MsgUtils.GetArrayIndicesAsString(expectedIndices), MsgUtils.GetArrayIndicesAsString(actualIndices));
+ }
+ }
+
+ private static object GetValueFromCollection(ICollection collection, int index)
+ {
+ Array array = collection as Array;
+
+ if (array != null && array.Rank > 1)
+ return array.GetValue(MsgUtils.GetArrayIndicesFromCollectionIndex(array, index));
+
+ if (collection is IList)
+ return ((IList)collection)[index];
+
+ foreach (object obj in collection)
+ if (--index < 0)
+ return obj;
+
+ return null;
+ }
+ #endregion
+
+ #region DisplayEnumerableDifferences
+
+ /// <summary>
+ /// Display the failure information for two IEnumerables that did not match.
+ /// </summary>
+ /// <param name="writer">The MessageWriter on which to display</param>
+ /// <param name="expected">The expected enumeration.</param>
+ /// <param name="actual">The actual enumeration</param>
+ /// <param name="depth">The depth of this failure in a set of nested collections</param>
+ private void DisplayEnumerableDifferences(MessageWriter writer, IEnumerable expected, IEnumerable actual, int depth)
+ {
+ DisplayTypesAndSizes(writer, expected, actual, depth);
+
+ if (comparer.FailurePoints.Count > depth)
+ {
+ FailurePoint failurePoint = (FailurePoint)comparer.FailurePoints[depth];
+
+ DisplayFailurePoint(writer, expected, actual, failurePoint, depth);
+
+ if (failurePoint.ExpectedHasData && failurePoint.ActualHasData)
+ DisplayDifferences(
+ writer,
+ failurePoint.ExpectedValue,
+ failurePoint.ActualValue,
+ ++depth);
+ //else if (failurePoint.ActualHasData)
+ //{
+ // writer.Write(" Extra: ");
+ // writer.WriteCollectionElements(actual, failurePoint.Position, 3);
+ //}
+ //else
+ //{
+ // writer.Write(" Missing: ");
+ // writer.WriteCollectionElements(expected, failurePoint.Position, 3);
+ //}
+ }
+ }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/EqualityAdapter.cs b/NUnitLite-0.9.0/src/framework/Constraints/EqualityAdapter.cs
new file mode 100755
index 0000000..04d103c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/EqualityAdapter.cs
@@ -0,0 +1,241 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// EqualityAdapter class handles all equality comparisons
+ /// that use an IEqualityComparer, IEqualityComparer&lt;T&gt;
+ /// or a ComparisonAdapter.
+ /// </summary>
+ public abstract class EqualityAdapter
+ {
+ /// <summary>
+ /// Compares two objects, returning true if they are equal
+ /// </summary>
+ public abstract bool AreEqual(object x, object y);
+
+ /// <summary>
+ /// Returns true if the two objects can be compared by this adapter.
+ /// The base adapter cannot handle IEnumerables except for strings.
+ /// </summary>
+ public virtual bool CanCompare(object x, object y)
+ {
+ if (x is string && y is string)
+ return true;
+
+ if (x is IEnumerable || y is IEnumerable)
+ return false;
+
+ return true;
+ }
+
+ #region Nested IComparer Adapter
+
+ /// <summary>
+ /// Returns an EqualityAdapter that wraps an IComparer.
+ /// </summary>
+ public static EqualityAdapter For(IComparer comparer)
+ {
+ return new ComparerAdapter(comparer);
+ }
+
+ /// <summary>
+ /// EqualityAdapter that wraps an IComparer.
+ /// </summary>
+ class ComparerAdapter : EqualityAdapter
+ {
+ private IComparer comparer;
+
+ public ComparerAdapter(IComparer comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ public override bool AreEqual(object x, object y)
+ {
+ return comparer.Compare(x, y) == 0;
+ }
+ }
+
+ #endregion
+
+#if CLR_2_0 || CLR_4_0
+ #region Nested IEqualityComparer Adapter
+
+ /// <summary>
+ /// Returns an EqualityAdapter that wraps an IEqualityComparer.
+ /// </summary>
+ public static EqualityAdapter For(IEqualityComparer comparer)
+ {
+ return new EqualityComparerAdapter(comparer);
+ }
+
+ class EqualityComparerAdapter : EqualityAdapter
+ {
+ private IEqualityComparer comparer;
+
+ public EqualityComparerAdapter(IEqualityComparer comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ public override bool AreEqual(object x, object y)
+ {
+ return comparer.Equals(x, y);
+ }
+ }
+
+ #endregion
+
+ #region Nested GenericEqualityAdapter<T>
+
+ abstract class GenericEqualityAdapter<T> : EqualityAdapter
+ {
+ /// <summary>
+ /// Returns true if the two objects can be compared by this adapter.
+ /// Generic adapter requires objects of the specified type.
+ /// </summary>
+ public override bool CanCompare(object x, object y)
+ {
+ return typeof(T).IsAssignableFrom(x.GetType())
+ && typeof(T).IsAssignableFrom(y.GetType());
+ }
+
+ protected void ThrowIfNotCompatible(object x, object y)
+ {
+ if (!typeof(T).IsAssignableFrom(x.GetType()))
+ throw new ArgumentException("Cannot compare " + x.ToString());
+
+ if (!typeof(T).IsAssignableFrom(y.GetType()))
+ throw new ArgumentException("Cannot compare " + y.ToString());
+ }
+ }
+
+ #endregion
+
+ #region Nested IEqualityComparer<T> Adapter
+
+ /// <summary>
+ /// Returns an EqualityAdapter that wraps an IEqualityComparer&lt;T&gt;.
+ /// </summary>
+ public static EqualityAdapter For<T>(IEqualityComparer<T> comparer)
+ {
+ return new EqualityComparerAdapter<T>(comparer);
+ }
+
+ class EqualityComparerAdapter<T> : GenericEqualityAdapter<T>
+ {
+ private IEqualityComparer<T> comparer;
+
+ public EqualityComparerAdapter(IEqualityComparer<T> comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ public override bool AreEqual(object x, object y)
+ {
+ ThrowIfNotCompatible(x, y);
+ return comparer.Equals((T)x, (T)y);
+ }
+ }
+
+ #endregion
+
+ #region Nested IComparer<T> Adapter
+
+ /// <summary>
+ /// Returns an EqualityAdapter that wraps an IComparer&lt;T&gt;.
+ /// </summary>
+ public static EqualityAdapter For<T>(IComparer<T> comparer)
+ {
+ return new ComparerAdapter<T>(comparer);
+ }
+
+ /// <summary>
+ /// EqualityAdapter that wraps an IComparer.
+ /// </summary>
+ class ComparerAdapter<T> : GenericEqualityAdapter<T>
+ {
+ private IComparer<T> comparer;
+
+ public ComparerAdapter(IComparer<T> comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ public override bool AreEqual(object x, object y)
+ {
+ ThrowIfNotCompatible(x, y);
+ return comparer.Compare((T)x, (T)y) == 0;
+ }
+ }
+
+ #endregion
+
+ #region Nested Comparison<T> Adapter
+
+ /// <summary>
+ /// Returns an EqualityAdapter that wraps a Comparison&lt;T&gt;.
+ /// </summary>
+ public static EqualityAdapter For<T>(Comparison<T> comparer)
+ {
+ return new ComparisonAdapter<T>(comparer);
+ }
+
+ class ComparisonAdapter<T> : GenericEqualityAdapter<T>
+ {
+ private Comparison<T> comparer;
+
+ public ComparisonAdapter(Comparison<T> comparer)
+ {
+ this.comparer = comparer;
+ }
+
+ public override bool AreEqual(object x, object y)
+ {
+ ThrowIfNotCompatible(x, y);
+ return comparer.Invoke((T)x, (T)y) == 0;
+ }
+ }
+
+ #endregion
+#endif
+ }
+
+ /// <summary>
+ /// EqualityAdapterList represents a list of EqualityAdapters
+ /// in a common class across platforms.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ class EqualityAdapterList : System.Collections.Generic.List<EqualityAdapter> { }
+#else
+ class EqualityAdapterList : ArrayList { }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ExactCountConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ExactCountConstraint.cs
new file mode 100755
index 0000000..2c85e7c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ExactCountConstraint.cs
@@ -0,0 +1,94 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ExactCountConstraint applies another constraint to each
+ /// item in a collection, succeeding only if a specified
+ /// number of items succeed.
+ /// </summary>
+ public class ExactCountConstraint : PrefixConstraint
+ {
+ private int expectedCount;
+
+ /// <summary>
+ /// Construct an ExactCountConstraint on top of an existing constraint
+ /// </summary>
+ /// <param name="expectedCount"></param>
+ /// <param name="itemConstraint"></param>
+ public ExactCountConstraint(int expectedCount, Constraint itemConstraint)
+ : base(itemConstraint)
+ {
+ this.DisplayName = "one";
+ this.expectedCount = expectedCount;
+ }
+
+ /// <summary>
+ /// Apply the item constraint to each item in the collection,
+ /// succeeding only if the expected number of items pass.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (!(actual is IEnumerable))
+ throw new ArgumentException("The actual value must be an IEnumerable", "actual");
+
+ int count = 0;
+ foreach (object item in (IEnumerable)actual)
+ if (baseConstraint.Matches(item))
+ count++;
+
+ return count == expectedCount;
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ switch(expectedCount)
+ {
+ case 0:
+ writer.WritePredicate("no item");
+ break;
+ case 1:
+ writer.WritePredicate("exactly one item");
+ break;
+ default:
+ writer.WritePredicate("exactly " + expectedCount.ToString() + " items");
+ break;
+ }
+
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ExactTypeConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ExactTypeConstraint.cs
new file mode 100755
index 0000000..fda8e72
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ExactTypeConstraint.cs
@@ -0,0 +1,64 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ExactTypeConstraint is used to test that an object
+ /// is of the exact type provided in the constructor
+ /// </summary>
+ public class ExactTypeConstraint : TypeConstraint
+ {
+ /// <summary>
+ /// Construct an ExactTypeConstraint for a given Type
+ /// </summary>
+ /// <param name="type">The expected Type.</param>
+ public ExactTypeConstraint(Type type)
+ : base(type)
+ {
+ this.DisplayName = "typeof";
+ }
+
+ /// <summary>
+ /// Test that an object is of the exact type specified
+ /// </summary>
+ /// <param name="actual">The actual value.</param>
+ /// <returns>True if the tested object is of the exact type provided, otherwise false.</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return actual != null && actual.GetType() == this.expectedType;
+ }
+
+ /// <summary>
+ /// Write the description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The MessageWriter to use</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WriteExpectedValue(expectedType);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ExceptionTypeConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ExceptionTypeConstraint.cs
new file mode 100755
index 0000000..2d62db5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ExceptionTypeConstraint.cs
@@ -0,0 +1,59 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ExceptionTypeConstraint is a special version of ExactTypeConstraint
+ /// used to provided detailed info about the exception thrown in
+ /// an error message.
+ /// </summary>
+ public class ExceptionTypeConstraint : ExactTypeConstraint
+ {
+ /// <summary>
+ /// Constructs an ExceptionTypeConstraint
+ /// </summary>
+ public ExceptionTypeConstraint(Type type) : base(type) { }
+
+ /// <summary>
+ /// Write the actual value for a failing constraint test to a
+ /// MessageWriter. Overriden to write additional information
+ /// in the case of an Exception.
+ /// </summary>
+ /// <param name="writer">The MessageWriter to use</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ Exception ex = actual as Exception;
+ base.WriteActualValueTo(writer);
+
+ if (ex != null)
+ {
+ writer.WriteLine(" ({0})", ex.Message);
+ writer.Write(ex.StackTrace);
+ }
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/FailurePoint.cs b/NUnitLite-0.9.0/src/framework/Constraints/FailurePoint.cs
new file mode 100755
index 0000000..f726ce9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/FailurePoint.cs
@@ -0,0 +1,68 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// FailurePoint class represents one point of failure
+ /// in an equality test.
+ /// </summary>
+ public class FailurePoint
+ {
+ /// <summary>
+ /// The location of the failure
+ /// </summary>
+ public int Position;
+
+ /// <summary>
+ /// The expected value
+ /// </summary>
+ public object ExpectedValue;
+
+ /// <summary>
+ /// The actual value
+ /// </summary>
+ public object ActualValue;
+
+ /// <summary>
+ /// Indicates whether the expected value is valid
+ /// </summary>
+ public bool ExpectedHasData;
+
+ /// <summary>
+ /// Indicates whether the actual value is valid
+ /// </summary>
+ public bool ActualHasData;
+ }
+
+ /// <summary>
+ /// FailurePointList represents a set of FailurePoints
+ /// in a cross-platform way.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ class FailurePointList : System.Collections.Generic.List<FailurePoint> { }
+#else
+ class FailurePointList : System.Collections.ArrayList { }
+#endif
+
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/FalseConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/FalseConstraint.cs
new file mode 100755
index 0000000..64b82de
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/FalseConstraint.cs
@@ -0,0 +1,36 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// FalseConstraint tests that the actual value is false
+ /// </summary>
+ public class FalseConstraint : BasicConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:FalseConstraint"/> class.
+ /// </summary>
+ public FalseConstraint() : base(false, "False") { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/FloatingPointNumerics.cs b/NUnitLite-0.9.0/src/framework/Constraints/FloatingPointNumerics.cs
new file mode 100755
index 0000000..2870a95
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/FloatingPointNumerics.cs
@@ -0,0 +1,251 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace NUnit.Framework.Constraints
+{
+
+ /// <summary>Helper routines for working with floating point numbers</summary>
+ /// <remarks>
+ /// <para>
+ /// The floating point comparison code is based on this excellent article:
+ /// http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
+ /// </para>
+ /// <para>
+ /// "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.
+ /// </para>
+ /// <para>
+ /// 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.
+ /// </para>
+ /// </remarks>
+ public class FloatingPointNumerics
+ {
+
+ #region struct FloatIntUnion
+
+ /// <summary>Union of a floating point variable and an integer</summary>
+ [StructLayout(LayoutKind.Explicit)]
+ private struct FloatIntUnion
+ {
+ /// <summary>The union's value as a floating point variable</summary>
+ [FieldOffset(0)]
+ public float Float;
+
+ /// <summary>The union's value as an integer</summary>
+ [FieldOffset(0)]
+ public int Int;
+
+ /// <summary>The union's value as an unsigned integer</summary>
+ [FieldOffset(0)]
+ public uint UInt;
+ }
+
+ #endregion // struct FloatIntUnion
+
+ #region struct DoubleLongUnion
+
+ /// <summary>Union of a double precision floating point variable and a long</summary>
+ [StructLayout(LayoutKind.Explicit)]
+ private struct DoubleLongUnion
+ {
+ /// <summary>The union's value as a double precision floating point variable</summary>
+ [FieldOffset(0)]
+ public double Double;
+
+ /// <summary>The union's value as a long</summary>
+ [FieldOffset(0)]
+ public long Long;
+
+ /// <summary>The union's value as an unsigned long</summary>
+ [FieldOffset(0)]
+ public ulong ULong;
+ }
+
+ #endregion // struct DoubleLongUnion
+
+ /// <summary>Compares two floating point values for equality</summary>
+ /// <param name="left">First floating point value to be compared</param>
+ /// <param name="right">Second floating point value t be compared</param>
+ /// <param name="maxUlps">
+ /// Maximum number of representable floating point values that are allowed to
+ /// be between the left and the right floating point values
+ /// </param>
+ /// <returns>True if both numbers are equal or close to being equal</returns>
+ /// <remarks>
+ /// <para>
+ /// 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.
+ /// </para>
+ /// <para>
+ /// 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.
+ /// </para>
+ /// <para>
+ /// Implementation partially follows the code outlined here:
+ /// http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/
+ /// </para>
+ /// </remarks>
+ public static bool AreAlmostEqualUlps(float left, float right, int maxUlps)
+ {
+ FloatIntUnion leftUnion = new FloatIntUnion();
+ FloatIntUnion rightUnion = new FloatIntUnion();
+
+ leftUnion.Float = left;
+ rightUnion.Float = right;
+
+ uint leftSignMask = (leftUnion.UInt >> 31);
+ uint rightSignMask = (rightUnion.UInt >> 31);
+
+ uint leftTemp = ((0x80000000 - leftUnion.UInt) & leftSignMask);
+ leftUnion.UInt = leftTemp | (leftUnion.UInt & ~leftSignMask);
+
+ uint rightTemp = ((0x80000000 - rightUnion.UInt) & rightSignMask);
+ rightUnion.UInt = rightTemp | (rightUnion.UInt & ~rightSignMask);
+
+ return (Math.Abs(leftUnion.Int - rightUnion.Int) <= maxUlps);
+ }
+
+ /// <summary>Compares two double precision floating point values for equality</summary>
+ /// <param name="left">First double precision floating point value to be compared</param>
+ /// <param name="right">Second double precision floating point value t be compared</param>
+ /// <param name="maxUlps">
+ /// 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
+ /// </param>
+ /// <returns>True if both numbers are equal or close to being equal</returns>
+ /// <remarks>
+ /// <para>
+ /// 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.
+ /// </para>
+ /// <para>
+ /// 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.
+ /// </para>
+ /// <para>
+ /// Implementation partially follows the code outlined here:
+ /// http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/
+ /// </para>
+ /// </remarks>
+ public static bool AreAlmostEqualUlps(double left, double right, long maxUlps)
+ {
+ DoubleLongUnion leftUnion = new DoubleLongUnion();
+ DoubleLongUnion rightUnion = new DoubleLongUnion();
+
+ leftUnion.Double = left;
+ rightUnion.Double = right;
+
+ ulong leftSignMask = (leftUnion.ULong >> 63);
+ ulong rightSignMask = (rightUnion.ULong >> 63);
+
+ ulong leftTemp = ((0x8000000000000000 - leftUnion.ULong) & leftSignMask);
+ leftUnion.ULong = leftTemp | (leftUnion.ULong & ~leftSignMask);
+
+ ulong rightTemp = ((0x8000000000000000 - rightUnion.ULong) & rightSignMask);
+ rightUnion.ULong = rightTemp | (rightUnion.ULong & ~rightSignMask);
+
+ return (Math.Abs(leftUnion.Long - rightUnion.Long) <= maxUlps);
+ }
+
+ /// <summary>
+ /// Reinterprets the memory contents of a floating point value as an integer value
+ /// </summary>
+ /// <param name="value">
+ /// Floating point value whose memory contents to reinterpret
+ /// </param>
+ /// <returns>
+ /// The memory contents of the floating point value interpreted as an integer
+ /// </returns>
+ public static int ReinterpretAsInt(float value)
+ {
+ FloatIntUnion union = new FloatIntUnion();
+ union.Float = value;
+ return union.Int;
+ }
+
+ /// <summary>
+ /// Reinterprets the memory contents of a double precision floating point
+ /// value as an integer value
+ /// </summary>
+ /// <param name="value">
+ /// Double precision floating point value whose memory contents to reinterpret
+ /// </param>
+ /// <returns>
+ /// The memory contents of the double precision floating point value
+ /// interpreted as an integer
+ /// </returns>
+ public static long ReinterpretAsLong(double value)
+ {
+ DoubleLongUnion union = new DoubleLongUnion();
+ union.Double = value;
+ return union.Long;
+ }
+
+ /// <summary>
+ /// Reinterprets the memory contents of an integer as a floating point value
+ /// </summary>
+ /// <param name="value">Integer value whose memory contents to reinterpret</param>
+ /// <returns>
+ /// The memory contents of the integer value interpreted as a floating point value
+ /// </returns>
+ public static float ReinterpretAsFloat(int value)
+ {
+ FloatIntUnion union = new FloatIntUnion();
+ union.Int = value;
+ return union.Float;
+ }
+
+ /// <summary>
+ /// Reinterprets the memory contents of an integer value as a double precision
+ /// floating point value
+ /// </summary>
+ /// <param name="value">Integer whose memory contents to reinterpret</param>
+ /// <returns>
+ /// The memory contents of the integer interpreted as a double precision
+ /// floating point value
+ /// </returns>
+ public static double ReinterpretAsDouble(long value)
+ {
+ DoubleLongUnion union = new DoubleLongUnion();
+ union.Long = value;
+ return union.Double;
+ }
+
+ private FloatingPointNumerics()
+ {
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/GreaterThanConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/GreaterThanConstraint.cs
new file mode 100755
index 0000000..bcf4aef
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/GreaterThanConstraint.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Tests whether a value is greater than the value supplied to its constructor
+ /// </summary>
+ public class GreaterThanConstraint : ComparisonConstraint
+ {
+ /// <summary>
+ /// The value against which a comparison is to be made
+ /// </summary>
+ private object expected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public GreaterThanConstraint(object expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("greater than");
+ writer.WriteExpectedValue(expected);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (expected == null || actual == null)
+ throw new ArgumentException("Cannot compare using a null reference");
+
+ return comparer.Compare(actual, expected) > 0;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/GreaterThanOrEqualConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/GreaterThanOrEqualConstraint.cs
new file mode 100755
index 0000000..a885858
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/GreaterThanOrEqualConstraint.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Tests whether a value is greater than or equal to the value supplied to its constructor
+ /// </summary>
+ public class GreaterThanOrEqualConstraint : ComparisonConstraint
+ {
+ /// <summary>
+ /// The value against which a comparison is to be made
+ /// </summary>
+ private object expected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public GreaterThanOrEqualConstraint(object expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("greater than or equal to");
+ writer.WriteExpectedValue(expected);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (expected == null || actual == null)
+ throw new ArgumentException("Cannot compare using a null reference");
+
+ return comparer.Compare(actual, expected) >= 0;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/IResolveConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/IResolveConstraint.cs
new file mode 100755
index 0000000..eb19988
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/IResolveConstraint.cs
@@ -0,0 +1,38 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// The IConstraintExpression interface is implemented by all
+ /// complete and resolvable constraints and expressions.
+ /// </summary>
+ public interface IResolveConstraint
+ {
+ /// <summary>
+ /// Return the top-level constraint for this expression
+ /// </summary>
+ /// <returns></returns>
+ Constraint Resolve();
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/InstanceOfTypeConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/InstanceOfTypeConstraint.cs
new file mode 100755
index 0000000..435e081
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/InstanceOfTypeConstraint.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// InstanceOfTypeConstraint is used to test that an object
+ /// is of the same type provided or derived from it.
+ /// </summary>
+ public class InstanceOfTypeConstraint : TypeConstraint
+ {
+ /// <summary>
+ /// Construct an InstanceOfTypeConstraint for the type provided
+ /// </summary>
+ /// <param name="type">The expected Type</param>
+ public InstanceOfTypeConstraint(Type type)
+ : base(type)
+ {
+ this.DisplayName = "instanceof";
+ }
+
+ /// <summary>
+ /// Test whether an object is of the specified type or a derived type
+ /// </summary>
+ /// <param name="actual">The object to be tested</param>
+ /// <returns>True if the object is of the provided type or derives from it, otherwise false.</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return actual != null && expectedType.IsInstanceOfType(actual);
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The MessageWriter to use</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("instance of");
+ writer.WriteExpectedValue(expectedType);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/LessThanConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/LessThanConstraint.cs
new file mode 100755
index 0000000..87651a9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/LessThanConstraint.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Tests whether a value is less than the value supplied to its constructor
+ /// </summary>
+ public class LessThanConstraint : ComparisonConstraint
+ {
+ /// <summary>
+ /// The value against which a comparison is to be made
+ /// </summary>
+ private object expected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public LessThanConstraint(object expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("less than");
+ writer.WriteExpectedValue(expected);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (expected == null || actual == null)
+ throw new ArgumentException("Cannot compare using a null reference");
+
+ return comparer.Compare(actual, expected) < 0;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/LessThanOrEqualConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/LessThanOrEqualConstraint.cs
new file mode 100755
index 0000000..829e62e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/LessThanOrEqualConstraint.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Tests whether a value is less than or equal to the value supplied to its constructor
+ /// </summary>
+ public class LessThanOrEqualConstraint : ComparisonConstraint
+ {
+ /// <summary>
+ /// The value against which a comparison is to be made
+ /// </summary>
+ private object expected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public LessThanOrEqualConstraint(object expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("less than or equal to");
+ writer.WriteExpectedValue(expected);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (expected == null || actual == null)
+ throw new ArgumentException("Cannot compare using a null reference");
+
+ return comparer.Compare(actual, expected) <= 0;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/MessageWriter.cs b/NUnitLite-0.9.0/src/framework/Constraints/MessageWriter.cs
new file mode 100755
index 0000000..11adc87
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/MessageWriter.cs
@@ -0,0 +1,154 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.IO;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public abstract class MessageWriter : StringWriter
+ {
+
+ /// <summary>
+ /// Construct a MessageWriter given a culture
+ /// </summary>
+ protected MessageWriter() : base(System.Globalization.CultureInfo.InvariantCulture) { }
+
+ /// <summary>
+ /// Abstract method to get the max line length
+ /// </summary>
+ public abstract int MaxLineLength { get; set; }
+
+ /// <summary>
+ /// Method to write single line message with optional args, usually
+ /// written to precede the general failure message.
+ /// </summary>
+ /// <param name="message">The message to be written</param>
+ /// <param name="args">Any arguments used in formatting the message</param>
+ public void WriteMessageLine(string message, params object[] args)
+ {
+ WriteMessageLine(0, message, args);
+ }
+
+ /// <summary>
+ /// Method to write single line message with optional args, usually
+ /// written to precede the general failure message, at a givel
+ /// indentation level.
+ /// </summary>
+ /// <param name="level">The indentation level of the message</param>
+ /// <param name="message">The message to be written</param>
+ /// <param name="args">Any arguments used in formatting the message</param>
+ public abstract void WriteMessageLine(int level, string message, params object[] args);
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="constraint">The constraint that failed</param>
+ public abstract void DisplayDifferences(Constraint constraint);
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value causing the failure</param>
+ public abstract void DisplayDifferences(object expected, object actual);
+
+ /// <summary>
+ /// Display Expected and Actual lines for given values, including
+ /// a tolerance value on the Expected line.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value causing the failure</param>
+ /// <param name="tolerance">The tolerance within which the test was made</param>
+ public abstract void DisplayDifferences(object expected, object actual, Tolerance tolerance);
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="expected">The expected string value</param>
+ /// <param name="actual">The actual string value</param>
+ /// <param name="mismatch">The point at which the strings don't match or -1</param>
+ /// <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
+ /// <param name="clipping">If true, the strings should be clipped to fit the line</param>
+ public abstract void DisplayStringDifferences(string expected, string actual, int mismatch, bool ignoreCase, bool clipping);
+
+ /// <summary>
+ /// Writes the text for a connector.
+ /// </summary>
+ /// <param name="connector">The connector.</param>
+ public abstract void WriteConnector(string connector);
+
+ /// <summary>
+ /// Writes the text for a predicate.
+ /// </summary>
+ /// <param name="predicate">The predicate.</param>
+ public abstract void WritePredicate(string predicate);
+
+ /// <summary>
+ /// Writes the text for an expected value.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public abstract void WriteExpectedValue(object expected);
+
+ /// <summary>
+ /// Writes the text for a modifier
+ /// </summary>
+ /// <param name="modifier">The modifier.</param>
+ public abstract void WriteModifier(string modifier);
+
+ /// <summary>
+ /// Writes the text for an actual value.
+ /// </summary>
+ /// <param name="actual">The actual value.</param>
+ public abstract void WriteActualValue(object actual);
+
+ /// <summary>
+ /// Writes the text for a generalized value.
+ /// </summary>
+ /// <param name="val">The value.</param>
+ public abstract void WriteValue(object val);
+
+ /// <summary>
+ /// Writes the text for a collection value,
+ /// starting at a particular point, to a max length
+ /// </summary>
+ /// <param name="collection">The collection containing elements to write.</param>
+ /// <param name="start">The starting point of the elements to write</param>
+ /// <param name="max">The maximum number of elements to write</param>
+ public abstract void WriteCollectionElements(IEnumerable collection, int start, int max);
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/MsgUtils.cs b/NUnitLite-0.9.0/src/framework/Constraints/MsgUtils.cs
new file mode 100755
index 0000000..c6e1fe1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/MsgUtils.cs
@@ -0,0 +1,282 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Text;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Static methods used in creating messages
+ /// </summary>
+ public class MsgUtils
+ {
+ /// <summary>
+ /// Static string used when strings are clipped
+ /// </summary>
+ private const string ELLIPSIS = "...";
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public static string GetTypeRepresentation(object obj)
+ {
+ Array array = obj as Array;
+ if (array == null)
+ return string.Format("<{0}>", obj.GetType());
+
+ StringBuilder sb = new StringBuilder();
+ Type elementType = array.GetType();
+ int nest = 0;
+ while (elementType.IsArray)
+ {
+ elementType = elementType.GetElementType();
+ ++nest;
+ }
+ sb.Append(elementType.ToString());
+ sb.Append('[');
+ for (int r = 0; r < array.Rank; r++)
+ {
+ if (r > 0) sb.Append(',');
+ sb.Append(array.GetLength(r));
+ }
+ sb.Append(']');
+
+ while (--nest > 0)
+ sb.Append("[]");
+
+ return string.Format("<{0}>", sb.ToString());
+ }
+ /// <summary>
+ /// Converts any control characters in a string
+ /// to their escaped representation.
+ /// </summary>
+ /// <param name="s">The string to be converted</param>
+ /// <returns>The converted string</returns>
+ public static string EscapeControlChars(string s)
+ {
+ if (s != null)
+ {
+ StringBuilder sb = new StringBuilder();
+
+ foreach (char c in s)
+ {
+ switch (c)
+ {
+ //case '\'':
+ // sb.Append("\\\'");
+ // break;
+ //case '\"':
+ // sb.Append("\\\"");
+ // break;
+ case '\\':
+ sb.Append("\\\\");
+ break;
+ case '\0':
+ sb.Append("\\0");
+ break;
+ case '\a':
+ sb.Append("\\a");
+ break;
+ case '\b':
+ sb.Append("\\b");
+ break;
+ case '\f':
+ sb.Append("\\f");
+ break;
+ case '\n':
+ sb.Append("\\n");
+ break;
+ case '\r':
+ sb.Append("\\r");
+ break;
+ case '\t':
+ sb.Append("\\t");
+ break;
+ case '\v':
+ sb.Append("\\v");
+ break;
+
+ case '\x0085':
+ case '\x2028':
+ case '\x2029':
+ sb.Append(string.Format("\\x{0:X4}", (int)c));
+ break;
+
+ default:
+ sb.Append(c);
+ break;
+ }
+ }
+
+ s = sb.ToString();
+ }
+
+ return s;
+ }
+
+ /// <summary>
+ /// Return the a string representation for a set of indices into an array
+ /// </summary>
+ /// <param name="indices">Array of indices for which a string is needed</param>
+ public static string GetArrayIndicesAsString(int[] indices)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append('[');
+ for (int r = 0; r < indices.Length; r++)
+ {
+ if (r > 0) sb.Append(',');
+ sb.Append(indices[r].ToString());
+ }
+ sb.Append(']');
+ return sb.ToString();
+ }
+
+ /// <summary>
+ /// Get an array of indices representing the point in a enumerable,
+ /// collection or array corresponding to a single int index into the
+ /// collection.
+ /// </summary>
+ /// <param name="collection">The collection to which the indices apply</param>
+ /// <param name="index">Index in the collection</param>
+ /// <returns>Array of indices</returns>
+ public static int[] GetArrayIndicesFromCollectionIndex(IEnumerable collection, int index)
+ {
+ Array array = collection as Array;
+
+ int rank = array == null ? 1 : array.Rank;
+ int[] result = new int[rank];
+
+ for (int r = rank; --r > 0; )
+ {
+ int l = array.GetLength(r);
+ result[r] = index % l;
+ index /= l;
+ }
+
+ result[0] = index;
+ return result;
+ }
+
+ /// <summary>
+ /// Clip a string to a given length, starting at a particular offset, returning the clipped
+ /// string with ellipses representing the removed parts
+ /// </summary>
+ /// <param name="s">The string to be clipped</param>
+ /// <param name="maxStringLength">The maximum permitted length of the result string</param>
+ /// <param name="clipStart">The point at which to start clipping</param>
+ /// <returns>The clipped string</returns>
+ public static string ClipString(string s, int maxStringLength, int clipStart)
+ {
+ int clipLength = maxStringLength;
+ StringBuilder sb = new StringBuilder();
+
+ if (clipStart > 0)
+ {
+ clipLength -= ELLIPSIS.Length;
+ sb.Append(ELLIPSIS);
+ }
+
+ if (s.Length - clipStart > clipLength)
+ {
+ clipLength -= ELLIPSIS.Length;
+ sb.Append(s.Substring(clipStart, clipLength));
+ sb.Append(ELLIPSIS);
+ }
+ else if (clipStart > 0)
+ sb.Append(s.Substring(clipStart));
+ else
+ sb.Append(s);
+
+ return sb.ToString();
+ }
+
+ /// <summary>
+ /// Clip the expected and actual strings in a coordinated fashion,
+ /// so that they may be displayed together.
+ /// </summary>
+ /// <param name="expected"></param>
+ /// <param name="actual"></param>
+ /// <param name="maxDisplayLength"></param>
+ /// <param name="mismatch"></param>
+ public static void ClipExpectedAndActual(ref string expected, ref string actual, int maxDisplayLength, int mismatch)
+ {
+ // Case 1: Both strings fit on line
+ int maxStringLength = Math.Max(expected.Length, actual.Length);
+ if (maxStringLength <= maxDisplayLength)
+ return;
+
+ // Case 2: Assume that the tail of each string fits on line
+ int clipLength = maxDisplayLength - ELLIPSIS.Length;
+ int clipStart = maxStringLength - clipLength;
+
+ // Case 3: If it doesn't, center the mismatch position
+ if (clipStart > mismatch)
+ clipStart = Math.Max(0, mismatch - clipLength / 2);
+
+ expected = ClipString(expected, maxDisplayLength, clipStart);
+ actual = ClipString(actual, maxDisplayLength, clipStart);
+ }
+
+ /// <summary>
+ /// Shows the position two strings start to differ. Comparison
+ /// starts at the start index.
+ /// </summary>
+ /// <param name="expected">The expected string</param>
+ /// <param name="actual">The actual string</param>
+ /// <param name="istart">The index in the strings at which comparison should start</param>
+ /// <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
+ /// <returns>-1 if no mismatch found, or the index where mismatch found</returns>
+ static public int FindMismatchPosition(string expected, string actual, int istart, bool ignoreCase)
+ {
+ int length = Math.Min(expected.Length, actual.Length);
+
+ string s1 = ignoreCase ? expected.ToLower() : expected;
+ string s2 = ignoreCase ? actual.ToLower() : actual;
+
+ for (int i = istart; i < length; i++)
+ {
+ if (s1[i] != s2[i])
+ return i;
+ }
+
+ //
+ // Strings have same content up to the length of the shorter string.
+ // Mismatch occurs because string lengths are different, so show
+ // that they start differing where the shortest string ends
+ //
+ if (expected.Length != actual.Length)
+ return length;
+
+ //
+ // Same strings : We shouldn't get here
+ //
+ return -1;
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NUnitComparer.cs b/NUnitLite-0.9.0/src/framework/Constraints/NUnitComparer.cs
new file mode 100755
index 0000000..d774f0a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NUnitComparer.cs
@@ -0,0 +1,80 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NUnitComparer encapsulates NUnit's default behavior
+ /// in comparing two objects.
+ /// </summary>
+ public class NUnitComparer : IComparer
+ {
+ /// <summary>
+ /// Returns the default NUnitComparer.
+ /// </summary>
+ public static NUnitComparer Default
+ {
+ get { return new NUnitComparer(); }
+ }
+
+ /// <summary>
+ /// Compares two objects
+ /// </summary>
+ /// <param name="x"></param>
+ /// <param name="y"></param>
+ /// <returns></returns>
+ public int Compare(object x, object y)
+ {
+ if (x == null)
+ return y == null ? 0 : -1;
+ else if (y == null)
+ return +1;
+
+ if (Numerics.IsNumericType(x) && Numerics.IsNumericType(y))
+ return Numerics.Compare(x, y);
+
+ if (x is IComparable)
+ return ((IComparable)x).CompareTo(y);
+
+ if (y is IComparable)
+ return -((IComparable)y).CompareTo(x);
+
+ Type xType = x.GetType();
+ Type yType = y.GetType();
+
+ MethodInfo method = xType.GetMethod("CompareTo", new Type[] { yType });
+ if (method != null)
+ return (int)method.Invoke(x, new object[] { y });
+
+ method = yType.GetMethod("CompareTo", new Type[] { xType });
+ if (method != null)
+ return -(int)method.Invoke(y, new object[] { x });
+
+ throw new ArgumentException("Neither value implements IComparable or IComparable<T>");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NUnitEqualityComparer.cs b/NUnitLite-0.9.0/src/framework/Constraints/NUnitEqualityComparer.cs
new file mode 100755
index 0000000..d3bc1bd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NUnitEqualityComparer.cs
@@ -0,0 +1,482 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Reflection;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NUnitEqualityComparer encapsulates NUnit's handling of
+ /// equality tests between objects.
+ /// </summary>
+ public class NUnitEqualityComparer
+ {
+ #region Static and Instance Fields
+
+ /// <summary>
+ /// If true, all string comparisons will ignore case
+ /// </summary>
+ private bool caseInsensitive;
+
+ /// <summary>
+ /// If true, arrays will be treated as collections, allowing
+ /// those of different dimensions to be compared
+ /// </summary>
+ private bool compareAsCollection;
+
+ /// <summary>
+ /// Comparison objects used in comparisons for some constraints.
+ /// </summary>
+ private EqualityAdapterList externalComparers = new EqualityAdapterList();
+
+ /// <summary>
+ /// List of points at which a failure occured.
+ /// </summary>
+ private FailurePointList failurePoints;
+
+ /// <summary>
+ /// RecursionDetector used to check for recursion when
+ /// evaluating self-referencing enumerables.
+ /// </summary>
+ private RecursionDetector recursionDetector;
+
+ private static readonly int BUFFER_SIZE = 4096;
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Returns the default NUnitEqualityComparer
+ /// </summary>
+ public static NUnitEqualityComparer Default
+ {
+ get { return new NUnitEqualityComparer(); }
+ }
+ /// <summary>
+ /// Gets and sets a flag indicating whether case should
+ /// be ignored in determining equality.
+ /// </summary>
+ public bool IgnoreCase
+ {
+ get { return caseInsensitive; }
+ set { caseInsensitive = value; }
+ }
+
+ /// <summary>
+ /// Gets and sets a flag indicating that arrays should be
+ /// compared as collections, without regard to their shape.
+ /// </summary>
+ public bool CompareAsCollection
+ {
+ get { return compareAsCollection; }
+ set { compareAsCollection = value; }
+ }
+
+ /// <summary>
+ /// Gets the list of external comparers to be used to
+ /// test for equality. They are applied to members of
+ /// collections, in place of NUnit's own logic.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public IList<EqualityAdapter> ExternalComparers
+#else
+ public IList ExternalComparers
+#endif
+ {
+ get { return externalComparers; }
+ }
+
+ /// <summary>
+ /// Gets the list of failure points for the last Match performed.
+ /// The list consists of objects to be interpreted by the caller.
+ /// This generally means that the caller may only make use of
+ /// objects it has placed on the list at a particular depthy.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public IList<FailurePoint> FailurePoints
+#else
+ public IList FailurePoints
+#endif
+ {
+ get { return failurePoints; }
+ }
+ #endregion
+
+ #region Public Methods
+ /// <summary>
+ /// Compares two objects for equality within a tolerance, setting
+ /// the tolerance to the actual tolerance used if an empty
+ /// tolerance is supplied.
+ /// </summary>
+ public bool AreEqual(object expected, object actual, ref Tolerance tolerance)
+ {
+ this.failurePoints = new FailurePointList();
+ this.recursionDetector = new RecursionDetector();
+
+ return ObjectsEqual(expected, actual, ref tolerance);
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private bool ObjectsEqual(object expected, object actual, ref Tolerance tolerance)
+ {
+ if (expected == null && actual == null)
+ return true;
+
+ if (expected == null || actual == null)
+ return false;
+
+ if (object.ReferenceEquals(expected, actual))
+ return true;
+
+ Type xType = expected.GetType();
+ Type yType = actual.GetType();
+
+ EqualityAdapter externalComparer = GetExternalComparer(expected, actual);
+ if (externalComparer != null)
+ return externalComparer.AreEqual(expected, actual);
+
+ if (xType.IsArray && yType.IsArray && !compareAsCollection)
+ return ArraysEqual((Array)expected, (Array)actual, ref tolerance);
+
+ if (expected is IDictionary && actual is IDictionary)
+ return DictionariesEqual((IDictionary)expected, (IDictionary)actual, ref tolerance);
+
+ if (expected is IEnumerable && actual is IEnumerable && !(expected is string && actual is string))
+ return EnumerablesEqual((IEnumerable)expected, (IEnumerable)actual, ref tolerance);
+
+ if (expected is string && actual is string)
+ return StringsEqual((string)expected, (string)actual);
+
+ if (expected is Stream && actual is Stream)
+ return StreamsEqual((Stream)expected, (Stream)actual);
+
+ if (expected is DirectoryInfo && actual is DirectoryInfo)
+ return DirectoriesEqual((DirectoryInfo)expected, (DirectoryInfo)actual);
+
+ if (Numerics.IsNumericType(expected) && Numerics.IsNumericType(actual))
+ return Numerics.AreEqual(expected, actual, ref tolerance);
+
+ if (tolerance != null && tolerance.Value is TimeSpan)
+ {
+ TimeSpan amount = (TimeSpan)tolerance.Value;
+
+ if (expected is DateTime && actual is DateTime)
+ return ((DateTime)expected - (DateTime)actual).Duration() <= amount;
+
+ if (expected is TimeSpan && actual is TimeSpan)
+ return ((TimeSpan)expected - (TimeSpan)actual).Duration() <= amount;
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ if (FirstImplementsIEquatableOfSecond(xType, yType))
+ return InvokeFirstIEquatableEqualsSecond(expected, actual);
+ else if (FirstImplementsIEquatableOfSecond(yType, xType))
+ return InvokeFirstIEquatableEqualsSecond(actual, expected);
+#endif
+
+ return expected.Equals(actual);
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ private static bool FirstImplementsIEquatableOfSecond(Type first, Type second)
+ {
+ Type[] equatableArguments = GetEquatableGenericArguments(first);
+
+ foreach (var xEquatableArgument in equatableArguments)
+ if (xEquatableArgument.Equals(second))
+ return true;
+
+ return false;
+ }
+
+ private static Type[] GetEquatableGenericArguments(Type type)
+ {
+ foreach (Type @interface in type.GetInterfaces())
+ if (@interface.IsGenericType && @interface.GetGenericTypeDefinition().Equals(typeof(IEquatable<>)))
+ return @interface.GetGenericArguments();
+
+ return new Type[0];
+ }
+
+ private static bool InvokeFirstIEquatableEqualsSecond(object first, object second)
+ {
+ MethodInfo equals = typeof(IEquatable<>).MakeGenericType(second.GetType()).GetMethod("Equals");
+
+ return (bool)equals.Invoke(first, new object[] { second });
+ }
+#endif
+
+ private EqualityAdapter GetExternalComparer(object x, object y)
+ {
+ foreach (EqualityAdapter adapter in externalComparers)
+ if (adapter.CanCompare(x, y))
+ return adapter;
+
+ return null;
+ }
+
+ /// <summary>
+ /// Helper method to compare two arrays
+ /// </summary>
+ private bool ArraysEqual(Array expected, Array actual, ref Tolerance tolerance)
+ {
+ int rank = expected.Rank;
+
+ if (rank != actual.Rank)
+ return false;
+
+ for (int r = 1; r < rank; r++)
+ if (expected.GetLength(r) != actual.GetLength(r))
+ return false;
+
+ return EnumerablesEqual((IEnumerable)expected, (IEnumerable)actual, ref tolerance);
+ }
+
+ private bool DictionariesEqual(IDictionary expected, IDictionary actual, ref Tolerance tolerance)
+ {
+ if (expected.Count != actual.Count)
+ return false;
+
+ CollectionTally tally = new CollectionTally(this, expected.Keys);
+ if (!tally.TryRemove(actual.Keys) || tally.Count > 0)
+ return false;
+
+ foreach (object key in expected.Keys)
+ if (!ObjectsEqual(expected[key], actual[key], ref tolerance))
+ return false;
+
+ return true;
+ }
+
+ private bool StringsEqual(string expected, string actual)
+ {
+ string s1 = caseInsensitive ? expected.ToLower() : expected;
+ string s2 = caseInsensitive ? actual.ToLower() : actual;
+
+ return s1.Equals(s2);
+ }
+
+ private bool EnumerablesEqual(IEnumerable expected, IEnumerable actual, ref Tolerance tolerance)
+ {
+ if (recursionDetector.CheckRecursion(expected, actual))
+ return false;
+
+ IEnumerator expectedEnum = expected.GetEnumerator();
+ IEnumerator actualEnum = actual.GetEnumerator();
+
+ int count;
+ for (count = 0; ; count++)
+ {
+ bool expectedHasData = expectedEnum.MoveNext();
+ bool actualHasData = actualEnum.MoveNext();
+
+ if (!expectedHasData && !actualHasData)
+ return true;
+
+ if (expectedHasData != actualHasData ||
+ !ObjectsEqual(expectedEnum.Current, actualEnum.Current, ref tolerance))
+ {
+ FailurePoint fp = new FailurePoint();
+ fp.Position = count;
+ fp.ExpectedHasData = expectedHasData;
+ if (expectedHasData)
+ fp.ExpectedValue = expectedEnum.Current;
+ fp.ActualHasData = actualHasData;
+ if (actualHasData)
+ fp.ActualValue = actualEnum.Current;
+ failurePoints.Insert(0, fp);
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Method to compare two DirectoryInfo objects
+ /// </summary>
+ /// <param name="expected">first directory to compare</param>
+ /// <param name="actual">second directory to compare</param>
+ /// <returns>true if equivalent, false if not</returns>
+ private static bool DirectoriesEqual(DirectoryInfo expected, DirectoryInfo actual)
+ {
+ // Do quick compares first
+ if (expected.Attributes != actual.Attributes ||
+ expected.CreationTime != actual.CreationTime ||
+ expected.LastAccessTime != actual.LastAccessTime)
+ {
+ return false;
+ }
+
+ // TODO: Find a cleaner way to do this
+ return new SamePathConstraint(expected.FullName).Matches(actual.FullName);
+ }
+
+ private bool StreamsEqual(Stream expected, Stream actual)
+ {
+ if (expected == actual) return true;
+
+ if (!expected.CanRead)
+ throw new ArgumentException("Stream is not readable", "expected");
+ if (!actual.CanRead)
+ throw new ArgumentException("Stream is not readable", "actual");
+ if (!expected.CanSeek)
+ throw new ArgumentException("Stream is not seekable", "expected");
+ if (!actual.CanSeek)
+ throw new ArgumentException("Stream is not seekable", "actual");
+
+ if (expected.Length != actual.Length) return false;
+
+ byte[] bufferExpected = new byte[BUFFER_SIZE];
+ byte[] bufferActual = new byte[BUFFER_SIZE];
+
+ BinaryReader binaryReaderExpected = new BinaryReader(expected);
+ BinaryReader binaryReaderActual = new BinaryReader(actual);
+
+ long expectedPosition = expected.Position;
+ long actualPosition = actual.Position;
+
+ try
+ {
+ binaryReaderExpected.BaseStream.Seek(0, SeekOrigin.Begin);
+ binaryReaderActual.BaseStream.Seek(0, SeekOrigin.Begin);
+
+ for (long readByte = 0; readByte < expected.Length; readByte += BUFFER_SIZE)
+ {
+ binaryReaderExpected.Read(bufferExpected, 0, BUFFER_SIZE);
+ binaryReaderActual.Read(bufferActual, 0, BUFFER_SIZE);
+
+ for (int count = 0; count < BUFFER_SIZE; ++count)
+ {
+ if (bufferExpected[count] != bufferActual[count])
+ {
+ FailurePoint fp = new FailurePoint();
+ fp.Position = (int)readByte + count;
+ failurePoints.Insert(0, fp);
+ return false;
+ }
+ }
+ }
+ }
+ finally
+ {
+ expected.Position = expectedPosition;
+ actual.Position = actualPosition;
+ }
+
+ return true;
+ }
+
+ #endregion
+
+ #region Nested RecursionDetector class
+
+ /// <summary>
+ /// RecursionDetector detects when a comparison
+ /// between two enumerables has reached a point
+ /// where the same objects that were previously
+ /// compared are again being compared. This allows
+ /// the caller to stop the comparison if desired.
+ /// </summary>
+ class RecursionDetector
+ {
+#if CLR_2_0 || CLR_4_0
+ readonly Dictionary<UnorderedReferencePair, object> table = new Dictionary<UnorderedReferencePair, object>();
+#else
+ readonly Hashtable table = new Hashtable();
+#endif
+
+ /// <summary>
+ /// Check whether two objects have previously
+ /// been compared, returning true if they have.
+ /// The two objects are remembered, so that a
+ /// second call will always return true.
+ /// </summary>
+ public bool CheckRecursion(IEnumerable expected, IEnumerable actual)
+ {
+ UnorderedReferencePair pair = new UnorderedReferencePair(expected, actual);
+
+ if (ContainsPair(pair))
+ return true;
+
+ table.Add(pair, null);
+ return false;
+ }
+
+ private bool ContainsPair(UnorderedReferencePair pair)
+ {
+#if CLR_2_0 || CLR_4_0
+ return table.ContainsKey(pair);
+#else
+ return table.Contains(pair);
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ class UnorderedReferencePair : IEquatable<UnorderedReferencePair>
+#else
+ class UnorderedReferencePair
+#endif
+ {
+ private readonly object first;
+ private readonly object second;
+
+ public UnorderedReferencePair(object first, object second)
+ {
+ this.first = first;
+ this.second = second;
+ }
+
+ public bool Equals(UnorderedReferencePair other)
+ {
+ return (Equals(first, other.first) && Equals(second, other.second)) ||
+ (Equals(first, other.second) && Equals(second, other.first));
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj)) return false;
+ return obj is UnorderedReferencePair && Equals((UnorderedReferencePair)obj);
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ return ((first != null ? first.GetHashCode() : 0) * 397) ^ ((second != null ? second.GetHashCode() : 0) * 397);
+ }
+ }
+ }
+ }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NaNConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/NaNConstraint.cs
new file mode 100755
index 0000000..0f087d7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NaNConstraint.cs
@@ -0,0 +1,52 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NaNConstraint tests that the actual value is a double or float NaN
+ /// </summary>
+ public class NaNConstraint : Constraint
+ {
+ /// <summary>
+ /// Test that the actual value is an NaN
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return actual is double && double.IsNaN((double)actual)
+ || actual is float && float.IsNaN((float)actual);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a specified writer
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("NaN");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NoItemConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/NoItemConstraint.cs
new file mode 100755
index 0000000..9431144
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NoItemConstraint.cs
@@ -0,0 +1,75 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NoItemConstraint applies another constraint to each
+ /// item in a collection, failing if any of them succeeds.
+ /// </summary>
+ public class NoItemConstraint : PrefixConstraint
+ {
+ /// <summary>
+ /// Construct a NoItemConstraint on top of an existing constraint
+ /// </summary>
+ /// <param name="itemConstraint"></param>
+ public NoItemConstraint(Constraint itemConstraint)
+ : base(itemConstraint)
+ {
+ this.DisplayName = "none";
+ }
+
+ /// <summary>
+ /// Apply the item constraint to each item in the collection,
+ /// failing if any item fails.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (!(actual is IEnumerable))
+ throw new ArgumentException("The actual value must be an IEnumerable", "actual");
+
+ foreach (object item in (IEnumerable)actual)
+ if (baseConstraint.Matches(item))
+ return false;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("no item");
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NotConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/NotConstraint.cs
new file mode 100755
index 0000000..36f1196
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NotConstraint.cs
@@ -0,0 +1,68 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NotConstraint negates the effect of some other constraint
+ /// </summary>
+ public class NotConstraint : PrefixConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NotConstraint"/> class.
+ /// </summary>
+ /// <param name="baseConstraint">The base constraint to be negated.</param>
+ public NotConstraint(Constraint baseConstraint)
+ : base(baseConstraint) { }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for if the base constraint fails, false if it succeeds</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ return !baseConstraint.Matches(actual);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("not");
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+
+ /// <summary>
+ /// Write the actual value for a failing constraint test to a MessageWriter.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ baseConstraint.WriteActualValueTo(writer);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NullConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/NullConstraint.cs
new file mode 100755
index 0000000..a8bfe04
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NullConstraint.cs
@@ -0,0 +1,36 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NullConstraint tests that the actual value is null
+ /// </summary>
+ public class NullConstraint : BasicConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:NullConstraint"/> class.
+ /// </summary>
+ public NullConstraint() : base(null, "null") { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/NullOrEmptyStringConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/NullOrEmptyStringConstraint.cs
new file mode 100755
index 0000000..7731d74
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/NullOrEmptyStringConstraint.cs
@@ -0,0 +1,72 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// NullEmptyStringConstraint tests whether a string is either null or empty.
+ /// </summary>
+ public class NullOrEmptyStringConstraint : Constraint
+ {
+ /// <summary>
+ /// Constructs a new NullOrEmptyStringConstraint
+ /// </summary>
+ public NullOrEmptyStringConstraint()
+ {
+ this.DisplayName = "nullorempty";
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ // NOTE: Do not change this to use string.IsNullOrEmpty
+ // since that won't work in earlier versions of .NET
+
+ this.actual = actual;
+
+ if (actual == null) return true;
+
+ string actualAsString = actual as string;
+
+ if (actualAsString == null)
+ throw new ArgumentException("Actual value must be a string", "actual");
+
+ return actualAsString == string.Empty;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("null or empty string");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Numerics.cs b/NUnitLite-0.9.0/src/framework/Constraints/Numerics.cs
new file mode 100755
index 0000000..20ada05
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Numerics.cs
@@ -0,0 +1,380 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// The Numerics class contains common operations on numeric values.
+ /// </summary>
+ public class Numerics
+ {
+ #region Numeric Type Recognition
+ /// <summary>
+ /// Checks the type of the object, returning true if
+ /// the object is a numeric type.
+ /// </summary>
+ /// <param name="obj">The object to check</param>
+ /// <returns>true if the object is a numeric type</returns>
+ public static bool IsNumericType(Object obj)
+ {
+ return IsFloatingPointNumeric(obj) || IsFixedPointNumeric(obj);
+ }
+
+ /// <summary>
+ /// Checks the type of the object, returning true if
+ /// the object is a floating point numeric type.
+ /// </summary>
+ /// <param name="obj">The object to check</param>
+ /// <returns>true if the object is a floating point numeric type</returns>
+ public static bool IsFloatingPointNumeric(Object obj)
+ {
+ if (null != obj)
+ {
+ if (obj is System.Double) return true;
+ if (obj is System.Single) return true;
+ }
+ return false;
+ }
+ /// <summary>
+ /// Checks the type of the object, returning true if
+ /// the object is a fixed point numeric type.
+ /// </summary>
+ /// <param name="obj">The object to check</param>
+ /// <returns>true if the object is a fixed point numeric type</returns>
+ public static bool IsFixedPointNumeric(Object obj)
+ {
+ if (null != obj)
+ {
+ if (obj is System.Byte) return true;
+ if (obj is System.SByte) return true;
+ if (obj is System.Decimal) return true;
+ if (obj is System.Int32) return true;
+ if (obj is System.UInt32) return true;
+ if (obj is System.Int64) return true;
+ if (obj is System.UInt64) return true;
+ if (obj is System.Int16) return true;
+ if (obj is System.UInt16) return true;
+ }
+ return false;
+ }
+ #endregion
+
+ #region Numeric Equality
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <param name="tolerance">A reference to the tolerance in effect</param>
+ /// <returns>True if the values are equal</returns>
+ public static bool AreEqual(object expected, object actual, ref Tolerance tolerance)
+ {
+ if (expected is double || actual is double)
+ return AreEqual(Convert.ToDouble(expected), Convert.ToDouble(actual), ref tolerance);
+
+ if (expected is float || actual is float)
+ return AreEqual(Convert.ToSingle(expected), Convert.ToSingle(actual), ref tolerance);
+
+ if (tolerance.Mode == ToleranceMode.Ulps)
+ throw new InvalidOperationException("Ulps may only be specified for floating point arguments");
+
+ if (expected is decimal || actual is decimal)
+ return AreEqual(Convert.ToDecimal(expected), Convert.ToDecimal(actual), tolerance);
+
+ if (expected is ulong || actual is ulong)
+ return AreEqual(Convert.ToUInt64(expected), Convert.ToUInt64(actual), tolerance);
+
+ if (expected is long || actual is long)
+ return AreEqual(Convert.ToInt64(expected), Convert.ToInt64(actual), tolerance);
+
+ if (expected is uint || actual is uint)
+ return AreEqual(Convert.ToUInt32(expected), Convert.ToUInt32(actual), tolerance);
+
+ return AreEqual(Convert.ToInt32(expected), Convert.ToInt32(actual), tolerance);
+ }
+
+ private static bool AreEqual(double expected, double actual, ref Tolerance tolerance)
+ {
+ if (double.IsNaN(expected) && double.IsNaN(actual))
+ return true;
+
+ // Handle infinity specially since subtracting two infinite values gives
+ // NaN and the following test fails. mono also needs NaN to be handled
+ // specially although ms.net could use either method. Also, handle
+ // situation where no tolerance is used.
+ if (double.IsInfinity(expected) || double.IsNaN(expected) || double.IsNaN(actual))
+ {
+ return expected.Equals(actual);
+ }
+
+ if (tolerance.IsEmpty && GlobalSettings.DefaultFloatingPointTolerance > 0.0d)
+ tolerance = new Tolerance(GlobalSettings.DefaultFloatingPointTolerance);
+
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ return Math.Abs(expected - actual) <= Convert.ToDouble(tolerance.Value);
+
+ case ToleranceMode.Percent:
+ if (expected == 0.0)
+ return expected.Equals(actual);
+
+ double relativeError = Math.Abs((expected - actual) / expected);
+ return (relativeError <= Convert.ToDouble(tolerance.Value) / 100.0);
+
+ case ToleranceMode.Ulps:
+ return FloatingPointNumerics.AreAlmostEqualUlps(
+ expected, actual, Convert.ToInt64(tolerance.Value));
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+
+ private static bool AreEqual(float expected, float actual, ref Tolerance tolerance)
+ {
+ if (float.IsNaN(expected) && float.IsNaN(actual))
+ return true;
+
+ // handle infinity specially since subtracting two infinite values gives
+ // NaN and the following test fails. mono also needs NaN to be handled
+ // specially although ms.net could use either method.
+ if (float.IsInfinity(expected) || float.IsNaN(expected) || float.IsNaN(actual))
+ {
+ return expected.Equals(actual);
+ }
+
+ if (tolerance.IsEmpty && GlobalSettings.DefaultFloatingPointTolerance > 0.0d)
+ tolerance = new Tolerance(GlobalSettings.DefaultFloatingPointTolerance);
+
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ return Math.Abs(expected - actual) <= Convert.ToDouble(tolerance.Value);
+
+ case ToleranceMode.Percent:
+ if (expected == 0.0f)
+ return expected.Equals(actual);
+ float relativeError = Math.Abs((expected - actual) / expected);
+ return (relativeError <= Convert.ToSingle(tolerance.Value) / 100.0f);
+
+ case ToleranceMode.Ulps:
+ return FloatingPointNumerics.AreAlmostEqualUlps(
+ expected, actual, Convert.ToInt32(tolerance.Value));
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+
+
+ private static bool AreEqual(decimal expected, decimal actual, Tolerance tolerance)
+ {
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ decimal decimalTolerance = Convert.ToDecimal(tolerance.Value);
+ if (decimalTolerance > 0m)
+ return Math.Abs(expected - actual) <= decimalTolerance;
+
+ return expected.Equals(actual);
+
+ case ToleranceMode.Percent:
+ if (expected == 0m)
+ return expected.Equals(actual);
+
+ double relativeError = Math.Abs(
+ (double)(expected - actual) / (double)expected);
+ return (relativeError <= Convert.ToDouble(tolerance.Value) / 100.0);
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+
+ private static bool AreEqual(ulong expected, ulong actual, Tolerance tolerance)
+ {
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ ulong ulongTolerance = Convert.ToUInt64(tolerance.Value);
+ if (ulongTolerance > 0ul)
+ {
+ ulong diff = expected >= actual ? expected - actual : actual - expected;
+ return diff <= ulongTolerance;
+ }
+
+ return expected.Equals(actual);
+
+ case ToleranceMode.Percent:
+ if (expected == 0ul)
+ return expected.Equals(actual);
+
+ // Can't do a simple Math.Abs() here since it's unsigned
+ ulong difference = Math.Max(expected, actual) - Math.Min(expected, actual);
+ double relativeError = Math.Abs((double)difference / (double)expected);
+ return (relativeError <= Convert.ToDouble(tolerance.Value) / 100.0);
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+
+ private static bool AreEqual(long expected, long actual, Tolerance tolerance)
+ {
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ long longTolerance = Convert.ToInt64(tolerance.Value);
+ if (longTolerance > 0L)
+ return Math.Abs(expected - actual) <= longTolerance;
+
+ return expected.Equals(actual);
+
+ case ToleranceMode.Percent:
+ if (expected == 0L)
+ return expected.Equals(actual);
+
+ double relativeError = Math.Abs(
+ (double)(expected - actual) / (double)expected);
+ return (relativeError <= Convert.ToDouble(tolerance.Value) / 100.0);
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+
+ private static bool AreEqual(uint expected, uint actual, Tolerance tolerance)
+ {
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ uint uintTolerance = Convert.ToUInt32(tolerance.Value);
+ if (uintTolerance > 0)
+ {
+ uint diff = expected >= actual ? expected - actual : actual - expected;
+ return diff <= uintTolerance;
+ }
+
+ return expected.Equals(actual);
+
+ case ToleranceMode.Percent:
+ if (expected == 0u)
+ return expected.Equals(actual);
+
+ // Can't do a simple Math.Abs() here since it's unsigned
+ uint difference = Math.Max(expected, actual) - Math.Min(expected, actual);
+ double relativeError = Math.Abs((double)difference / (double)expected);
+ return (relativeError <= Convert.ToDouble(tolerance.Value) / 100.0);
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+
+ private static bool AreEqual(int expected, int actual, Tolerance tolerance)
+ {
+ switch (tolerance.Mode)
+ {
+ case ToleranceMode.None:
+ return expected.Equals(actual);
+
+ case ToleranceMode.Linear:
+ int intTolerance = Convert.ToInt32(tolerance.Value);
+ if (intTolerance > 0)
+ return Math.Abs(expected - actual) <= intTolerance;
+
+ return expected.Equals(actual);
+
+ case ToleranceMode.Percent:
+ if (expected == 0)
+ return expected.Equals(actual);
+
+ double relativeError = Math.Abs(
+ (double)(expected - actual) / (double)expected);
+ return (relativeError <= Convert.ToDouble(tolerance.Value) / 100.0);
+
+ default:
+ throw new ArgumentException("Unknown tolerance mode specified", "mode");
+ }
+ }
+ #endregion
+
+ #region Numeric Comparisons
+ /// <summary>
+ /// Compare two numeric values, performing the usual numeric conversions.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value</param>
+ /// <returns>The relationship of the values to each other</returns>
+ public static int Compare(object expected, object actual)
+ {
+ if (!IsNumericType(expected) || !IsNumericType(actual))
+ throw new ArgumentException("Both arguments must be numeric");
+
+ if (IsFloatingPointNumeric(expected) || IsFloatingPointNumeric(actual))
+ return Convert.ToDouble(expected).CompareTo(Convert.ToDouble(actual));
+
+ if (expected is decimal || actual is decimal)
+ return Convert.ToDecimal(expected).CompareTo(Convert.ToDecimal(actual));
+
+ if (expected is ulong || actual is ulong)
+ return Convert.ToUInt64(expected).CompareTo(Convert.ToUInt64(actual));
+
+ if (expected is long || actual is long)
+ return Convert.ToInt64(expected).CompareTo(Convert.ToInt64(actual));
+
+ if (expected is uint || actual is uint)
+ return Convert.ToUInt32(expected).CompareTo(Convert.ToUInt32(actual));
+
+ return Convert.ToInt32(expected).CompareTo(Convert.ToInt32(actual));
+ }
+ #endregion
+
+ private Numerics()
+ {
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/AllOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/AllOperator.cs
new file mode 100755
index 0000000..128ba6a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/AllOperator.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Represents a constraint that succeeds if all the
+ /// members of a collection match a base constraint.
+ /// </summary>
+ public class AllOperator : CollectionOperator
+ {
+ /// <summary>
+ /// Returns a constraint that will apply the argument
+ /// to the members of a collection, succeeding if
+ /// they all succeed.
+ /// </summary>
+ public override Constraint ApplyPrefix(Constraint constraint)
+ {
+ return new AllItemsConstraint(constraint);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/AndOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/AndOperator.cs
new file mode 100755
index 0000000..c01d165
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/AndOperator.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Operator that requires both it's arguments to succeed
+ /// </summary>
+ public class AndOperator : BinaryOperator
+ {
+ /// <summary>
+ /// Construct an AndOperator
+ /// </summary>
+ public AndOperator()
+ {
+ this.left_precedence = this.right_precedence = 2;
+ }
+
+ /// <summary>
+ /// Apply the operator to produce an AndConstraint
+ /// </summary>
+ public override Constraint ApplyOperator(Constraint left, Constraint right)
+ {
+ return new AndConstraint(left, right);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/AttributeOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/AttributeOperator.cs
new file mode 100755
index 0000000..eaa9ac0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/AttributeOperator.cs
@@ -0,0 +1,62 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Operator that tests for the presence of a particular attribute
+ /// on a type and optionally applies further tests to the attribute.
+ /// </summary>
+ public class AttributeOperator : SelfResolvingOperator
+ {
+ private readonly Type type;
+
+ /// <summary>
+ /// Construct an AttributeOperator for a particular Type
+ /// </summary>
+ /// <param name="type">The Type of attribute tested</param>
+ public AttributeOperator(Type type)
+ {
+ this.type = type;
+
+ // Attribute stacks on anything and allows only
+ // prefix operators to stack on it.
+ this.left_precedence = this.right_precedence = 1;
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public override void Reduce(ConstraintBuilder.ConstraintStack stack)
+ {
+ if (RightContext == null || RightContext is BinaryOperator)
+ stack.Push(new AttributeExistsConstraint(type));
+ else
+ stack.Push(new AttributeConstraint(type, stack.Pop()));
+ }
+ }
+ } \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/BinaryOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/BinaryOperator.cs
new file mode 100755
index 0000000..c0c5531
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/BinaryOperator.cs
@@ -0,0 +1,76 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Abstract base class for all binary operators
+ /// </summary>
+ public abstract class BinaryOperator : ConstraintOperator
+ {
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="stack"></param>
+ public override void Reduce(ConstraintBuilder.ConstraintStack stack)
+ {
+ Constraint right = stack.Pop();
+ Constraint left = stack.Pop();
+ stack.Push(ApplyOperator(left, right));
+ }
+
+ /// <summary>
+ /// Gets the left precedence of the operator
+ /// </summary>
+ public override int LeftPrecedence
+ {
+ get
+ {
+ return RightContext is CollectionOperator
+ ? base.LeftPrecedence + 10
+ : base.LeftPrecedence;
+ }
+ }
+
+ /// <summary>
+ /// Gets the right precedence of the operator
+ /// </summary>
+ public override int RightPrecedence
+ {
+ get
+ {
+ return RightContext is CollectionOperator
+ ? base.RightPrecedence + 10
+ : base.RightPrecedence;
+ }
+ }
+
+ /// <summary>
+ /// Abstract method that produces a constraint by applying
+ /// the operator to its left and right constraint arguments.
+ /// </summary>
+ public abstract Constraint ApplyOperator(Constraint left, Constraint right);
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/CollectionOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/CollectionOperator.cs
new file mode 100755
index 0000000..00c94c9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/CollectionOperator.cs
@@ -0,0 +1,43 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Abstract base for operators that indicate how to
+ /// apply a constraint to items in a collection.
+ /// </summary>
+ public abstract class CollectionOperator : PrefixOperator
+ {
+ /// <summary>
+ /// Constructs a CollectionOperator
+ /// </summary>
+ protected CollectionOperator()
+ {
+ // Collection Operators stack on everything
+ // and allow all other ops to stack on them
+ this.left_precedence = 1;
+ this.right_precedence = 10;
+ }
+ }
+ } \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/ConstraintOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/ConstraintOperator.cs
new file mode 100755
index 0000000..d33d09d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/ConstraintOperator.cs
@@ -0,0 +1,96 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public abstract class ConstraintOperator
+ {
+ private object leftContext;
+ private object rightContext;
+
+ /// <summary>
+ /// The precedence value used when the operator
+ /// is about to be pushed to the stack.
+ /// </summary>
+ protected int left_precedence;
+
+ /// <summary>
+ /// The precedence value used when the operator
+ /// is on the top of the stack.
+ /// </summary>
+ protected int right_precedence;
+
+ /// <summary>
+ /// The syntax element preceding this operator
+ /// </summary>
+ public object LeftContext
+ {
+ get { return leftContext; }
+ set { leftContext = value; }
+ }
+
+ /// <summary>
+ /// The syntax element folowing this operator
+ /// </summary>
+ public object RightContext
+ {
+ get { return rightContext; }
+ set { rightContext = value; }
+ }
+
+ /// <summary>
+ /// The precedence value used when the operator
+ /// is about to be pushed to the stack.
+ /// </summary>
+ public virtual int LeftPrecedence
+ {
+ get { return left_precedence; }
+ }
+
+ /// <summary>
+ /// The precedence value used when the operator
+ /// is on the top of the stack.
+ /// </summary>
+ public virtual int RightPrecedence
+ {
+ get { return right_precedence; }
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="stack"></param>
+ public abstract void Reduce(ConstraintBuilder.ConstraintStack stack);
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/ExactCountOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/ExactCountOperator.cs
new file mode 100755
index 0000000..ddc1f6a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/ExactCountOperator.cs
@@ -0,0 +1,54 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Represents a constraint that succeeds if the specified
+ /// count of members of a collection match a base constraint.
+ /// </summary>
+ public class ExactCountOperator : CollectionOperator
+ {
+ private int expectedCount;
+
+ /// <summary>
+ /// Construct an ExactCountOperator for a specified count
+ /// </summary>
+ /// <param name="expectedCount">The expected count</param>
+ public ExactCountOperator(int expectedCount)
+ {
+ this.expectedCount = expectedCount;
+ }
+
+ /// <summary>
+ /// Returns a constraint that will apply the argument
+ /// to the members of a collection, succeeding if
+ /// none of them succeed.
+ /// </summary>
+ public override Constraint ApplyPrefix(Constraint constraint)
+ {
+ return new ExactCountConstraint(expectedCount, constraint);
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/NoneOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/NoneOperator.cs
new file mode 100755
index 0000000..8c5a04d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/NoneOperator.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Represents a constraint that succeeds if none of the
+ /// members of a collection match a base constraint.
+ /// </summary>
+ public class NoneOperator : CollectionOperator
+ {
+ /// <summary>
+ /// Returns a constraint that will apply the argument
+ /// to the members of a collection, succeeding if
+ /// none of them succeed.
+ /// </summary>
+ public override Constraint ApplyPrefix(Constraint constraint)
+ {
+ return new NoItemConstraint(constraint);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/NotOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/NotOperator.cs
new file mode 100755
index 0000000..eed0f55
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/NotOperator.cs
@@ -0,0 +1,49 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Negates the test of the constraint it wraps.
+ /// </summary>
+ public class NotOperator : PrefixOperator
+ {
+ /// <summary>
+ /// Constructs a new NotOperator
+ /// </summary>
+ public NotOperator()
+ {
+ // Not stacks on anything and only allows other
+ // prefix ops to stack on top of it.
+ this.left_precedence = this.right_precedence = 1;
+ }
+
+ /// <summary>
+ /// Returns a NotConstraint applied to its argument.
+ /// </summary>
+ public override Constraint ApplyPrefix(Constraint constraint)
+ {
+ return new NotConstraint(constraint);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/OrOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/OrOperator.cs
new file mode 100755
index 0000000..c945c23
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/OrOperator.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Operator that requires at least one of it's arguments to succeed
+ /// </summary>
+ public class OrOperator : BinaryOperator
+ {
+ /// <summary>
+ /// Construct an OrOperator
+ /// </summary>
+ public OrOperator()
+ {
+ this.left_precedence = this.right_precedence = 3;
+ }
+
+ /// <summary>
+ /// Apply the operator to produce an OrConstraint
+ /// </summary>
+ public override Constraint ApplyOperator(Constraint left, Constraint right)
+ {
+ return new OrConstraint(left, right);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/PrefixOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/PrefixOperator.cs
new file mode 100755
index 0000000..97e4b2f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/PrefixOperator.cs
@@ -0,0 +1,51 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// PrefixOperator takes a single constraint and modifies
+ /// it's action in some way.
+ /// </summary>
+ public abstract class PrefixOperator : ConstraintOperator
+ {
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="stack"></param>
+ public override void Reduce(ConstraintBuilder.ConstraintStack stack)
+ {
+ stack.Push(ApplyPrefix(stack.Pop()));
+ }
+
+ /// <summary>
+ /// Returns the constraint created by applying this
+ /// prefix to another constraint.
+ /// </summary>
+ /// <param name="constraint"></param>
+ /// <returns></returns>
+ public abstract Constraint ApplyPrefix(Constraint constraint);
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/PropOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/PropOperator.cs
new file mode 100755
index 0000000..582e01b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/PropOperator.cs
@@ -0,0 +1,69 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class PropOperator : SelfResolvingOperator
+ {
+ private readonly string name;
+
+ /// <summary>
+ /// Gets the name of the property to which the operator applies
+ /// </summary>
+ public string Name
+ {
+ get { return name; }
+ }
+
+ /// <summary>
+ /// Constructs a PropOperator for a particular named property
+ /// </summary>
+ public PropOperator(string name)
+ {
+ this.name = name;
+
+ // Prop stacks on anything and allows only
+ // prefix operators to stack on it.
+ this.left_precedence = this.right_precedence = 1;
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="stack"></param>
+ public override void Reduce(ConstraintBuilder.ConstraintStack stack)
+ {
+ if (RightContext == null || RightContext is BinaryOperator)
+ stack.Push(new PropertyExistsConstraint(name));
+ else
+ stack.Push(new PropertyConstraint(name, stack.Pop()));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/SelfResolvingOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/SelfResolvingOperator.cs
new file mode 100755
index 0000000..ac231d3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/SelfResolvingOperator.cs
@@ -0,0 +1,33 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Abstract base class for operators that are able to reduce to a
+ /// constraint whether or not another syntactic element follows.
+ /// </summary>
+ public abstract class SelfResolvingOperator : ConstraintOperator
+ {
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/SomeOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/SomeOperator.cs
new file mode 100755
index 0000000..58990d1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/SomeOperator.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Represents a constraint that succeeds if any of the
+ /// members of a collection match a base constraint.
+ /// </summary>
+ public class SomeOperator : CollectionOperator
+ {
+ /// <summary>
+ /// Returns a constraint that will apply the argument
+ /// to the members of a collection, succeeding if
+ /// any of them succeed.
+ /// </summary>
+ public override Constraint ApplyPrefix(Constraint constraint)
+ {
+ return new SomeItemsConstraint(constraint);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/ThrowsOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/ThrowsOperator.cs
new file mode 100755
index 0000000..b2e407a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/ThrowsOperator.cs
@@ -0,0 +1,57 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Operator that tests that an exception is thrown and
+ /// optionally applies further tests to the exception.
+ /// </summary>
+ public class ThrowsOperator : SelfResolvingOperator
+ {
+ /// <summary>
+ /// Construct a ThrowsOperator
+ /// </summary>
+ public ThrowsOperator()
+ {
+ // ThrowsOperator stacks on everything but
+ // it's always the first item on the stack
+ // anyway. It is evaluated last of all ops.
+ this.left_precedence = 1;
+ this.right_precedence = 100;
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public override void Reduce(ConstraintBuilder.ConstraintStack stack)
+ {
+ if (RightContext == null || RightContext is BinaryOperator)
+ stack.Push(new ThrowsConstraint(null));
+ else
+ stack.Push(new ThrowsConstraint(stack.Pop()));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Operators/WithOperator.cs b/NUnitLite-0.9.0/src/framework/Constraints/Operators/WithOperator.cs
new file mode 100755
index 0000000..126e122
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Operators/WithOperator.cs
@@ -0,0 +1,51 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class WithOperator : PrefixOperator
+ {
+ /// <summary>
+ /// Constructor for the WithOperator
+ /// </summary>
+ public WithOperator()
+ {
+ this.left_precedence = 1;
+ this.right_precedence = 4;
+ }
+
+ /// <summary>
+ /// Returns a constraint that wraps its argument
+ /// </summary>
+ public override Constraint ApplyPrefix(Constraint constraint)
+ {
+ return constraint;
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/OrConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/OrConstraint.cs
new file mode 100755
index 0000000..2cc71c9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/OrConstraint.cs
@@ -0,0 +1,61 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// OrConstraint succeeds if either member succeeds
+ /// </summary>
+ public class OrConstraint : BinaryConstraint
+ {
+ /// <summary>
+ /// Create an OrConstraint from two other constraints
+ /// </summary>
+ /// <param name="left">The first constraint</param>
+ /// <param name="right">The second constraint</param>
+ public OrConstraint(Constraint left, Constraint right) : base(left, right) { }
+
+ /// <summary>
+ /// Apply the member constraints to an actual value, succeeding
+ /// succeeding as soon as one of them succeeds.
+ /// </summary>
+ /// <param name="actual">The actual value</param>
+ /// <returns>True if either constraint succeeded</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ return left.Matches(actual) || right.Matches(actual);
+ }
+
+ /// <summary>
+ /// Write a description for this contraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The MessageWriter to receive the description</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ left.WriteDescriptionTo(writer);
+ writer.WriteConnector("or");
+ right.WriteDescriptionTo(writer);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/PathConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/PathConstraint.cs
new file mode 100755
index 0000000..da5f515
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/PathConstraint.cs
@@ -0,0 +1,181 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// PathConstraint serves as the abstract base of constraints
+ /// that operate on paths and provides several helper methods.
+ /// </summary>
+ public abstract class PathConstraint : Constraint
+ {
+ private static readonly char[] DirectorySeparatorChars = new char[] { '\\', '/' };
+
+ /// <summary>
+ /// The expected path used in the constraint
+ /// </summary>
+ protected string expectedPath;
+
+ /// <summary>
+ /// Flag indicating whether a caseInsensitive comparison should be made
+ /// </summary>
+ protected bool caseInsensitive = Path.DirectorySeparatorChar == '\\';
+
+ /// <summary>
+ /// Construct a PathConstraint for a give expected path
+ /// </summary>
+ /// <param name="expectedPath">The expected path</param>
+ protected PathConstraint(string expectedPath) : base(expectedPath)
+ {
+ this.expectedPath = expectedPath;
+ }
+
+ /// <summary>
+ /// Modifies the current instance to be case-insensitve
+ /// and returns it.
+ /// </summary>
+ public PathConstraint IgnoreCase
+ {
+ get { caseInsensitive = true; return this; }
+ }
+
+ /// <summary>
+ /// Modifies the current instance to be case-sensitve
+ /// and returns it.
+ /// </summary>
+ public PathConstraint RespectCase
+ {
+ get { caseInsensitive = false; return this; }
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+ string actualPath = actual as string;
+
+ return actualPath != null && IsMatch(expectedPath, actualPath);
+ }
+
+ /// <summary>
+ /// Returns true if the expected path and actual path match
+ /// </summary>
+ protected abstract bool IsMatch(string expectedPath, string actualPath);
+
+ /// <summary>
+ /// Returns the string representation of this constraint
+ /// </summary>
+ protected override string GetStringRepresentation()
+ {
+ return string.Format("<{0} \"{1}\" {2}>", DisplayName, expectedPath, caseInsensitive ? "ignorecase" : "respectcase");
+ }
+
+ #region Static Helper Methods
+
+ /// <summary>
+ /// Transform the provided path to its canonical form so that it
+ /// may be more easily be compared with other paths.
+ /// </summary>
+ /// <param name="path">The original path</param>
+ /// <returns>The path in canonical form</returns>
+ protected static string Canonicalize(string path)
+ {
+ if (Path.DirectorySeparatorChar != Path.AltDirectorySeparatorChar)
+ path = path.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
+ string leadingSeparators = "";
+ foreach (char c in path)
+ {
+ if (c == Path.DirectorySeparatorChar)
+ leadingSeparators += c;
+ else break;
+ }
+
+#if (CLR_2_0x || CLR_4_0) && !NETCF
+ string[] parts = path.Split(DirectorySeparatorChars, StringSplitOptions.RemoveEmptyEntries);
+#else
+ string[] parts = path.Split(DirectorySeparatorChars);
+#endif
+ int count = 0;
+ bool shifting = false;
+ foreach (string part in parts)
+ {
+ switch (part)
+ {
+ case "":
+ case ".":
+ shifting = true;
+ break;
+
+ case "..":
+ shifting = true;
+ if (count > 0)
+ --count;
+ break;
+
+ default:
+ if (shifting)
+ parts[count] = part;
+ ++count;
+ break;
+ }
+ }
+
+ return leadingSeparators + String.Join(Path.DirectorySeparatorChar.ToString(), parts, 0, count);
+ }
+
+ /// <summary>
+ /// Test whether one path in canonical form is under another.
+ /// </summary>
+ /// <param name="path1">The first path - supposed to be the parent path</param>
+ /// <param name="path2">The second path - supposed to be the child path</param>
+ /// <param name="ignoreCase">Indicates whether case should be ignored</param>
+ /// <returns></returns>
+ protected static bool IsSubPath(string path1, string path2, bool ignoreCase)
+ {
+ int length1 = path1.Length;
+ int length2 = path2.Length;
+
+ // if path1 is longer or equal, then path2 can't be under it
+ if (length1 >= length2)
+ return false;
+
+ // path 2 is longer than path 1: see if initial parts match
+ if (!StringUtil.StringsEqual(path1, path2.Substring(0, length1), ignoreCase))
+ return false;
+
+ // must match through or up to a directory separator boundary
+ return path2[length1 - 1] == Path.DirectorySeparatorChar ||
+ length2 > length1 && path2[length1] == Path.DirectorySeparatorChar;
+ }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/PredicateConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/PredicateConstraint.cs
new file mode 100755
index 0000000..231b6db
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/PredicateConstraint.cs
@@ -0,0 +1,76 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if CLR_2_0 || CLR_4_0
+using System;
+using System.Collections.Generic;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Predicate constraint wraps a Predicate in a constraint,
+ /// returning success if the predicate is true.
+ /// </summary>
+ public class PredicateConstraint<T> : Constraint
+ {
+ readonly Predicate<T> predicate;
+
+ /// <summary>
+ /// Construct a PredicateConstraint from a predicate
+ /// </summary>
+ public PredicateConstraint(Predicate<T> predicate)
+ {
+ this.predicate = predicate;
+ }
+
+ /// <summary>
+ /// Determines whether the predicate succeeds when applied
+ /// to the actual value.
+ /// </summary>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (!(actual is T))
+ throw new ArgumentException("The actual value is not of type " + typeof(T).Name, "actual");
+
+ return predicate((T)actual);
+ }
+
+ /// <summary>
+ /// Writes the description to a MessageWriter
+ /// </summary>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+#if NETCF_2_0
+ writer.Write("value matching predicate");
+#else
+ writer.WritePredicate("value matching");
+ writer.Write(predicate.Method.Name.StartsWith("<")
+ ? "lambda expression"
+ : predicate.Method.Name);
+#endif
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/PrefixConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/PrefixConstraint.cs
new file mode 100755
index 0000000..7d5a527
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/PrefixConstraint.cs
@@ -0,0 +1,46 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Abstract base class used for prefixes
+ /// </summary>
+ public abstract class PrefixConstraint : Constraint
+ {
+ /// <summary>
+ /// The base constraint
+ /// </summary>
+ protected Constraint baseConstraint;
+
+ /// <summary>
+ /// Construct given a base constraint
+ /// </summary>
+ /// <param name="resolvable"></param>
+ protected PrefixConstraint(IResolveConstraint resolvable) : base(resolvable)
+ {
+ if (resolvable != null)
+ this.baseConstraint = resolvable.Resolve();
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/PropertyConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/PropertyConstraint.cs
new file mode 100755
index 0000000..42592c6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/PropertyConstraint.cs
@@ -0,0 +1,110 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// PropertyConstraint extracts a named property and uses
+ /// its value as the actual value for a chained constraint.
+ /// </summary>
+ public class PropertyConstraint : PrefixConstraint
+ {
+ private readonly string name;
+ private object propValue;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ /// <param name="baseConstraint">The constraint to apply to the property.</param>
+ public PropertyConstraint(string name, Constraint baseConstraint)
+ : base(baseConstraint)
+ {
+ this.name = name;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ Guard.ArgumentNotNull(actual, "actual");
+
+ Type actualType = actual as Type;
+ if (actualType == null)
+ actualType = actual.GetType();
+
+ PropertyInfo property = actualType.GetProperty(name,
+ BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
+
+ if (property == null)
+ throw new ArgumentException(string.Format("Property {0} was not found", name), "name");
+
+ propValue = property.GetValue(actual, null);
+ return baseConstraint.Matches(propValue);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("property " + name);
+ if (baseConstraint != null)
+ {
+ if (baseConstraint is EqualConstraint)
+ writer.WritePredicate("equal to");
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.WriteActualValue(propValue);
+ }
+
+ /// <summary>
+ /// Returns the string representation of the constraint.
+ /// </summary>
+ /// <returns></returns>
+ protected override string GetStringRepresentation()
+ {
+ return string.Format("<property {0} {1}>", name, baseConstraint);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/PropertyExistsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/PropertyExistsConstraint.cs
new file mode 100755
index 0000000..d863cf2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/PropertyExistsConstraint.cs
@@ -0,0 +1,102 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class PropertyExistsConstraint : Constraint
+ {
+ private readonly string name;
+
+ Type actualType;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:PropertyExistConstraint"/> class.
+ /// </summary>
+ /// <param name="name">The name of the property.</param>
+ public PropertyExistsConstraint(string name)
+ : base(name)
+ {
+ this.name = name;
+ }
+
+ /// <summary>
+ /// Test whether the property exists for a given object
+ /// </summary>
+ /// <param name="actual">The object to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ Guard.ArgumentNotNull(actual, "actual");
+
+ this.actualType = actual as Type;
+ if (actualType == null)
+ actualType = actual.GetType();
+
+ PropertyInfo property = actualType.GetProperty(name,
+ BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
+
+ return property != null;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("property " + name);
+ }
+
+ /// <summary>
+ /// Write the actual value for a failing constraint test to a
+ /// MessageWriter.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.WriteActualValue(actualType);
+ }
+
+ /// <summary>
+ /// Returns the string representation of the constraint.
+ /// </summary>
+ /// <returns></returns>
+ protected override string GetStringRepresentation()
+ {
+ return string.Format("<propertyexists {0}>", name);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/RangeConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/RangeConstraint.cs
new file mode 100755
index 0000000..7eb7cd1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/RangeConstraint.cs
@@ -0,0 +1,124 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// RangeConstraint tests whether two values are within a
+ /// specified range.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public class RangeConstraint<T> : ComparisonConstraint where T : IComparable<T>
+ {
+ private readonly T from;
+ private readonly T to;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:RangeConstraint"/> class.
+ /// </summary>
+ /// <param name="from">From.</param>
+ /// <param name="to">To.</param>
+ public RangeConstraint(T from, T to)
+ : base(from, to)
+ {
+ this.from = from;
+ this.to = to;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (from == null || to == null || actual == null)
+ throw new ArgumentException("Cannot compare using a null reference", "actual");
+
+ return comparer.Compare(from, actual) <= 0 &&
+ comparer.Compare(to, actual) >= 0;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+
+ writer.Write("in range ({0},{1})", from, to);
+ }
+ }
+#else
+ public class RangeConstraint : ComparisonConstraint
+ {
+ private readonly IComparable from;
+ private readonly IComparable to;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:RangeConstraint"/> class.
+ /// </summary>
+ /// <param name="from">From.</param>
+ /// <param name="to">To.</param>
+ public RangeConstraint(IComparable from, IComparable to) : base( from, to )
+ {
+ this.from = from;
+ this.to = to;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if ( from == null || to == null || actual == null)
+ throw new ArgumentException( "Cannot compare using a null reference", "actual" );
+
+ return comparer.Compare(from, actual) <= 0 &&
+ comparer.Compare(to, actual) >= 0;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+
+ writer.Write("in range ({0},{1})", from, to);
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/RegexConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/RegexConstraint.cs
new file mode 100755
index 0000000..5e0ab3a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/RegexConstraint.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !NETCF
+using System.Text.RegularExpressions;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// RegexConstraint can test whether a string matches
+ /// the pattern provided.
+ /// </summary>
+ public class RegexConstraint : StringConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
+ /// </summary>
+ /// <param name="pattern">The pattern.</param>
+ public RegexConstraint(string pattern) : base(pattern) { }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ protected override bool Matches(string actual)
+ {
+ return Regex.IsMatch(
+ actual,
+ this.expected,
+ this.caseInsensitive ? RegexOptions.IgnoreCase : RegexOptions.None);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("String matching");
+ writer.WriteExpectedValue(this.expected);
+ if (this.caseInsensitive)
+ writer.WriteModifier("ignoring case");
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ResolvableConstraintExpression.cs b/NUnitLite-0.9.0/src/framework/Constraints/ResolvableConstraintExpression.cs
new file mode 100755
index 0000000..25d7f3f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ResolvableConstraintExpression.cs
@@ -0,0 +1,153 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class ResolvableConstraintExpression : ConstraintExpression, IResolveConstraint
+ {
+ /// <summary>
+ /// Create a new instance of ResolvableConstraintExpression
+ /// </summary>
+ public ResolvableConstraintExpression() { }
+
+ /// <summary>
+ /// Create a new instance of ResolvableConstraintExpression,
+ /// passing in a pre-populated ConstraintBuilder.
+ /// </summary>
+ public ResolvableConstraintExpression(ConstraintBuilder builder)
+ : base(builder) { }
+
+ /// <summary>
+ /// Appends an And Operator to the expression
+ /// </summary>
+ public ConstraintExpression And
+ {
+ get { return this.Append(new AndOperator()); }
+ }
+
+ /// <summary>
+ /// Appends an Or operator to the expression.
+ /// </summary>
+ public ConstraintExpression Or
+ {
+ get { return this.Append(new OrOperator()); }
+ }
+
+ #region IResolveConstraint Members
+ /// <summary>
+ /// Resolve the current expression to a Constraint
+ /// </summary>
+ Constraint IResolveConstraint.Resolve()
+ {
+ return builder.Resolve();
+ }
+ #endregion
+
+ #region Operator Overloads
+ /// <summary>
+ /// This operator creates a constraint that is satisfied only if both
+ /// argument constraints are satisfied.
+ /// </summary>
+ public static Constraint operator &(ResolvableConstraintExpression left, ResolvableConstraintExpression right)
+ {
+ return OperatorAndImplementation(left, right);
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied only if both
+ /// argument constraints are satisfied.
+ /// </summary>
+ public static Constraint operator &(Constraint left, ResolvableConstraintExpression right)
+ {
+ return OperatorAndImplementation(left, right);
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied only if both
+ /// argument constraints are satisfied.
+ /// </summary>
+ public static Constraint operator &(ResolvableConstraintExpression left, Constraint right)
+ {
+ return OperatorAndImplementation(left, right);
+ }
+
+ private static Constraint OperatorAndImplementation(IResolveConstraint left, IResolveConstraint right)
+ {
+ return new AndConstraint(left.Resolve(), right.Resolve());
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied if either
+ /// of the argument constraints is satisfied.
+ /// </summary>
+ public static Constraint operator |(ResolvableConstraintExpression left, ResolvableConstraintExpression right)
+ {
+ return OperatorOrImplementation(left, right);
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied if either
+ /// of the argument constraints is satisfied.
+ /// </summary>
+ public static Constraint operator |(ResolvableConstraintExpression left, Constraint right)
+ {
+ return OperatorOrImplementation(left, right);
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied if either
+ /// of the argument constraints is satisfied.
+ /// </summary>
+ public static Constraint operator |(Constraint left, ResolvableConstraintExpression right)
+ {
+ return OperatorOrImplementation(left, right);
+ }
+
+ private static Constraint OperatorOrImplementation(IResolveConstraint left, IResolveConstraint right)
+ {
+ return new OrConstraint(left.Resolve(), right.Resolve());
+ }
+
+ /// <summary>
+ /// This operator creates a constraint that is satisfied if the
+ /// argument constraint is not satisfied.
+ /// </summary>
+ public static Constraint operator !(ResolvableConstraintExpression constraint)
+ {
+ IResolveConstraint r = constraint as IResolveConstraint;
+ return new NotConstraint(r == null ? new NullConstraint() : r.Resolve());
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ReusableConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ReusableConstraint.cs
new file mode 100755
index 0000000..0b6d994
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ReusableConstraint.cs
@@ -0,0 +1,76 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ReusableConstraint wraps a constraint expression after
+ /// resolving it so that it can be reused consistently.
+ /// </summary>
+ public class ReusableConstraint : IResolveConstraint
+ {
+ private readonly Constraint constraint;
+
+ /// <summary>
+ /// Construct a ReusableConstraint from a constraint expression
+ /// </summary>
+ /// <param name="c">The expression to be resolved and reused</param>
+ public ReusableConstraint(IResolveConstraint c)
+ {
+ this.constraint = c.Resolve();
+ }
+
+ /// <summary>
+ /// Converts a constraint to a ReusableConstraint
+ /// </summary>
+ /// <param name="c">The constraint to be converted</param>
+ /// <returns>A ReusableConstraint</returns>
+ public static implicit operator ReusableConstraint(Constraint c)
+ {
+ return new ReusableConstraint(c);
+ }
+
+ /// <summary>
+ /// Returns the string representation of the constraint.
+ /// </summary>
+ /// <returns>A string representing the constraint</returns>
+ public override string ToString()
+ {
+ return constraint.ToString();
+ }
+
+ #region IResolveConstraint Members
+
+ /// <summary>
+ /// Resolves the ReusableConstraint by returning the constraint
+ /// that it originally wrapped.
+ /// </summary>
+ /// <returns>A resolved constraint</returns>
+ public Constraint Resolve()
+ {
+ return constraint;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/SameAsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/SameAsConstraint.cs
new file mode 100755
index 0000000..6946c4b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/SameAsConstraint.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// SameAsConstraint tests whether an object is identical to
+ /// the object passed to its constructor
+ /// </summary>
+ public class SameAsConstraint : Constraint
+ {
+ private readonly object expected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected object.</param>
+ public SameAsConstraint(object expected) : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ return ReferenceEquals(expected, actual);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("same as");
+ writer.WriteExpectedValue(expected);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/SamePathConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/SamePathConstraint.cs
new file mode 100755
index 0000000..a640979
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/SamePathConstraint.cs
@@ -0,0 +1,60 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Summary description for SamePathConstraint.
+ /// </summary>
+ public class SamePathConstraint : PathConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:SamePathConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected path</param>
+ public SamePathConstraint(string expected) : base(expected) { }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="expectedPath">The expected path</param>
+ /// <param name="actualPath">The actual path</param>
+ /// <returns>True for success, false for failure</returns>
+ protected override bool IsMatch(string expectedPath, string actualPath)
+ {
+ return StringUtil.StringsEqual(Canonicalize(expectedPath), Canonicalize(actualPath), caseInsensitive);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("Path matching");
+ writer.WriteExpectedValue(expectedPath);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/SamePathOrUnderConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/SamePathOrUnderConstraint.cs
new file mode 100755
index 0000000..bb0321f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/SamePathOrUnderConstraint.cs
@@ -0,0 +1,62 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// SamePathOrUnderConstraint tests that one path is under another
+ /// </summary>
+ public class SamePathOrUnderConstraint : PathConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:SamePathOrUnderConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected path</param>
+ public SamePathOrUnderConstraint(string expected) : base(expected) { }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="expectedPath">The expected path</param>
+ /// <param name="actualPath">The actual path</param>
+ /// <returns>True for success, false for failure</returns>
+ protected override bool IsMatch(string expectedPath, string actualPath)
+ {
+ string path1 = Canonicalize(expectedPath);
+ string path2 = Canonicalize(actualPath);
+ return StringUtil.StringsEqual(path1, path2, caseInsensitive) || IsSubPath(path1, path2, caseInsensitive);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("Path under or matching");
+ writer.WriteExpectedValue(expectedPath);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/SomeItemsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/SomeItemsConstraint.cs
new file mode 100755
index 0000000..607bd32
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/SomeItemsConstraint.cs
@@ -0,0 +1,75 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// SomeItemsConstraint applies another constraint to each
+ /// item in a collection, succeeding if any of them succeeds.
+ /// </summary>
+ public class SomeItemsConstraint : PrefixConstraint
+ {
+ /// <summary>
+ /// Construct a SomeItemsConstraint on top of an existing constraint
+ /// </summary>
+ /// <param name="itemConstraint"></param>
+ public SomeItemsConstraint(Constraint itemConstraint)
+ : base(itemConstraint)
+ {
+ this.DisplayName = "some";
+ }
+
+ /// <summary>
+ /// Apply the item constraint to each item in the collection,
+ /// succeeding if any item succeeds.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if (!(actual is IEnumerable))
+ throw new ArgumentException("The actual value must be an IEnumerable", "actual");
+
+ foreach (object item in (IEnumerable)actual)
+ if (baseConstraint.Matches(item))
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("some item");
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/StartsWithConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/StartsWithConstraint.cs
new file mode 100755
index 0000000..51be3de
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/StartsWithConstraint.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// StartsWithConstraint can test whether a string starts
+ /// with an expected substring.
+ /// </summary>
+ public class StartsWithConstraint : StringConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected string</param>
+ public StartsWithConstraint(string expected) : base(expected) { }
+
+ /// <summary>
+ /// Test whether the constraint is matched by the actual value.
+ /// This is a template method, which calls the IsMatch method
+ /// of the derived class.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool Matches(string actual)
+ {
+ if (this.caseInsensitive)
+ return actual.ToLower().StartsWith(expected.ToLower());
+ else
+ return actual.StartsWith(expected);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("String starting with");
+ writer.WriteExpectedValue(MsgUtils.ClipString(expected, writer.MaxLineLength - 40, 0));
+ if (this.caseInsensitive)
+ writer.WriteModifier("ignoring case");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/StringConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/StringConstraint.cs
new file mode 100755
index 0000000..f9e7a0f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/StringConstraint.cs
@@ -0,0 +1,81 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// StringConstraint is the abstract base for constraints
+ /// that operate on strings. It supports the IgnoreCase
+ /// modifier for string operations.
+ /// </summary>
+ public abstract class StringConstraint : Constraint
+ {
+ /// <summary>
+ /// The expected value
+ /// </summary>
+ protected readonly string expected;
+
+ /// <summary>
+ /// Indicates whether tests should be case-insensitive
+ /// </summary>
+ protected bool caseInsensitive;
+
+ /// <summary>
+ /// Constructs a StringConstraint given an expected value
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ protected StringConstraint(string expected)
+ : base(expected)
+ {
+ this.expected = expected;
+ }
+
+ /// <summary>
+ /// Modify the constraint to ignore case in matching.
+ /// </summary>
+ public StringConstraint IgnoreCase
+ {
+ get { caseInsensitive = true; return this; }
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ string actualAsString = actual as string;
+ return actualAsString != null && Matches(actualAsString);
+ }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given string
+ /// </summary>
+ /// <param name="actual">The string to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ protected abstract bool Matches(string actual);
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/SubPathConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/SubPathConstraint.cs
new file mode 100755
index 0000000..4c3528b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/SubPathConstraint.cs
@@ -0,0 +1,60 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// SubPathConstraint tests that the actual path is under the expected path
+ /// </summary>
+ public class SubPathConstraint : PathConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:SubPathConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected path</param>
+ public SubPathConstraint(string expected) : base(expected) { }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="expectedPath">The expected path</param>
+ /// <param name="actualPath">The actual path</param>
+ /// <returns>True for success, false for failure</returns>
+ protected override bool IsMatch(string expectedPath, string actualPath)
+ {
+ return IsSubPath(Canonicalize(expectedPath), Canonicalize(actualPath), caseInsensitive);
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("Path under");
+ writer.WriteExpectedValue(expectedPath);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/SubstringConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/SubstringConstraint.cs
new file mode 100755
index 0000000..716abae
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/SubstringConstraint.cs
@@ -0,0 +1,63 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// SubstringConstraint can test whether a string contains
+ /// the expected substring.
+ /// </summary>
+ public class SubstringConstraint : StringConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
+ /// </summary>
+ /// <param name="expected">The expected.</param>
+ public SubstringConstraint(string expected) : base(expected) { }
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ protected override bool Matches(string actual)
+ {
+ if (this.caseInsensitive)
+ return actual.ToLower().IndexOf(expected.ToLower()) >= 0;
+ else
+ return actual.IndexOf(expected) >= 0;
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.WritePredicate("String containing");
+ writer.WriteExpectedValue(expected);
+ if (this.caseInsensitive)
+ writer.WriteModifier("ignoring case");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ThrowsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ThrowsConstraint.cs
new file mode 100755
index 0000000..1ddb5cb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ThrowsConstraint.cs
@@ -0,0 +1,267 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ThrowsConstraint is used to test the exception thrown by
+ /// a delegate by applying a constraint to it.
+ /// </summary>
+ public class ThrowsConstraint : PrefixConstraint
+ {
+ private Exception caughtException;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ThrowsConstraint"/> class,
+ /// using a constraint to be applied to the exception.
+ /// </summary>
+ /// <param name="baseConstraint">A constraint to apply to the caught exception.</param>
+ public ThrowsConstraint(Constraint baseConstraint)
+ : base(baseConstraint) { }
+
+ /// <summary>
+ /// Get the actual exception thrown - used by Assert.Throws.
+ /// </summary>
+ public Exception ActualException
+ {
+ get { return caughtException; }
+ }
+
+ #region Constraint Overrides
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="actual">A delegate representing the code to be tested</param>
+ /// <returns>True if an exception is thrown and the constraint succeeds, otherwise false</returns>
+ public override bool Matches(object actual)
+ {
+ caughtException = ExceptionInterceptor.Intercept(actual);
+
+ if (caughtException == null)
+ return false;
+
+ return baseConstraint == null || baseConstraint.Matches(caughtException);
+ }
+
+ /// <summary>
+ /// Converts an ActualValueDelegate to a TestDelegate
+ /// before calling the primary overload.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public override bool Matches<T>(ActualValueDelegate<T> del)
+ {
+ return Matches(new GenericInvocationDescriptor<T>(del));
+ }
+#else
+ public override bool Matches(ActualValueDelegate del)
+ {
+ return Matches(new ObjectInvocationDescriptor(del));
+ }
+#endif
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ if (baseConstraint == null)
+ writer.WritePredicate("an exception");
+ else
+ baseConstraint.WriteDescriptionTo(writer);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ if (caughtException == null)
+ writer.Write("no exception thrown");
+ else if (baseConstraint != null)
+ baseConstraint.WriteActualValueTo(writer);
+ else
+ writer.WriteActualValue(caughtException);
+ }
+ #endregion
+
+ /// <summary>
+ /// Returns the string representation of this constraint
+ /// </summary>
+ protected override string GetStringRepresentation()
+ {
+ if (baseConstraint == null)
+ return "<throws>";
+
+ return base.GetStringRepresentation();
+ }
+ }
+
+ #region ExceptionInterceptor
+
+ internal class ExceptionInterceptor
+ {
+ private ExceptionInterceptor() { }
+
+ internal static Exception Intercept(object invocation)
+ {
+ IInvocationDescriptor invocationDescriptor = GetInvocationDescriptor(invocation);
+
+#if NET_4_5
+ if (AsyncInvocationRegion.IsAsyncOperation(invocationDescriptor.Delegate))
+ {
+ using (AsyncInvocationRegion region = AsyncInvocationRegion.Create(invocationDescriptor.Delegate))
+ {
+ object result = invocationDescriptor.Invoke();
+
+ try
+ {
+ region.WaitForPendingOperationsToComplete(result);
+ return null;
+ }
+ catch (Exception ex)
+ {
+ return ex;
+ }
+ }
+ }
+ else
+#endif
+ {
+ try
+ {
+ invocationDescriptor.Invoke();
+ return null;
+ }
+ catch (Exception ex)
+ {
+ return ex;
+ }
+ }
+ }
+
+ private static IInvocationDescriptor GetInvocationDescriptor(object actual)
+ {
+ IInvocationDescriptor invocationDescriptor = actual as IInvocationDescriptor;
+
+ if (invocationDescriptor == null)
+ {
+ TestDelegate testDelegate = actual as TestDelegate;
+
+ if (testDelegate == null)
+ throw new ArgumentException(
+ String.Format("The actual value must be a TestDelegate or ActualValueDelegate but was {0}", actual.GetType().Name),
+ "actual");
+
+ invocationDescriptor = new VoidInvocationDescriptor(testDelegate);
+ }
+
+ return invocationDescriptor;
+ }
+ }
+
+ #endregion
+
+ #region InvocationDescriptor
+
+ internal class VoidInvocationDescriptor : IInvocationDescriptor
+ {
+ private readonly TestDelegate _del;
+
+ public VoidInvocationDescriptor(TestDelegate del)
+ {
+ _del = del;
+ }
+
+ public object Invoke()
+ {
+ _del();
+ return null;
+ }
+
+ public Delegate Delegate
+ {
+ get { return _del; }
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ internal class GenericInvocationDescriptor<T> : IInvocationDescriptor
+ {
+ private readonly ActualValueDelegate<T> _del;
+
+ public GenericInvocationDescriptor(ActualValueDelegate<T> del)
+ {
+ _del = del;
+ }
+
+ public object Invoke()
+ {
+ return _del();
+ }
+
+ public Delegate Delegate
+ {
+ get { return _del; }
+ }
+ }
+#else
+ internal class ObjectInvocationDescriptor : IInvocationDescriptor
+ {
+ private readonly ActualValueDelegate _del;
+
+ public ObjectInvocationDescriptor(ActualValueDelegate del)
+ {
+ _del = del;
+ }
+
+ public object Invoke()
+ {
+ return _del();
+ }
+
+ public Delegate Delegate
+ {
+ get { return _del; }
+ }
+ }
+#endif
+
+ internal interface IInvocationDescriptor
+ {
+ object Invoke();
+ Delegate Delegate { get; }
+ }
+
+ #endregion
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ThrowsNothingConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/ThrowsNothingConstraint.cs
new file mode 100755
index 0000000..2877fc6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ThrowsNothingConstraint.cs
@@ -0,0 +1,81 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// ThrowsNothingConstraint tests that a delegate does not
+ /// throw an exception.
+ /// </summary>
+ public class ThrowsNothingConstraint : Constraint
+ {
+ private Exception caughtException;
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True if no exception is thrown, otherwise false</returns>
+ public override bool Matches(object actual)
+ {
+ caughtException = ExceptionInterceptor.Intercept(actual);
+
+ return caughtException == null;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public override bool Matches<T>(ActualValueDelegate<T> del)
+ {
+ return Matches(new GenericInvocationDescriptor<T>(del));
+ }
+#else
+ public override bool Matches(ActualValueDelegate del)
+ {
+ return Matches(new ObjectInvocationDescriptor(del));
+ }
+#endif
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write(string.Format("No Exception to be thrown"));
+ }
+
+ /// <summary>
+ /// Write the actual value for a failing constraint test to a
+ /// MessageWriter. Overridden in ThrowsNothingConstraint to write
+ /// information about the exception that was actually caught.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.WriteLine(" ({0})", caughtException.Message);
+ writer.Write(caughtException.StackTrace);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/Tolerance.cs b/NUnitLite-0.9.0/src/framework/Constraints/Tolerance.cs
new file mode 100755
index 0000000..40318fc
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/Tolerance.cs
@@ -0,0 +1,220 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class Tolerance
+ {
+ private readonly ToleranceMode mode;
+ private readonly object amount;
+
+ private const string ModeMustFollowTolerance = "Tolerance amount must be specified before setting mode";
+ private const string MultipleToleranceModes = "Tried to use multiple tolerance modes at the same time";
+ private const string NumericToleranceRequired = "A numeric tolerance is required";
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public static Tolerance Empty
+ {
+ get { return new Tolerance(0, ToleranceMode.None); }
+ }
+
+ /// <summary>
+ /// Returns a zero Tolerance object, equivalent to
+ /// specifying an exact match.
+ /// </summary>
+ public static Tolerance Zero
+ {
+ get { return new Tolerance(0, ToleranceMode.Linear); }
+ }
+
+ /// <summary>
+ /// Constructs a linear tolerance of a specdified amount
+ /// </summary>
+ public Tolerance(object amount) : this(amount, ToleranceMode.Linear) { }
+
+ /// <summary>
+ /// Constructs a tolerance given an amount and ToleranceMode
+ /// </summary>
+ private Tolerance(object amount, ToleranceMode mode)
+ {
+ this.amount = amount;
+ this.mode = mode;
+ }
+
+ /// <summary>
+ /// Gets the ToleranceMode for the current Tolerance
+ /// </summary>
+ public ToleranceMode Mode
+ {
+ get { return this.mode; }
+ }
+
+
+ /// <summary>
+ /// Tests that the current Tolerance is linear with a
+ /// numeric value, throwing an exception if it is not.
+ /// </summary>
+ private void CheckLinearAndNumeric()
+ {
+ if (mode != ToleranceMode.Linear)
+ throw new InvalidOperationException(mode == ToleranceMode.None
+ ? ModeMustFollowTolerance
+ : MultipleToleranceModes);
+
+ if (!Numerics.IsNumericType(amount))
+ throw new InvalidOperationException(NumericToleranceRequired);
+ }
+
+ /// <summary>
+ /// Gets the value of the current Tolerance instance.
+ /// </summary>
+ public object Value
+ {
+ get { return this.amount; }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance, using the current amount as a percentage.
+ /// </summary>
+ public Tolerance Percent
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(this.amount, ToleranceMode.Percent);
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance, using the current amount in Ulps.
+ /// </summary>
+ public Tolerance Ulps
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(this.amount, ToleranceMode.Ulps);
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance with a TimeSpan as the amount, using
+ /// the current amount as a number of days.
+ /// </summary>
+ public Tolerance Days
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(TimeSpan.FromDays(Convert.ToDouble(amount)));
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance with a TimeSpan as the amount, using
+ /// the current amount as a number of hours.
+ /// </summary>
+ public Tolerance Hours
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(TimeSpan.FromHours(Convert.ToDouble(amount)));
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance with a TimeSpan as the amount, using
+ /// the current amount as a number of minutes.
+ /// </summary>
+ public Tolerance Minutes
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(TimeSpan.FromMinutes(Convert.ToDouble(amount)));
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance with a TimeSpan as the amount, using
+ /// the current amount as a number of seconds.
+ /// </summary>
+ public Tolerance Seconds
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(TimeSpan.FromSeconds(Convert.ToDouble(amount)));
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance with a TimeSpan as the amount, using
+ /// the current amount as a number of milliseconds.
+ /// </summary>
+ public Tolerance Milliseconds
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(TimeSpan.FromMilliseconds(Convert.ToDouble(amount)));
+ }
+ }
+
+ /// <summary>
+ /// Returns a new tolerance with a TimeSpan as the amount, using
+ /// the current amount as a number of clock ticks.
+ /// </summary>
+ public Tolerance Ticks
+ {
+ get
+ {
+ CheckLinearAndNumeric();
+ return new Tolerance(TimeSpan.FromTicks(Convert.ToInt64(amount)));
+ }
+ }
+
+ /// <summary>
+ /// Returns true if the current tolerance is empty.
+ /// </summary>
+ public bool IsEmpty
+ {
+ get { return mode == ToleranceMode.None; }
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/ToleranceMode.cs b/NUnitLite-0.9.0/src/framework/Constraints/ToleranceMode.cs
new file mode 100755
index 0000000..c5600bb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/ToleranceMode.cs
@@ -0,0 +1,54 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// Modes in which the tolerance value for a comparison can be interpreted.
+ /// </summary>
+ public enum ToleranceMode
+ {
+ /// <summary>
+ /// 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.
+ /// </summary>
+ None,
+ /// <summary>
+ /// The tolerance is used as a numeric range within which
+ /// two compared values are considered to be equal.
+ /// </summary>
+ Linear,
+ /// <summary>
+ /// Interprets the tolerance as the percentage by which
+ /// the two compared values my deviate from each other.
+ /// </summary>
+ Percent,
+ /// <summary>
+ /// Compares two values based in their distance in
+ /// representable numbers.
+ /// </summary>
+ Ulps
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/TrueConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/TrueConstraint.cs
new file mode 100755
index 0000000..8ea492a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/TrueConstraint.cs
@@ -0,0 +1,36 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// TrueConstraint tests that the actual value is true
+ /// </summary>
+ public class TrueConstraint : BasicConstraint
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:TrueConstraint"/> class.
+ /// </summary>
+ public TrueConstraint() : base(true, "True") { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/TypeConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/TypeConstraint.cs
new file mode 100755
index 0000000..2455348
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/TypeConstraint.cs
@@ -0,0 +1,59 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// TypeConstraint is the abstract base for constraints
+ /// that take a Type as their expected value.
+ /// </summary>
+ public abstract class TypeConstraint : Constraint
+ {
+ /// <summary>
+ /// The expected Type used by the constraint
+ /// </summary>
+ protected readonly Type expectedType;
+
+ /// <summary>
+ /// Construct a TypeConstraint for a given Type
+ /// </summary>
+ /// <param name="type"></param>
+ protected TypeConstraint(Type type) : base(type)
+ {
+ this.expectedType = type;
+ }
+
+ /// <summary>
+ /// Write the actual value for a failing constraint test to a
+ /// MessageWriter. TypeConstraints override this method to write
+ /// the name of the type.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.WriteActualValue(actual == null ? null : actual.GetType());
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/UniqueItemsConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/UniqueItemsConstraint.cs
new file mode 100755
index 0000000..6d62b26
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/UniqueItemsConstraint.cs
@@ -0,0 +1,63 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// UniqueItemsConstraint tests whether all the items in a
+ /// collection are unique.
+ /// </summary>
+ public class UniqueItemsConstraint : CollectionItemsEqualConstraint
+ {
+ /// <summary>
+ /// Check that all items are unique.
+ /// </summary>
+ /// <param name="actual"></param>
+ /// <returns></returns>
+ protected override bool doMatch(IEnumerable actual)
+ {
+ ObjectList list = new ObjectList();
+
+ foreach (object o1 in actual)
+ {
+ foreach (object o2 in list)
+ if (ItemsEqual(o1, o2))
+ return false;
+ list.Add(o1);
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// Write a description of this constraint to a MessageWriter
+ /// </summary>
+ /// <param name="writer"></param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("all items unique");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Constraints/XmlSerializableConstraint.cs b/NUnitLite-0.9.0/src/framework/Constraints/XmlSerializableConstraint.cs
new file mode 100755
index 0000000..9443d32
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Constraints/XmlSerializableConstraint.cs
@@ -0,0 +1,105 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !SILVERLIGHT
+using System;
+using System.IO;
+using System.Xml.Serialization;
+
+namespace NUnit.Framework.Constraints
+{
+ /// <summary>
+ /// XmlSerializableConstraint tests whether
+ /// an object is serializable in XML format.
+ /// </summary>
+ public class XmlSerializableConstraint : Constraint
+ {
+ private XmlSerializer serializer;
+
+ /// <summary>
+ /// Test whether the constraint is satisfied by a given value
+ /// </summary>
+ /// <param name="actual">The value to be tested</param>
+ /// <returns>True for success, false for failure</returns>
+ public override bool Matches(object actual)
+ {
+ this.actual = actual;
+
+ if(actual == null)
+ throw new ArgumentException();
+
+ MemoryStream stream = new MemoryStream();
+
+ try
+ {
+ serializer = new XmlSerializer(actual.GetType());
+
+ serializer.Serialize(stream, actual);
+
+ stream.Seek(0, SeekOrigin.Begin);
+
+ object value = serializer.Deserialize(stream);
+
+ return value != null;
+ }
+ catch (NotSupportedException)
+ {
+ return false;
+ }
+ catch (InvalidOperationException)
+ {
+ return false;
+ }
+ }
+
+ /// <summary>
+ /// Write the constraint description to a MessageWriter
+ /// </summary>
+ /// <param name="writer">The writer on which the description is displayed</param>
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ writer.Write("xml serializable");
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="writer">The writer on which the actual value is displayed</param>
+ public override void WriteActualValueTo(MessageWriter writer)
+ {
+ writer.Write("<{0}>", actual.GetType().Name);
+ }
+
+ /// <summary>
+ /// Returns the string representation of this constraint
+ /// </summary>
+ protected override string GetStringRepresentation()
+ {
+ return "<xmlserializable>";
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Contains.cs b/NUnitLite-0.9.0/src/framework/Contains.cs
new file mode 100755
index 0000000..b81ef81
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Contains.cs
@@ -0,0 +1,62 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Helper class with properties and methods that supply
+ /// a number of constraints used in Asserts.
+ /// </summary>
+ public class Contains
+ {
+ #region Item
+
+ /// <summary>
+ /// Returns a new CollectionContainsConstraint checking for the
+ /// presence of a particular object in the collection.
+ /// </summary>
+ public static CollectionContainsConstraint Item(object expected)
+ {
+ return new CollectionContainsConstraint(expected);
+ }
+
+ #endregion
+
+ #region Substring
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public static SubstringConstraint Substring(string expected)
+ {
+ return new SubstringConstraint(expected);;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Env.cs b/NUnitLite-0.9.0/src/framework/Env.cs
new file mode 100755
index 0000000..b069d43
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Env.cs
@@ -0,0 +1,56 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Text;
+
+namespace NUnit
+{
+ /// <summary>
+ /// Env is a static class that provides some of the features of
+ /// System.Environment that are not available under all runtimes
+ /// </summary>
+ public class Env
+ {
+ // Define NewLine to be used for this system
+ // NOTE: Since this is done at compile time for .NET CF,
+ // these binaries are not yet currently portable.
+ /// <summary>
+ /// The newline sequence in the current environmemt.
+ /// </summary>
+#if PocketPC || WindowsCE || NETCF
+ public static readonly string NewLine = "\r\n";
+#else
+ public static readonly string NewLine = Environment.NewLine;
+#endif
+
+ /// <summary>
+ /// Path to the 'My Documents' folder
+ /// </summary>
+#if SILVERLIGHT
+ public static string DocumentFolder = @"\My Documents";
+#else
+ public static string DocumentFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Exceptions/AssertionException.cs b/NUnitLite-0.9.0/src/framework/Exceptions/AssertionException.cs
new file mode 100755
index 0000000..424190d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Exceptions/AssertionException.cs
@@ -0,0 +1,56 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// Thrown when an assertion failed.
+ /// </summary>
+ [Serializable]
+ public class AssertionException : System.Exception
+ {
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ public AssertionException (string message) : base(message)
+ {}
+
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ /// <param name="inner">The exception that caused the
+ /// current exception</param>
+ public AssertionException(string message, Exception inner) :
+ base(message, inner)
+ {}
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Serialization Constructor
+ /// </summary>
+ protected AssertionException(System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context) : base(info,context)
+ {}
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Exceptions/IgnoreException.cs b/NUnitLite-0.9.0/src/framework/Exceptions/IgnoreException.cs
new file mode 100755
index 0000000..442b759
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Exceptions/IgnoreException.cs
@@ -0,0 +1,55 @@
+// ***********************************************************************
+// Copyright (c) 2004 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// Thrown when an assertion failed.
+ /// </summary>
+ [Serializable]
+ public class IgnoreException : System.Exception
+ {
+ /// <param name="message"></param>
+ public IgnoreException (string message) : base(message)
+ {}
+
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ /// <param name="inner">The exception that caused the
+ /// current exception</param>
+ public IgnoreException(string message, Exception inner) :
+ base(message, inner)
+ {}
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Serialization Constructor
+ /// </summary>
+ protected IgnoreException(System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context) : base(info,context)
+ {}
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Exceptions/InconclusiveException.cs b/NUnitLite-0.9.0/src/framework/Exceptions/InconclusiveException.cs
new file mode 100755
index 0000000..d24c8b2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Exceptions/InconclusiveException.cs
@@ -0,0 +1,58 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// Thrown when a test executes inconclusively.
+ /// </summary>
+ [Serializable]
+ public class InconclusiveException : System.Exception
+ {
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ public InconclusiveException(string message)
+ : base(message)
+ { }
+
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ /// <param name="inner">The exception that caused the
+ /// current exception</param>
+ public InconclusiveException(string message, Exception inner)
+ :
+ base(message, inner)
+ { }
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Serialization Constructor
+ /// </summary>
+ protected InconclusiveException(System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context) : base(info, context)
+ { }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Exceptions/SuccessException.cs b/NUnitLite-0.9.0/src/framework/Exceptions/SuccessException.cs
new file mode 100755
index 0000000..1c469eb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Exceptions/SuccessException.cs
@@ -0,0 +1,57 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ using System;
+
+ /// <summary>
+ /// Thrown when an assertion failed.
+ /// </summary>
+ [Serializable]
+ public class SuccessException : System.Exception
+ {
+ /// <param name="message"></param>
+ public SuccessException(string message)
+ : base(message)
+ { }
+
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ /// <param name="inner">The exception that caused the
+ /// current exception</param>
+ public SuccessException(string message, Exception inner)
+ :
+ base(message, inner)
+ { }
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Serialization Constructor
+ /// </summary>
+ protected SuccessException(System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context) : base(info, context)
+ { }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Extensibility/IParameterDataProvider.cs b/NUnitLite-0.9.0/src/framework/Extensibility/IParameterDataProvider.cs
new file mode 100755
index 0000000..2bc9a81
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Extensibility/IParameterDataProvider.cs
@@ -0,0 +1,52 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework.Extensibility
+{
+ /// <summary>
+ /// The IDataPointProvider interface is used by extensions
+ /// that provide data for a single test parameter.
+ /// </summary>
+ public interface IParameterDataProvider
+ {
+ /// <summary>
+ /// Determine whether any data is available for a parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>True if any data is available, otherwise false.</returns>
+ bool HasDataFor(ParameterInfo parameter);
+
+ /// <summary>
+ /// Return an IEnumerable providing data for use with the
+ /// supplied parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>An IEnumerable providing the required data</returns>
+ IEnumerable GetDataFor(ParameterInfo parameter);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Extensibility/ISuiteBuilder.cs b/NUnitLite-0.9.0/src/framework/Extensibility/ISuiteBuilder.cs
new file mode 100755
index 0000000..485e5ce
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Extensibility/ISuiteBuilder.cs
@@ -0,0 +1,55 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Extensibility
+{
+ /// <summary>
+ /// The ISuiteBuilder interface is exposed by a class that knows how to
+ /// build a suite from one or more Types.
+ /// </summary>
+ public interface ISuiteBuilder
+ {
+ /// <summary>
+ /// Examine the type and determine if it is suitable for
+ /// this builder to use in building a TestSuite.
+ ///
+ /// Note that returning false will cause the type to be ignored
+ /// in loading the tests. If it is desired to load the suite
+ /// but label it as non-runnable, ignored, etc., then this
+ /// method must return true.
+ /// </summary>
+ /// <param name="type">The type of the fixture to be used</param>
+ /// <returns>True if the type can be used to build a TestSuite</returns>
+ bool CanBuildFrom( Type type );
+
+ /// <summary>
+ /// Build a TestSuite from type provided.
+ /// </summary>
+ /// <param name="type">The type of the fixture to be used</param>
+ /// <returns>A TestSuite</returns>
+ Test BuildFrom( Type type );
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Extensibility/ITestCaseBuilder.cs b/NUnitLite-0.9.0/src/framework/Extensibility/ITestCaseBuilder.cs
new file mode 100755
index 0000000..7b5c901
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Extensibility/ITestCaseBuilder.cs
@@ -0,0 +1,88 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Reflection;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Extensibility
+{
+ /// <summary>
+ /// The ITestCaseBuilder interface is exposed by a class that knows how to
+ /// build a test case from certain methods.
+ /// </summary>
+ public interface ITestCaseBuilder
+ {
+ /// <summary>
+ /// Examine the method and determine if it is suitable for
+ /// this builder to use in building a TestCase.
+ ///
+ /// Note that returning false will cause the method to be ignored
+ /// in loading the tests. If it is desired to load the method
+ /// but label it as non-runnable, ignored, etc., then this
+ /// method must return true.
+ /// </summary>
+ /// <param name="method">The test method to examine</param>
+ /// <returns>True is the builder can use this method</returns>
+ bool CanBuildFrom(MethodInfo method);
+
+ /// <summary>
+ /// Build a TestCase from the provided MethodInfo.
+ /// </summary>
+ /// <param name="method">The method to be used as a test case</param>
+ /// <returns>A TestCase or null</returns>
+ Test BuildFrom(MethodInfo method);
+ }
+
+ /// <summary>
+ /// ITestCaseBuilder2 extends ITestCaseBuilder with methods
+ /// that include the suite for which the test case is being
+ /// built. Test case builders not needing the suite can
+ /// continue to implement ITestCaseBuilder.
+ /// </summary>
+ public interface ITestCaseBuilder2 : ITestCaseBuilder
+ {
+ /// <summary>
+ /// Examine the method and determine if it is suitable for
+ /// this builder to use in building a TestCase to be
+ /// included in the suite being populated.
+ ///
+ /// Note that returning false will cause the method to be ignored
+ /// in loading the tests. If it is desired to load the method
+ /// but label it as non-runnable, ignored, etc., then this
+ /// method must return true.
+ /// </summary>
+ /// <param name="method">The test method to examine</param>
+ /// <param name="suite">The suite being populated</param>
+ /// <returns>True is the builder can use this method</returns>
+ bool CanBuildFrom(MethodInfo method, Test suite);
+
+ /// <summary>
+ /// Build a TestCase from the provided MethodInfo for
+ /// inclusion in the suite being constructed.
+ /// </summary>
+ /// <param name="method">The method to be used as a test case</param>
+ /// <param name="suite">The test suite being populated, or null</param>
+ /// <returns>A TestCase or null</returns>
+ Test BuildFrom(MethodInfo method, Test suite);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Extensibility/ITestCaseProvider.cs b/NUnitLite-0.9.0/src/framework/Extensibility/ITestCaseProvider.cs
new file mode 100755
index 0000000..69e0ec4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Extensibility/ITestCaseProvider.cs
@@ -0,0 +1,55 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Reflection;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Extensibility
+{
+ /// <summary>
+ /// The ITestCaseProvider interface is used by extensions
+ /// that provide data for parameterized tests, along with
+ /// certain flags and other indicators used in the test.
+ /// </summary>
+ public interface ITestCaseProvider
+ {
+ /// <summary>
+ /// Determine whether any test cases are available for a parameterized method.
+ /// </summary>
+ /// <param name="method">A MethodInfo representing a parameterized test</param>
+ /// <returns>True if any cases are available, otherwise false.</returns>
+ bool HasTestCasesFor(MethodInfo method);
+
+ /// <summary>
+ /// Return an IEnumerable providing test cases for use in
+ /// running a paramterized test.
+ /// </summary>
+ /// <param name="method"></param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ System.Collections.Generic.IEnumerable<ITestCaseData> GetTestCasesFor(MethodInfo method);
+#else
+ System.Collections.IEnumerable GetTestCasesFor(MethodInfo method);
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/GlobalSettings.cs b/NUnitLite-0.9.0/src/framework/GlobalSettings.cs
new file mode 100755
index 0000000..1e0e5ea
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/GlobalSettings.cs
@@ -0,0 +1,39 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// GlobalSettings is a place for setting default values used
+ /// by the framework in performing asserts.
+ /// </summary>
+ public class GlobalSettings
+ {
+ /// <summary>
+ /// Default tolerance for floating point equality
+ /// </summary>
+ public static double DefaultFloatingPointTolerance = 0.0d;
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Guard.cs b/NUnitLite-0.9.0/src/framework/Guard.cs
new file mode 100755
index 0000000..2528583
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Guard.cs
@@ -0,0 +1,35 @@
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Class used to guard against unexpected argument values
+ /// by throwing an appropriate exception.
+ /// </summary>
+ public class Guard
+ {
+ /// <summary>
+ /// Throws an exception if an argument is null
+ /// </summary>
+ /// <param name="value">The value to be tested</param>
+ /// <param name="name">The name of the argument</param>
+ public static void ArgumentNotNull(object value, string name)
+ {
+ if (value == null)
+ throw new ArgumentNullException("Argument " + name + " must not be null", name);
+ }
+
+ /// <summary>
+ /// Throws an exception if a string argument is null or empty
+ /// </summary>
+ /// <param name="value">The value to be tested</param>
+ /// <param name="name">The name of the argument</param>
+ public static void ArgumentNotNullOrEmpty(string value, string name)
+ {
+ ArgumentNotNull(value, name);
+
+ if (value == string.Empty)
+ throw new ArgumentException("Argument " + name +" must not be the empty string", name);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Has.cs b/NUnitLite-0.9.0/src/framework/Has.cs
new file mode 100755
index 0000000..5f7877d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Has.cs
@@ -0,0 +1,209 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Helper class with properties and methods that supply
+ /// a number of constraints used in Asserts.
+ /// </summary>
+ public class Has
+ {
+ #region No
+
+ /// <summary>
+ /// Returns a ConstraintExpression that negates any
+ /// following constraint.
+ /// </summary>
+ public static ConstraintExpression No
+ {
+ get { return new ConstraintExpression().Not; }
+ }
+
+ #endregion
+
+ #region All
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them succeed.
+ /// </summary>
+ public static ConstraintExpression All
+ {
+ get { return new ConstraintExpression().All; }
+ }
+
+ #endregion
+
+ #region Some
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if at least one of them succeeds.
+ /// </summary>
+ public static ConstraintExpression Some
+ {
+ get { return new ConstraintExpression().Some; }
+ }
+
+ #endregion
+
+ #region None
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them fail.
+ /// </summary>
+ public static ConstraintExpression None
+ {
+ get { return new ConstraintExpression().None; }
+ }
+
+ #endregion
+
+ #region Exactly(n)
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding only if a specified number of them succeed.
+ /// </summary>
+ public static ConstraintExpression Exactly(int expectedCount)
+ {
+ return new ConstraintExpression().Exactly(expectedCount);
+ }
+
+ #endregion
+
+ #region Property
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public static ResolvableConstraintExpression Property(string name)
+ {
+ return new ConstraintExpression().Property(name);
+ }
+
+ #endregion
+
+ #region Length
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Length property of the object being tested.
+ /// </summary>
+ public static ResolvableConstraintExpression Length
+ {
+ get { return Property("Length"); }
+ }
+
+ #endregion
+
+ #region Count
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Count property of the object being tested.
+ /// </summary>
+ public static ResolvableConstraintExpression Count
+ {
+ get { return Property("Count"); }
+ }
+
+ #endregion
+
+ #region Message
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the Message property of the object being tested.
+ /// </summary>
+ public static ResolvableConstraintExpression Message
+ {
+ get { return Property("Message"); }
+ }
+
+ #endregion
+
+ #region InnerException
+
+ /// <summary>
+ /// Returns a new ConstraintExpression, which will apply the following
+ /// constraint to the InnerException property of the object being tested.
+ /// </summary>
+ public static ResolvableConstraintExpression InnerException
+ {
+ get { return Property("InnerException"); }
+ }
+
+ #endregion
+
+ #region Attribute
+
+ /// <summary>
+ /// Returns a new AttributeConstraint checking for the
+ /// presence of a particular attribute on an object.
+ /// </summary>
+ public static ResolvableConstraintExpression Attribute(Type expectedType)
+ {
+ return new ConstraintExpression().Attribute(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a new AttributeConstraint checking for the
+ /// presence of a particular attribute on an object.
+ /// </summary>
+ public static ResolvableConstraintExpression Attribute<T>()
+ {
+ return Attribute(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region Member
+
+ /// <summary>
+ /// Returns a new CollectionContainsConstraint checking for the
+ /// presence of a particular object in the collection.
+ /// </summary>
+ public static CollectionContainsConstraint Member(object expected)
+ {
+ return new CollectionContainsConstraint(expected);
+ }
+
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/IExpectException.cs b/NUnitLite-0.9.0/src/framework/IExpectException.cs
new file mode 100755
index 0000000..adcdca7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/IExpectException.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public interface IExpectException
+ {
+ /// <summary>
+ /// Method to handle an expected exception
+ /// </summary>
+ /// <param name="ex">The exception to be handled</param>
+ void HandleException(Exception ex);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/AssemblyHelper.cs b/NUnitLite-0.9.0/src/framework/Internal/AssemblyHelper.cs
new file mode 100755
index 0000000..c9b8593
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/AssemblyHelper.cs
@@ -0,0 +1,135 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// AssemblyHelper provides static methods for working
+ /// with assemblies.
+ /// </summary>
+ public class AssemblyHelper
+ {
+ #region GetAssemblyPath
+
+#if !NETCF
+ /// <summary>
+ /// Gets the path from which the assembly defining a Type was loaded.
+ /// </summary>
+ /// <param name="assembly">The Type.</param>
+ /// <returns>The path.</returns>
+ public static string GetAssemblyPath(Type type)
+ {
+ return GetAssemblyPath(type.Assembly);
+ }
+
+ /// <summary>
+ /// Gets the path from which an assembly was loaded.
+ /// </summary>
+ /// <param name="assembly">The assembly.</param>
+ /// <returns>The path.</returns>
+ public static string GetAssemblyPath(Assembly assembly)
+ {
+ string codeBase = assembly.CodeBase;
+
+ if (IsFileUri(codeBase))
+ return GetAssemblyPathFromCodeBase(codeBase);
+
+ return assembly.Location;
+ }
+#endif
+
+ #endregion
+
+ #region GetDirectoryName
+
+#if !NETCF
+ /// <summary>
+ /// Gets the path to the directory from which an assembly was loaded.
+ /// </summary>
+ /// <param name="assembly">The assembly.</param>
+ /// <returns>The path.</returns>
+ public static string GetDirectoryName( Assembly assembly )
+ {
+ return System.IO.Path.GetDirectoryName(GetAssemblyPath(assembly));
+ }
+#endif
+
+ #endregion
+
+ #region GetAssemblyName
+
+ /// <summary>
+ /// Gets the AssemblyName of an assembly.
+ /// </summary>
+ /// <param name="assembly">The assembly</param>
+ /// <returns>An AssemblyName</returns>
+ public static AssemblyName GetAssemblyName(Assembly assembly)
+ {
+#if SILVERLIGHT
+ return new AssemblyName(assembly.FullName);
+#else
+ return assembly.GetName();
+#endif
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+#if !NETCF
+ private static bool IsFileUri(string uri)
+ {
+ return uri.ToLower().StartsWith(Uri.UriSchemeFile);
+ }
+
+ // Public for testing purposes
+ public static string GetAssemblyPathFromCodeBase(string codeBase)
+ {
+ // Skip over the file:// part
+ int start = Uri.UriSchemeFile.Length + Uri.SchemeDelimiter.Length;
+
+ bool isWindows = System.IO.Path.DirectorySeparatorChar == '\\';
+
+ if (codeBase[start] == '/') // third slash means a local path
+ {
+ // Handle Windows Drive specifications
+ if (isWindows && codeBase[start + 2] == ':')
+ ++start;
+ // else leave the last slash so path is absolute
+ }
+ else // It's either a Windows Drive spec or a share
+ {
+ if (!isWindows || codeBase[start + 1] != ':')
+ start -= 2; // Back up to include two slashes
+ }
+
+ return codeBase.Substring(start);
+ }
+#endif
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/AsyncInvocationRegion.cs b/NUnitLite-0.9.0/src/framework/Internal/AsyncInvocationRegion.cs
new file mode 100755
index 0000000..345a808
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/AsyncInvocationRegion.cs
@@ -0,0 +1,131 @@
+#if NET_4_5
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Threading;
+
+namespace NUnit.Framework.Internal
+{
+ internal abstract class AsyncInvocationRegion : IDisposable
+ {
+ private static readonly Type AsyncStateMachineAttribute = Type.GetType("System.Runtime.CompilerServices.AsyncStateMachineAttribute");
+ private static readonly MethodInfo PreserveStackTraceMethod = typeof(Exception).GetMethod("InternalPreserveStackTrace", BindingFlags.Instance | BindingFlags.NonPublic);
+ private static readonly Action<Exception> PreserveStackTrace;
+
+ static AsyncInvocationRegion()
+ {
+ PreserveStackTrace = (Action<Exception>)Delegate.CreateDelegate(typeof(Action<Exception>), PreserveStackTraceMethod);
+ }
+
+ private AsyncInvocationRegion()
+ {
+ }
+
+ public static AsyncInvocationRegion Create(Delegate @delegate)
+ {
+ return Create(@delegate.Method);
+ }
+
+ public static AsyncInvocationRegion Create(MethodInfo method)
+ {
+ if (!IsAsyncOperation(method))
+ throw new InvalidOperationException(@"Either asynchronous support is not available or an attempt
+at wrapping a non-async method invocation in an async region was done");
+
+ if (method.ReturnType == typeof(void))
+ return new AsyncVoidInvocationRegion();
+
+ return new AsyncTaskInvocationRegion();
+ }
+
+ public static bool IsAsyncOperation(MethodInfo method)
+ {
+ return AsyncStateMachineAttribute != null && method.IsDefined(AsyncStateMachineAttribute, false);
+ }
+
+ public static bool IsAsyncOperation(Delegate @delegate)
+ {
+ return IsAsyncOperation(@delegate.Method);
+ }
+
+ /// <summary>
+ /// Waits for pending asynchronous operations to complete, if appropriate,
+ /// and returns a proper result of the invocation by unwrapping task results
+ /// </summary>
+ /// <param name="invocationResult">The raw result of the method invocation</param>
+ /// <returns>The unwrapped result, if necessary</returns>
+ public abstract object WaitForPendingOperationsToComplete(object invocationResult);
+
+ public virtual void Dispose()
+ { }
+
+ private class AsyncVoidInvocationRegion : AsyncInvocationRegion
+ {
+ private readonly SynchronizationContext _previousContext;
+ private readonly AsyncSynchronizationContext _currentContext;
+
+ public AsyncVoidInvocationRegion()
+ {
+ _previousContext = SynchronizationContext.Current;
+ _currentContext = new AsyncSynchronizationContext();
+ SynchronizationContext.SetSynchronizationContext(_currentContext);
+ }
+
+ public override void Dispose()
+ {
+ SynchronizationContext.SetSynchronizationContext(_previousContext);
+ }
+
+ public override object WaitForPendingOperationsToComplete(object invocationResult)
+ {
+ try
+ {
+ _currentContext.WaitForPendingOperationsToComplete();
+ return invocationResult;
+ }
+ catch (Exception e)
+ {
+ PreserveStackTrace(e);
+ throw;
+ }
+ }
+ }
+
+ private class AsyncTaskInvocationRegion : AsyncInvocationRegion
+ {
+ private const string TaskWaitMethod = "Wait";
+ private const string TaskResultProperty = "Result";
+ private const string SystemAggregateException = "System.AggregateException";
+ private const string InnerExceptionsProperty = "InnerExceptions";
+ private const BindingFlags TaskResultPropertyBindingFlags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public;
+
+ public override object WaitForPendingOperationsToComplete(object invocationResult)
+ {
+ try
+ {
+ invocationResult.GetType().GetMethod(TaskWaitMethod, new Type[0]).Invoke(invocationResult, null);
+ }
+ catch (TargetInvocationException e)
+ {
+ IList<Exception> innerExceptions = GetAllExceptions(e.InnerException);
+
+ PreserveStackTrace(innerExceptions[0]);
+ throw innerExceptions[0];
+ }
+
+ PropertyInfo taskResultProperty = invocationResult.GetType().GetProperty(TaskResultProperty, TaskResultPropertyBindingFlags);
+
+ return taskResultProperty != null ? taskResultProperty.GetValue(invocationResult, null) : invocationResult;
+ }
+
+ private static IList<Exception> GetAllExceptions(Exception exception)
+ {
+ if (SystemAggregateException.Equals(exception.GetType().FullName))
+ return (IList<Exception>)exception.GetType().GetProperty(InnerExceptionsProperty).GetValue(exception, null);
+
+ return new Exception[] { exception };
+ }
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/AsyncSynchronizationContext.cs b/NUnitLite-0.9.0/src/framework/Internal/AsyncSynchronizationContext.cs
new file mode 100755
index 0000000..6187a2c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/AsyncSynchronizationContext.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections;
+using System.Threading;
+
+namespace NUnit.Framework.Internal
+{
+ internal class AsyncSynchronizationContext : SynchronizationContext
+ {
+ private int _operationCount;
+ private readonly AsyncOperationQueue _operations = new AsyncOperationQueue();
+
+ public override void Send(SendOrPostCallback d, object state)
+ {
+ throw new InvalidOperationException("Sending to this synchronization context is not supported");
+ }
+
+ public override void Post(SendOrPostCallback d, object state)
+ {
+ _operations.Enqueue(new AsyncOperation(d, state));
+ }
+
+ public override void OperationStarted()
+ {
+ Interlocked.Increment(ref _operationCount);
+ base.OperationStarted();
+ }
+
+ public override void OperationCompleted()
+ {
+ if (Interlocked.Decrement(ref _operationCount) == 0)
+ _operations.MarkAsComplete();
+
+ base.OperationCompleted();
+ }
+
+ public void WaitForPendingOperationsToComplete()
+ {
+ _operations.InvokeAll();
+ }
+
+ private class AsyncOperationQueue
+ {
+ private bool _run = true;
+ private readonly Queue _operations = Queue.Synchronized(new Queue());
+ private readonly AutoResetEvent _operationsAvailable = new AutoResetEvent(false);
+
+ public void Enqueue(AsyncOperation asyncOperation)
+ {
+ _operations.Enqueue(asyncOperation);
+ _operationsAvailable.Set();
+ }
+
+ public void MarkAsComplete()
+ {
+ _run = false;
+ _operationsAvailable.Set();
+ }
+
+ public void InvokeAll()
+ {
+ while (_run)
+ {
+ InvokePendingOperations();
+ _operationsAvailable.WaitOne();
+ }
+
+ InvokePendingOperations();
+ }
+
+ private void InvokePendingOperations()
+ {
+ while (_operations.Count > 0)
+ {
+ AsyncOperation operation = (AsyncOperation)_operations.Dequeue();
+ operation.Invoke();
+ }
+ }
+ }
+
+ private class AsyncOperation
+ {
+ private readonly SendOrPostCallback _action;
+ private readonly object _state;
+
+ public AsyncOperation(SendOrPostCallback action, object state)
+ {
+ _action = action;
+ _state = state;
+ }
+
+ public void Invoke()
+ {
+ _action(_state);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialStrategy.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialStrategy.cs
new file mode 100755
index 0000000..9f2bae1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialStrategy.cs
@@ -0,0 +1,92 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// CombinatorialStrategy creates test cases by using all possible
+ /// combinations of the parameter data.
+ /// </summary>
+ public class CombinatorialStrategy : CombiningStrategy
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CombinatorialStrategy"/> class.
+ /// </summary>
+ /// <param name="sources">The sources.</param>
+ public CombinatorialStrategy(IEnumerable[] sources) : base(sources) { }
+
+ /// <summary>
+ /// Gets the test cases generated by the CombiningStrategy.
+ /// </summary>
+ /// <returns>The test cases.</returns>
+#if CLR_2_0 || CLR_4_0
+ public override IEnumerable<ITestCaseData> GetTestCases()
+ {
+ List<ITestCaseData> testCases = new List<ITestCaseData>();
+#else
+ public override IEnumerable GetTestCases()
+ {
+ ArrayList testCases = new ArrayList();
+#endif
+ IEnumerator[] enumerators = new IEnumerator[Sources.Length];
+ int index = -1;
+
+ for (; ; )
+ {
+ while (++index < Sources.Length)
+ {
+ enumerators[index] = Sources[index].GetEnumerator();
+ if (!enumerators[index].MoveNext())
+ return testCases;
+ }
+
+ object[] testdata = new object[Sources.Length];
+
+ for (int i = 0; i < Sources.Length; i++)
+ testdata[i] = enumerators[i].Current;
+
+ ParameterSet parms = new ParameterSet();
+ parms.Arguments = testdata;
+ testCases.Add(parms);
+
+ index = Sources.Length;
+
+ while (--index >= 0 && !enumerators[index].MoveNext()) ;
+
+ if (index < 0) break;
+ }
+
+ return testCases;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialTestCaseProvider.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialTestCaseProvider.cs
new file mode 100755
index 0000000..8455cc7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/CombinatorialTestCaseProvider.cs
@@ -0,0 +1,113 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Collections;
+using NUnit.Framework.Api;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// CombinatorialTestCaseProvider creates test cases from individual
+ /// parameter data values, combining them using the CombiningStrategy
+ /// indicated by an Attribute used on the test method.
+ /// </summary>
+ public class CombinatorialTestCaseProvider : ITestCaseProvider
+ {
+ #region Static Members
+ static IParameterDataProvider dataPointProvider =
+#if NUNITLITE
+ new ParameterDataProviders();
+#else
+ (IParameterDataProvider)CoreExtensions.Host.GetExtensionPoint("ParameterDataProviders");
+#endif
+
+ #endregion
+
+ #region ITestCaseProvider Members
+
+ /// <summary>
+ /// Determine whether any test cases are available for a parameterized method.
+ /// </summary>
+ /// <param name="method">A MethodInfo representing a parameterized test</param>
+ /// <returns>
+ /// True if any cases are available, otherwise false.
+ /// </returns>
+ public bool HasTestCasesFor(System.Reflection.MethodInfo method)
+ {
+ if (method.GetParameters().Length == 0)
+ return false;
+
+ foreach (ParameterInfo parameter in method.GetParameters())
+ if (!dataPointProvider.HasDataFor(parameter))
+ return false;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Return an IEnumerable providing test cases for use in
+ /// running a paramterized test.
+ /// </summary>
+ /// <param name="method"></param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ public System.Collections.Generic.IEnumerable<ITestCaseData> GetTestCasesFor(MethodInfo method)
+#else
+ public IEnumerable GetTestCasesFor(MethodInfo method)
+#endif
+ {
+ return GetStrategy(method).GetTestCases();
+ }
+ #endregion
+
+ #region GetStrategy
+
+ /// <summary>
+ /// Gets the strategy to be used in building test cases for this test.
+ /// </summary>
+ /// <param name="method">The method for which test cases are being built.</param>
+ /// <returns></returns>
+ private CombiningStrategy GetStrategy(MethodInfo method)
+ {
+ ParameterInfo[] parameters = method.GetParameters();
+ IEnumerable[] sources = new IEnumerable[parameters.Length];
+ for (int i = 0; i < parameters.Length; i++)
+ sources[i] = dataPointProvider.GetDataFor(parameters[i]);
+
+ if (method.IsDefined(typeof(NUnit.Framework.SequentialAttribute), false))
+ return new SequentialStrategy(sources);
+
+ if (method.IsDefined(typeof(NUnit.Framework.PairwiseAttribute), false) &&
+ method.GetParameters().Length > 2)
+ return new PairwiseStrategy(sources);
+
+ return new CombinatorialStrategy(sources);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/CombiningStrategy.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/CombiningStrategy.cs
new file mode 100755
index 0000000..7dcdac0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/CombiningStrategy.cs
@@ -0,0 +1,91 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// CombiningStrategy is the abstract base for classes that
+ /// know how to combine values provided for individual test
+ /// parameters to create a set of test cases.
+ /// </summary>
+ public abstract class CombiningStrategy
+ {
+ private IEnumerable[] sources;
+ private IEnumerator[] enumerators;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CombiningStrategy"/>
+ /// class using a set of parameter sources.
+ /// </summary>
+ /// <param name="sources">The sources.</param>
+ public CombiningStrategy(IEnumerable[] sources)
+ {
+ this.sources = sources;
+ }
+
+ /// <summary>
+ /// Gets the sources used by this strategy.
+ /// </summary>
+ /// <value>The sources.</value>
+ public IEnumerable[] Sources
+ {
+ get { return sources; }
+ }
+
+ /// <summary>
+ /// Gets the enumerators for the sources.
+ /// </summary>
+ /// <value>The enumerators.</value>
+ public IEnumerator[] Enumerators
+ {
+ get
+ {
+ if (enumerators == null)
+ {
+ enumerators = new IEnumerator[Sources.Length];
+ for (int i = 0; i < Sources.Length; i++)
+ enumerators[i] = Sources[i].GetEnumerator();
+ }
+
+ return enumerators;
+ }
+ }
+
+ /// <summary>
+ /// Gets the test cases generated by the CombiningStrategy.
+ /// </summary>
+ /// <returns>The test cases.</returns>
+#if CLR_2_0 || CLR_4_0
+ public abstract System.Collections.Generic.IEnumerable<ITestCaseData> GetTestCases();
+#else
+ public abstract System.Collections.IEnumerable GetTestCases();
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/DataAttributeTestCaseProvider.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/DataAttributeTestCaseProvider.cs
new file mode 100755
index 0000000..3632dd3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/DataAttributeTestCaseProvider.cs
@@ -0,0 +1,90 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// DataAttributeTestCaseProvider provides data for methods
+ /// annotated with any DataAttribute. For correct operation,
+ /// any new or custom Attributes must implement one of the
+ /// following interfaces:
+ /// ITestCaseData
+ /// ITestCaseSource
+ /// </summary>
+ public class DataAttributeTestCaseProvider : ITestCaseProvider
+ {
+ #region ITestCaseProvider Members
+
+ /// <summary>
+ /// Determine whether any test cases are available for a parameterized method.
+ /// </summary>
+ /// <param name="method">A MethodInfo representing a parameterized test</param>
+ /// <returns>True if any cases are available, otherwise false.</returns>
+ public bool HasTestCasesFor(MethodInfo method)
+ {
+ return method.IsDefined(typeof(DataAttribute), false);
+ }
+
+ /// <summary>
+ /// Return an IEnumerable providing test cases for use in
+ /// running a parameterized test.
+ /// </summary>
+ /// <param name="method"></param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ public IEnumerable<ITestCaseData> GetTestCasesFor(MethodInfo method)
+ {
+ List<ITestCaseData> testCases = new List<ITestCaseData>();
+#else
+ public IEnumerable GetTestCasesFor(MethodInfo method)
+ {
+ ArrayList testCases = new ArrayList();
+#endif
+
+ foreach (DataAttribute attr in method.GetCustomAttributes(typeof(DataAttribute), false))
+ {
+ ITestCaseSource source = attr as ITestCaseSource;
+ if (source != null)
+ {
+ // TODO: Create a class to handle exceptions for NUnitLite
+ foreach (ITestCaseData testCase in ((ITestCaseSource)attr).GetTestCasesFor(method))
+ testCases.Add(testCase);
+ continue;
+ }
+ }
+
+ return testCases;
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/DatapointProvider.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/DatapointProvider.cs
new file mode 100755
index 0000000..d471291
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/DatapointProvider.cs
@@ -0,0 +1,186 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Collections;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// Provides data from fields marked with the DatapointAttribute or the
+ /// DatapointsAttribute.
+ /// </summary>
+ public class DatapointProvider : IParameterDataProvider
+ {
+ #region IDataPointProvider Members
+
+ /// <summary>
+ /// Determine whether any data is available for a parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>
+ /// True if any data is available, otherwise false.
+ /// </returns>
+ public bool HasDataFor(System.Reflection.ParameterInfo parameter)
+ {
+ Type parameterType = parameter.ParameterType;
+ MemberInfo method = parameter.Member;
+ Type fixtureType = method.ReflectedType;
+
+ if (!method.IsDefined(typeof(TheoryAttribute), true))
+ return false;
+
+ if (parameterType == typeof(bool) || parameterType.IsEnum)
+ return true;
+
+ foreach (MemberInfo member in fixtureType.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
+ {
+ if (member.IsDefined(typeof(DatapointAttribute), true) &&
+ GetTypeFromMemberInfo(member) == parameterType)
+ return true;
+ else if (member.IsDefined(typeof(DatapointSourceAttribute), true) &&
+ GetElementTypeFromMemberInfo(member) == parameterType)
+ return true;
+ }
+
+ return false;
+ }
+
+ /// <summary>
+ /// Return an IEnumerable providing data for use with the
+ /// supplied parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>
+ /// An IEnumerable providing the required data
+ /// </returns>
+ public System.Collections.IEnumerable GetDataFor(System.Reflection.ParameterInfo parameter)
+ {
+ ObjectList datapoints = new ObjectList();
+
+ Type parameterType = parameter.ParameterType;
+ Type fixtureType = parameter.Member.ReflectedType;
+
+ foreach (MemberInfo member in fixtureType.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
+ {
+ if (member.IsDefined(typeof(DatapointAttribute), true))
+ {
+ if (GetTypeFromMemberInfo(member) == parameterType &&
+ member.MemberType == MemberTypes.Field)
+ {
+ FieldInfo field = member as FieldInfo;
+ if (field.IsStatic)
+ datapoints.Add(field.GetValue(null));
+ else
+ datapoints.Add(field.GetValue(ProviderCache.GetInstanceOf(fixtureType)));
+ }
+ }
+ else if (member.IsDefined(typeof(DatapointSourceAttribute), true))
+ {
+ if (GetElementTypeFromMemberInfo(member) == parameterType)
+ {
+ object instance;
+
+ switch(member.MemberType)
+ {
+ case MemberTypes.Field:
+ FieldInfo field = member as FieldInfo;
+ instance = field.IsStatic ? null : ProviderCache.GetInstanceOf(fixtureType);
+ foreach (object data in (IEnumerable)field.GetValue(instance))
+ datapoints.Add(data);
+ break;
+ case MemberTypes.Property:
+ PropertyInfo property = member as PropertyInfo;
+ MethodInfo getMethod = property.GetGetMethod(true);
+ instance = getMethod.IsStatic ? null : ProviderCache.GetInstanceOf(fixtureType);
+ foreach (object data in (IEnumerable)property.GetValue(instance,null))
+ datapoints.Add(data);
+ break;
+ case MemberTypes.Method:
+ MethodInfo method = member as MethodInfo;
+ instance = method.IsStatic ? null : ProviderCache.GetInstanceOf(fixtureType);
+ foreach (object data in (IEnumerable)method.Invoke(instance, new Type[0]))
+ datapoints.Add(data);
+ break;
+ }
+ }
+ }
+ }
+
+ if (datapoints.Count == 0)
+ {
+ if (parameterType == typeof(bool))
+ {
+ datapoints.Add(true);
+ datapoints.Add(false);
+ }
+ else if (parameterType.IsEnum)
+ {
+ datapoints.AddRange(TypeHelper.GetEnumValues(parameterType));
+ }
+ }
+
+ return datapoints;
+ }
+
+ private Type GetTypeFromMemberInfo(MemberInfo member)
+ {
+ switch (member.MemberType)
+ {
+ case MemberTypes.Field:
+ return ((FieldInfo)member).FieldType;
+ case MemberTypes.Property:
+ return ((PropertyInfo)member).PropertyType;
+ case MemberTypes.Method:
+ return ((MethodInfo)member).ReturnType;
+ default:
+ return null;
+ }
+ }
+
+ private Type GetElementTypeFromMemberInfo(MemberInfo member)
+ {
+ Type type = GetTypeFromMemberInfo(member);
+
+ if (type == null)
+ return null;
+
+ if (type.IsArray)
+ return type.GetElementType();
+
+#if CLR_2_0 || CLR_4_0
+ if (type.IsGenericType && type.Name == "IEnumerable`1")
+ return type.GetGenericArguments()[0];
+#endif
+
+ return null;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestCaseBuilder.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestCaseBuilder.cs
new file mode 100755
index 0000000..63eaeda
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestCaseBuilder.cs
@@ -0,0 +1,411 @@
+// ***********************************************************************
+// Copyright (c) 2008-2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal.Commands;
+
+#if NET_4_5
+using System.Threading.Tasks;
+#endif
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// Class to build ether a parameterized or a normal NUnitTestMethod.
+ /// There are four cases that the builder must deal with:
+ /// 1. The method needs no params and none are provided
+ /// 2. The method needs params and they are provided
+ /// 3. The method needs no params but they are provided in error
+ /// 4. The method needs params but they are not provided
+ /// This could have been done using two different builders, but it
+ /// turned out to be simpler to have just one. The BuildFrom method
+ /// takes a different branch depending on whether any parameters are
+ /// provided, but all four cases are dealt with in lower-level methods
+ /// </summary>
+ public class NUnitTestCaseBuilder : ITestCaseBuilder2
+ {
+ private Randomizer random;
+#if NUNITLITE
+ private ITestCaseProvider testCaseProvider = new TestCaseProviders();
+#else
+ private ITestCaseProvider testCaseProvider = CoreExtensions.Host.TestCaseProviders;
+#endif
+ /// <summary>
+ /// Default no argument constructor for NUnitTestCaseBuilder
+ /// </summary>
+ public NUnitTestCaseBuilder()
+ {
+ //MethodBase.GetCurrentMethod does not compile on NETCF so this method is used instead
+ random = Randomizer.GetRandomizer(typeof(NUnitTestCaseBuilder).GetConstructor(new Type[0]));
+ }
+
+ #region ITestCaseBuilder Methods
+ /// <summary>
+ /// Determines if the method can be used to build an NUnit test
+ /// test method of some kind. The method must normally be marked
+ /// with an identifying attriute for this to be true.
+ ///
+ /// Note that this method does not check that the signature
+ /// of the method for validity. If we did that here, any
+ /// test methods with invalid signatures would be passed
+ /// over in silence in the test run. Since we want such
+ /// methods to be reported, the check for validity is made
+ /// in BuildFrom rather than here.
+ /// </summary>
+ /// <param name="method">A MethodInfo for the method being used as a test method</param>
+ /// <returns>True if the builder can create a test case from this method</returns>
+ public bool CanBuildFrom(MethodInfo method)
+ {
+ return method.IsDefined(typeof(TestAttribute), false)
+ || method.IsDefined(typeof(ITestCaseSource), false)
+ || method.IsDefined(typeof(TheoryAttribute), false);
+ }
+
+ /// <summary>
+ /// Build a Test from the provided MethodInfo. Depending on
+ /// whether the method takes arguments and on the availability
+ /// of test case data, this method may return a single test
+ /// or a group of tests contained in a ParameterizedMethodSuite.
+ /// </summary>
+ /// <param name="method">The MethodInfo for which a test is to be built</param>
+ /// <returns>A Test representing one or more method invocations</returns>
+ public Test BuildFrom(MethodInfo method)
+ {
+ return BuildFrom(method, null);
+ }
+
+ #endregion
+
+ #region ITestCaseBuilder2 Members
+
+ /// <summary>
+ /// Determines if the method can be used to build an NUnit test
+ /// test method of some kind. The method must normally be marked
+ /// with an identifying attriute for this to be true.
+ ///
+ /// Note that this method does not check that the signature
+ /// of the method for validity. If we did that here, any
+ /// test methods with invalid signatures would be passed
+ /// over in silence in the test run. Since we want such
+ /// methods to be reported, the check for validity is made
+ /// in BuildFrom rather than here.
+ /// </summary>
+ /// <param name="method">A MethodInfo for the method being used as a test method</param>
+ /// <param name="parentSuite">The test suite being built, to which the new test would be added</param>
+ /// <returns>True if the builder can create a test case from this method</returns>
+ public bool CanBuildFrom(MethodInfo method, Test parentSuite)
+ {
+ return CanBuildFrom(method);
+ }
+
+ /// <summary>
+ /// Build a Test from the provided MethodInfo. Depending on
+ /// whether the method takes arguments and on the availability
+ /// of test case data, this method may return a single test
+ /// or a group of tests contained in a ParameterizedMethodSuite.
+ /// </summary>
+ /// <param name="method">The MethodInfo for which a test is to be built</param>
+ /// <param name="parentSuite">The test fixture being populated, or null</param>
+ /// <returns>A Test representing one or more method invocations</returns>
+ public Test BuildFrom(MethodInfo method, Test parentSuite)
+ {
+ return testCaseProvider.HasTestCasesFor(method)
+ ? BuildParameterizedMethodSuite(method, parentSuite)
+ : BuildSingleTestMethod(method, parentSuite, null);
+ }
+
+ #endregion
+
+ #region Implementation
+
+ /// <summary>
+ /// Builds a ParameterizedMetodSuite containing individual
+ /// test cases for each set of parameters provided for
+ /// this method.
+ /// </summary>
+ /// <param name="method">The MethodInfo for which a test is to be built</param>
+ /// <param name="parentSuite">The test suite for which the method is being built</param>
+ /// <returns>A ParameterizedMethodSuite populated with test cases</returns>
+ public Test BuildParameterizedMethodSuite(MethodInfo method, Test parentSuite)
+ {
+ ParameterizedMethodSuite methodSuite = new ParameterizedMethodSuite(method);
+ methodSuite.ApplyAttributesToTest(method);
+
+ foreach (ITestCaseData testcase in testCaseProvider.GetTestCasesFor(method))
+ {
+ ParameterSet parms = testcase as ParameterSet;
+ if (parms == null)
+ parms = new ParameterSet(testcase);
+
+ TestMethod test = BuildSingleTestMethod(method, parentSuite, parms);
+
+ methodSuite.Add(test);
+ }
+
+ return methodSuite;
+ }
+
+ /// <summary>
+ /// Builds a single NUnitTestMethod, either as a child of the fixture
+ /// or as one of a set of test cases under a ParameterizedTestMethodSuite.
+ /// </summary>
+ /// <param name="method">The MethodInfo from which to construct the TestMethod</param>
+ /// <param name="parentSuite">The suite or fixture to which the new test will be added</param>
+ /// <param name="parms">The ParameterSet to be used, or null</param>
+ /// <returns></returns>
+ private TestMethod BuildSingleTestMethod(MethodInfo method, Test parentSuite, ParameterSet parms)
+ {
+ TestMethod testMethod = new TestMethod(method, parentSuite);
+
+ testMethod.Seed = random.Next();
+
+ string prefix = method.ReflectedType.FullName;
+
+ // Needed to give proper fullname to test in a parameterized fixture.
+ // Without this, the arguments to the fixture are not included.
+ if (parentSuite != null)
+ {
+ prefix = parentSuite.FullName;
+ //testMethod.FullName = prefix + "." + testMethod.Name;
+ }
+
+ if (CheckTestMethodSignature(testMethod, parms))
+ {
+ if (parms == null)
+ testMethod.ApplyAttributesToTest(method);
+
+ foreach (ICommandDecorator decorator in method.GetCustomAttributes(typeof(ICommandDecorator), true))
+ testMethod.CustomDecorators.Add(decorator);
+
+ ExpectedExceptionAttribute[] attributes =
+ (ExpectedExceptionAttribute[])method.GetCustomAttributes(typeof(ExpectedExceptionAttribute), false);
+
+ if (attributes.Length > 0)
+ {
+ ExpectedExceptionAttribute attr = attributes[0];
+ string handlerName = attr.Handler;
+ if (handlerName != null && GetExceptionHandler(testMethod.FixtureType, handlerName) == null)
+ MarkAsNotRunnable(
+ testMethod,
+ string.Format("The specified exception handler {0} was not found", handlerName));
+
+ testMethod.CustomDecorators.Add(new ExpectedExceptionDecorator(attr.ExceptionData));
+ }
+ }
+
+ if (parms != null)
+ {
+ // NOTE: After the call to CheckTestMethodSignature, the Method
+ // property of testMethod may no longer be the same as the
+ // original MethodInfo, so we reassign it here.
+ method = testMethod.Method;
+
+ if (parms.TestName != null)
+ {
+ testMethod.Name = parms.TestName;
+ testMethod.FullName = prefix + "." + parms.TestName;
+ }
+ else if (parms.OriginalArguments != null)
+ {
+ string name = MethodHelper.GetDisplayName(method, parms.OriginalArguments);
+ testMethod.Name = name;
+ testMethod.FullName = prefix + "." + name;
+ }
+
+ parms.ApplyToTest(testMethod);
+ }
+
+ return testMethod;
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ /// <summary>
+ /// Helper method that checks the signature of a TestMethod and
+ /// any supplied parameters to determine if the test is valid.
+ ///
+ /// Currently, NUnitTestMethods are required to be public,
+ /// non-abstract methods, either static or instance,
+ /// returning void. They may take arguments but the values must
+ /// be provided or the TestMethod is not considered runnable.
+ ///
+ /// Methods not meeting these criteria will be marked as
+ /// non-runnable and the method will return false in that case.
+ /// </summary>
+ /// <param name="testMethod">The TestMethod to be checked. If it
+ /// is found to be non-runnable, it will be modified.</param>
+ /// <param name="parms">Parameters to be used for this test, or null</param>
+ /// <returns>True if the method signature is valid, false if not</returns>
+ private static bool CheckTestMethodSignature(TestMethod testMethod, ParameterSet parms)
+ {
+ if (testMethod.Method.IsAbstract)
+ {
+ return MarkAsNotRunnable(testMethod, "Method is abstract");
+ }
+
+ if (!testMethod.Method.IsPublic)
+ {
+ return MarkAsNotRunnable(testMethod, "Method is not public");
+ }
+
+#if NETCF
+ // TODO: Get this to work
+ if (testMethod.Method.IsGenericMethodDefinition)
+ {
+ return MarkAsNotRunnable(testMethod, "Generic test methods are not yet supported under .NET CF");
+ }
+#endif
+
+ ParameterInfo[] parameters = testMethod.Method.GetParameters();
+ int argsNeeded = parameters.Length;
+
+ object[] arglist = null;
+ int argsProvided = 0;
+
+ if (parms != null)
+ {
+ testMethod.parms = parms;
+ testMethod.RunState = parms.RunState;
+
+ arglist = parms.Arguments;
+
+ if (arglist != null)
+ argsProvided = arglist.Length;
+
+ if (testMethod.RunState != RunState.Runnable)
+ return false;
+ }
+
+ Type returnType = testMethod.Method.ReturnType;
+ if (returnType.Equals(typeof(void)))
+ {
+ if (parms != null && parms.HasExpectedResult)
+ return MarkAsNotRunnable(testMethod, "Method returning void cannot have an expected result");
+ }
+ else
+ {
+#if NET_4_5
+ if (MethodHelper.IsAsyncMethod(testMethod.Method))
+ {
+ bool returnsGenericTask = returnType.IsGenericType && returnType.GetGenericTypeDefinition() == typeof(Task<>);
+ if (returnsGenericTask && (parms == null|| !parms.HasExpectedResult && !parms.ExceptionExpected))
+ return MarkAsNotRunnable(testMethod, "Async test method must have Task or void return type when no result is expected");
+ else if (!returnsGenericTask && parms != null && parms.HasExpectedResult)
+ return MarkAsNotRunnable(testMethod, "Async test method must have Task<T> return type when a result is expected");
+ }
+ else
+#endif
+ if (parms == null || !parms.HasExpectedResult && !parms.ExceptionExpected)
+ return MarkAsNotRunnable(testMethod, "Method has non-void return value, but no result is expected");
+ }
+
+ if (argsProvided > 0 && argsNeeded == 0)
+ {
+ return MarkAsNotRunnable(testMethod, "Arguments provided for method not taking any");
+ }
+
+ if (argsProvided == 0 && argsNeeded > 0)
+ {
+ return MarkAsNotRunnable(testMethod, "No arguments were provided");
+ }
+
+ if (argsProvided != argsNeeded)
+ {
+ return MarkAsNotRunnable(testMethod, "Wrong number of arguments provided");
+ }
+
+#if CLR_2_0 || CLR_4_0
+#if !NETCF
+ if (testMethod.Method.IsGenericMethodDefinition)
+ {
+ Type[] typeArguments = GetTypeArgumentsForMethod(testMethod.Method, arglist);
+ foreach (object o in typeArguments)
+ if (o == null)
+ {
+ return MarkAsNotRunnable(testMethod, "Unable to determine type arguments for method");
+ }
+
+ testMethod.method = testMethod.Method.MakeGenericMethod(typeArguments);
+ parameters = testMethod.Method.GetParameters();
+ }
+#endif
+#endif
+
+ if (arglist != null && parameters != null)
+ TypeHelper.ConvertArgumentList(arglist, parameters);
+
+ return true;
+ }
+
+#if CLR_2_0 || CLR_4_0
+#if !NETCF
+ private static Type[] GetTypeArgumentsForMethod(MethodInfo method, object[] arglist)
+ {
+ Type[] typeParameters = method.GetGenericArguments();
+ Type[] typeArguments = new Type[typeParameters.Length];
+ ParameterInfo[] parameters = method.GetParameters();
+
+ for (int typeIndex = 0; typeIndex < typeArguments.Length; typeIndex++)
+ {
+ Type typeParameter = typeParameters[typeIndex];
+
+ for (int argIndex = 0; argIndex < parameters.Length; argIndex++)
+ {
+ if (parameters[argIndex].ParameterType.Equals(typeParameter))
+ typeArguments[typeIndex] = TypeHelper.BestCommonType(
+ typeArguments[typeIndex],
+ arglist[argIndex].GetType());
+ }
+ }
+
+ return typeArguments;
+ }
+#endif
+#endif
+
+ private static MethodInfo GetExceptionHandler(Type fixtureType, string name)
+ {
+ return fixtureType.GetMethod(
+ name,
+ BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
+ null,
+ new Type[] { typeof(System.Exception) },
+ null);
+ }
+
+ private static bool MarkAsNotRunnable(TestMethod testMethod, string reason)
+ {
+ testMethod.RunState = RunState.NotRunnable;
+ testMethod.Properties.Set(PropertyNames.SkipReason, reason);
+ return false;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestFixtureBuilder.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestFixtureBuilder.cs
new file mode 100755
index 0000000..eb580a3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/NUnitTestFixtureBuilder.cs
@@ -0,0 +1,354 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using System.Text;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Extensibility;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// Built-in SuiteBuilder for NUnit TestFixture
+ /// </summary>
+ public class NUnitTestFixtureBuilder : ISuiteBuilder
+ {
+ #region Static Fields
+
+ static readonly string NO_TYPE_ARGS_MSG =
+ "Fixture type contains generic parameters. You must either provide " +
+ "Type arguments or specify constructor arguments that allow NUnit " +
+ "to deduce the Type arguments.";
+
+ #endregion
+
+ #region Instance Fields
+ /// <summary>
+ /// The NUnitTestFixture being constructed;
+ /// </summary>
+ private TestFixture fixture;
+
+#if NUNITLITE
+ private Extensibility.ITestCaseBuilder2 testBuilder = new NUnitTestCaseBuilder();
+#else
+ private Extensibility.ITestCaseBuilder2 testBuilder = CoreExtensions.Host.TestBuilders;
+ private Extensibility.ITestDecorator testDecorators = CoreExtensions.Host.TestDecorators;
+#endif
+
+ #endregion
+
+ #region ISuiteBuilder Methods
+ /// <summary>
+ /// Checks to see if the fixture type has the TestFixtureAttribute
+ /// </summary>
+ /// <param name="type">The fixture type to check</param>
+ /// <returns>True if the fixture can be built, false if not</returns>
+ public bool CanBuildFrom(Type type)
+ {
+ if ( type.IsAbstract && !type.IsSealed )
+ return false;
+
+ if (type.IsDefined(typeof(TestFixtureAttribute), true))
+ return true;
+
+#if CLR_2_0 || CLR_4_0
+ // Generics must have a TestFixtureAttribute
+ if (type.IsGenericTypeDefinition)
+ return false;
+#endif
+
+ return Reflect.HasMethodWithAttribute(type, typeof(NUnit.Framework.TestAttribute), true) ||
+ Reflect.HasMethodWithAttribute(type, typeof(NUnit.Framework.TestCaseAttribute), true) ||
+ Reflect.HasMethodWithAttribute(type, typeof(NUnit.Framework.TestCaseSourceAttribute), true) ||
+ Reflect.HasMethodWithAttribute(type, typeof(NUnit.Framework.TheoryAttribute), true);
+ }
+
+ /// <summary>
+ /// Build a TestSuite from type provided.
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public Test BuildFrom(Type type)
+ {
+ TestFixtureAttribute[] attrs = GetTestFixtureAttributes(type);
+
+#if CLR_2_0 || CLR_4_0
+ if (type.IsGenericType)
+ return BuildMultipleFixtures(type, attrs);
+#endif
+
+ switch (attrs.Length)
+ {
+ case 0:
+ return BuildSingleFixture(type, null);
+ case 1:
+ object[] args = (object[])attrs[0].Arguments;
+ return args == null || args.Length == 0
+ ? BuildSingleFixture(type, attrs[0])
+ : BuildMultipleFixtures(type, attrs);
+ default:
+ return BuildMultipleFixtures(type, attrs);
+ }
+ }
+ #endregion
+
+ #region Helper Methods
+
+ private Test BuildMultipleFixtures(Type type, TestFixtureAttribute[] attrs)
+ {
+ TestSuite suite = new ParameterizedFixtureSuite(type);
+
+ if (attrs.Length > 0)
+ {
+ foreach (TestFixtureAttribute attr in attrs)
+ suite.Add(BuildSingleFixture(type, attr));
+ }
+ else
+ {
+ suite.RunState = RunState.NotRunnable;
+ suite.Properties.Set(PropertyNames.SkipReason, NO_TYPE_ARGS_MSG);
+ }
+
+ return suite;
+ }
+
+ private Test BuildSingleFixture(Type type, TestFixtureAttribute attr)
+ {
+ object[] arguments = null;
+
+ if (attr != null)
+ {
+ arguments = (object[])attr.Arguments;
+
+#if CLR_2_0 || CLR_4_0
+ if (type.ContainsGenericParameters)
+ {
+ Type[] typeArgs = (Type[])attr.TypeArgs;
+ if( typeArgs.Length > 0 ||
+ TypeHelper.CanDeduceTypeArgsFromArgs(type, arguments, ref typeArgs))
+ {
+ type = TypeHelper.MakeGenericType(type, typeArgs);
+ }
+ }
+#endif
+ }
+
+ this.fixture = new TestFixture(type, arguments);
+ CheckTestFixtureIsValid(fixture);
+
+ fixture.ApplyAttributesToTest(type);
+
+ if (fixture.RunState == RunState.Runnable && attr != null)
+ {
+ if (attr.Ignore)
+ {
+ fixture.RunState = RunState.Ignored;
+ fixture.Properties.Set(PropertyNames.SkipReason, attr.IgnoreReason);
+ }
+ }
+
+ AddTestCases(type);
+
+ return this.fixture;
+ }
+
+ /// <summary>
+ /// Method to add test cases to the newly constructed fixture.
+ /// </summary>
+ /// <param name="fixtureType"></param>
+ private void AddTestCases( Type fixtureType )
+ {
+ IList methods = fixtureType.GetMethods(
+ BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static );
+
+ foreach(MethodInfo method in methods)
+ {
+ Test test = BuildTestCase(method, this.fixture);
+
+ if(test != null)
+ {
+ this.fixture.Add( test );
+ }
+ }
+ }
+
+ /// <summary>
+ /// Method to create a test case from a MethodInfo and add
+ /// it to the fixture being built. It first checks to see if
+ /// any global TestCaseBuilder addin wants to build the
+ /// test case. If not, it uses the internal builder
+ /// collection maintained by this fixture builder. After
+ /// building the test case, it applies any decorators
+ /// that have been installed.
+ ///
+ /// The default implementation has no test case builders.
+ /// Derived classes should add builders to the collection
+ /// in their constructor.
+ /// </summary>
+ /// <param name="method">The MethodInfo for which a test is to be created</param>
+ /// <param name="suite">The test suite being built.</param>
+ /// <returns>A newly constructed Test</returns>
+ private Test BuildTestCase( MethodInfo method, TestSuite suite )
+ {
+#if NUNITLITE
+ return testBuilder.CanBuildFrom(method, suite)
+ ? testBuilder.BuildFrom(method, suite)
+ : null;
+#else
+ Test test = testBuilder.BuildFrom( method, suite );
+
+ if ( test != null )
+ test = testDecorators.Decorate( test, method );
+
+ return test;
+#endif
+ }
+
+ private void CheckTestFixtureIsValid(TestFixture fixture)
+ {
+ Type fixtureType = fixture.FixtureType;
+
+#if CLR_2_0 || CLR_4_0
+ if (fixtureType.ContainsGenericParameters)
+ {
+ SetNotRunnable(fixture, NO_TYPE_ARGS_MSG);
+ return;
+ }
+#endif
+ if( !IsStaticClass(fixtureType) && !HasValidConstructor(fixtureType, fixture.arguments) )
+ {
+ SetNotRunnable(fixture, "No suitable constructor was found");
+ return;
+ }
+
+ if (!CheckSetUpTearDownMethods(fixture, fixture.SetUpMethods))
+ return;
+ if (!CheckSetUpTearDownMethods(fixture, fixture.TearDownMethods))
+ return;
+ if (!CheckSetUpTearDownMethods(fixture, Reflect.GetMethodsWithAttribute(fixture.FixtureType, typeof(TestFixtureSetUpAttribute), true)))
+ return;
+ CheckSetUpTearDownMethods(fixture, Reflect.GetMethodsWithAttribute(fixture.FixtureType, typeof(TestFixtureTearDownAttribute), true));
+ }
+
+ private static bool HasValidConstructor(Type fixtureType, object[] args)
+ {
+ Type[] argTypes;
+
+ // Note: This could be done more simply using
+ // Type.EmptyTypes and Type.GetTypeArray() but
+ // they don't exist in all runtimes we support.
+ if (args == null)
+ argTypes = new Type[0];
+ else
+ {
+ argTypes = new Type[args.Length];
+
+ int index = 0;
+ foreach (object arg in args)
+ argTypes[index++] = arg.GetType();
+ }
+
+ return fixtureType.GetConstructor(argTypes) != null;
+ }
+
+ private void SetNotRunnable(TestFixture fixture, string reason)
+ {
+ fixture.RunState = RunState.NotRunnable;
+ fixture.Properties.Set(PropertyNames.SkipReason, reason);
+ }
+
+ private static bool IsStaticClass(Type type)
+ {
+ return type.IsAbstract && type.IsSealed;
+ }
+
+ private bool CheckSetUpTearDownMethods(TestFixture fixture, MethodInfo[] methods)
+ {
+ foreach (MethodInfo method in methods)
+ if (method.IsAbstract ||
+ !method.IsPublic && !method.IsFamily ||
+ method.GetParameters().Length > 0 ||
+ !method.ReturnType.Equals(typeof(void)))
+ {
+ SetNotRunnable(fixture, string.Format("Invalid signature for Setup or TearDown method: {0}", method.Name));
+ return false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// Get TestFixtureAttributes following a somewhat obscure
+ /// set of rules to eliminate spurious duplication of fixtures.
+ /// 1. If there are any attributes with args, they are the only
+ /// ones returned and those without args are ignored.
+ /// 2. No more than one attribute without args is ever returned.
+ /// </summary>
+ private TestFixtureAttribute[] GetTestFixtureAttributes(Type type)
+ {
+ TestFixtureAttribute[] attrs =
+ (TestFixtureAttribute[])type.GetCustomAttributes(typeof(TestFixtureAttribute), true);
+
+ // Just return - no possibility of duplication
+ if (attrs.Length <= 1)
+ return attrs;
+
+ int withArgs = 0;
+ bool[] hasArgs = new bool[attrs.Length];
+
+ // Count and record those attrs with arguments
+ for (int i = 0; i < attrs.Length; i++)
+ {
+ TestFixtureAttribute attr = attrs[i];
+
+ if (attr.Arguments.Length > 0 || attr.TypeArgs.Length > 0)
+ {
+ withArgs++;
+ hasArgs[i] = true;
+ }
+ }
+
+ // If all attributes have args, just return them
+ if (withArgs == attrs.Length)
+ return attrs;
+
+ // If all attributes are without args, just return the first found
+ if (withArgs == 0)
+ return new TestFixtureAttribute[] { attrs[0] };
+
+ // Some of each type, so extract those with args
+ int count = 0;
+ TestFixtureAttribute[] result = new TestFixtureAttribute[withArgs];
+ for (int i = 0; i < attrs.Length; i++)
+ if (hasArgs[i])
+ result[count++] = attrs[i];
+
+ return result;
+ }
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/PairwiseStrategy.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/PairwiseStrategy.cs
new file mode 100755
index 0000000..19f79a7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/PairwiseStrategy.cs
@@ -0,0 +1,754 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using System.Text;
+using NUnit.Framework.Api;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// PairwiseStrategy creates test cases by combining the parameter
+ /// data so that all possible pairs of data items are used.
+ /// </summary>
+ public class PairwiseStrategy : CombiningStrategy
+ {
+ internal class FleaRand
+ {
+ private const int FleaRandSize = 256;
+
+ private uint b;
+ private uint c;
+ private uint d;
+ private uint z;
+
+ private uint[] m = new uint[FleaRandSize];
+ private uint[] r = new uint[FleaRandSize];
+
+ private uint q;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="FleaRand"/> class.
+ /// </summary>
+ /// <param name="seed">The seed.</param>
+ public FleaRand(uint seed)
+ {
+ this.b = seed;
+ this.c = seed;
+ this.d = seed;
+ this.z = seed;
+
+ for (int i = 0; i < this.m.Length; i++)
+ {
+ this.m[i] = seed;
+ }
+
+ for (int i = 0; i < 10; i++)
+ {
+ this.Batch();
+ }
+
+ this.q = 0;
+ }
+
+ public uint Next()
+ {
+ if (this.q == 0)
+ {
+ this.Batch();
+ this.q = (uint)this.r.Length - 1;
+ }
+ else
+ {
+ this.q--;
+ }
+
+ return this.r[this.q];
+ }
+
+ private void Batch()
+ {
+ uint a;
+ uint b = this.b;
+ uint c = this.c + (++this.z);
+ uint d = this.d;
+
+ for (int i = 0; i < this.r.Length; i++)
+ {
+ a = this.m[b % this.m.Length];
+ this.m[b % this.m.Length] = d;
+ d = (c << 19) + (c >> 13) + b;
+ c = b ^ this.m[i];
+ b = a + d;
+ this.r[i] = c;
+ }
+
+ this.b = b;
+ this.c = c;
+ this.d = d;
+ }
+ }
+
+ internal class FeatureInfo
+ {
+ public const string Names = "abcdefghijklmnopqrstuvwxyz";
+
+ public readonly int Dimension;
+ public readonly int Feature;
+
+ public FeatureInfo(int dimension, int feature)
+ {
+ this.Dimension = dimension;
+ this.Feature = feature;
+ }
+
+#if DEBUG
+ public override string ToString()
+ {
+ return (this.Dimension + 1).ToString() + FeatureInfo.Names[this.Feature];
+ }
+#endif
+ }
+
+ internal class Tuple
+ {
+#if CLR_2_0 || CLR_4_0
+ private readonly List<FeatureInfo> features = new List<FeatureInfo>();
+#else
+ private readonly ArrayList features = new ArrayList();
+#endif
+
+ public int Count
+ {
+ get
+ {
+ return this.features.Count;
+ }
+ }
+
+ public FeatureInfo this[int index]
+ {
+ get
+ {
+ return (FeatureInfo)this.features[index];
+ }
+ }
+
+ public void Add(FeatureInfo feature)
+ {
+ this.features.Add(feature);
+ }
+
+#if DEBUG
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.Append('(');
+
+ for (int i = 0; i < this.features.Count; i++)
+ {
+ if (i > 0)
+ {
+ sb.Append(' ');
+ }
+
+ sb.Append(this.features[i].ToString());
+ }
+
+ sb.Append(')');
+
+ return sb.ToString();
+ }
+#endif
+ }
+
+ internal class TupleCollection
+ {
+#if CLR_2_0 || CLR_4_0
+ private readonly List<Tuple> tuples = new List<Tuple>();
+#else
+ private readonly ArrayList tuples = new ArrayList();
+#endif
+
+ public int Count
+ {
+ get
+ {
+ return this.tuples.Count;
+ }
+ }
+
+ public Tuple this[int index]
+ {
+ get
+ {
+ return (Tuple)this.tuples[index];
+ }
+ }
+
+ public void Add(Tuple tuple)
+ {
+ this.tuples.Add(tuple);
+ }
+
+ public void RemoveAt(int index)
+ {
+ this.tuples.RemoveAt(index);
+ }
+ }
+
+ internal class TestCase
+ {
+ public readonly int[] Features;
+
+ public TestCase(int numberOfDimensions)
+ {
+ this.Features = new int[numberOfDimensions];
+ }
+
+ public bool IsTupleCovered(Tuple tuple)
+ {
+ for (int i = 0; i < tuple.Count; i++)
+ {
+ if (this.Features[tuple[i].Dimension] != tuple[i].Feature)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+#if DEBUG
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ for (int i = 0; i < this.Features.Length; i++)
+ {
+ if (i > 0)
+ {
+ sb.Append(' ');
+ }
+
+ sb.Append(i + 1);
+ sb.Append(FeatureInfo.Names[this.Features[i]]);
+ }
+
+ return sb.ToString();
+ }
+#endif
+ }
+
+ internal class TestCaseCollection : IEnumerable
+ {
+#if CLR_2_0 || CLR_4_0
+ private readonly List<TestCase> testCases = new List<TestCase>();
+#else
+ private readonly ArrayList testCases = new ArrayList();
+#endif
+
+ public void Add(TestCase testCase)
+ {
+ this.testCases.Add(testCase);
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ return this.testCases.GetEnumerator();
+ }
+
+ public bool IsTupleCovered(Tuple tuple)
+ {
+ foreach (TestCase testCase in this.testCases)
+ {
+ if (testCase.IsTupleCovered(tuple))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+
+ internal class PairwiseTestCaseGenerator
+ {
+ private const int MaxTupleLength = 2;
+
+ private readonly FleaRand random = new FleaRand(0);
+
+ private readonly int[] dimensions;
+
+ private readonly TupleCollection[][] uncoveredTuples;
+
+ private readonly int[][] currentTupleLength;
+
+ private readonly TestCaseCollection testCases = new TestCaseCollection();
+
+ public PairwiseTestCaseGenerator(int[] dimensions)
+ {
+ this.dimensions = dimensions;
+
+ this.uncoveredTuples = new TupleCollection[this.dimensions.Length][];
+
+ for (int d = 0; d < this.uncoveredTuples.Length; d++)
+ {
+ this.uncoveredTuples[d] = new TupleCollection[this.dimensions[d]];
+
+ for (int f = 0; f < this.dimensions[d]; f++)
+ {
+ this.uncoveredTuples[d][f] = new TupleCollection();
+ }
+ }
+
+ this.currentTupleLength = new int[this.dimensions.Length][];
+
+ for (int d = 0; d < this.dimensions.Length; d++)
+ {
+ this.currentTupleLength[d] = new int[this.dimensions[d]];
+ }
+ }
+
+ public IEnumerable GetTestCases()
+ {
+ this.CreateTestCases();
+
+ this.SelfTest();
+
+ return this.testCases;
+ }
+
+ private void CreateTestCases()
+ {
+ while (true)
+ {
+ this.ExtendTupleSet();
+
+ Tuple tuple = this.FindTupleToCover();
+
+ if (tuple == null)
+ {
+ return;
+ }
+
+ TestCase testCase = this.FindGoodTestCase(tuple);
+
+ this.RemoveTuplesCoveredBy(testCase);
+
+ this.testCases.Add(testCase);
+ }
+ }
+
+ private void ExtendTupleSet()
+ {
+ for (int d = 0; d < this.dimensions.Length; d++)
+ {
+ for (int f = 0; f < this.dimensions[d]; f++)
+ {
+ this.ExtendTupleSet(d, f);
+ }
+ }
+ }
+
+ private void ExtendTupleSet(int dimension, int feature)
+ {
+ // If tuples for [dimension][feature] already exists, it's no needs to add more tuples.
+ if (this.uncoveredTuples[dimension][feature].Count > 0)
+ {
+ return;
+ }
+
+ // If maximum tuple length for [dimension][feature] is reached, it's no needs to add more tuples.
+ if (this.currentTupleLength[dimension][feature] == MaxTupleLength)
+ {
+ return;
+ }
+
+ this.currentTupleLength[dimension][feature]++;
+
+ int tupleLength = this.currentTupleLength[dimension][feature];
+
+ if (tupleLength == 1)
+ {
+ Tuple tuple = new Tuple();
+
+ tuple.Add(new FeatureInfo(dimension, feature));
+
+ if (this.testCases.IsTupleCovered(tuple))
+ {
+ return;
+ }
+
+ this.uncoveredTuples[dimension][feature].Add(tuple);
+ }
+ else
+ {
+ for (int d = 0; d < this.dimensions.Length; d++)
+ {
+ for (int f = 0; f < this.dimensions[d]; f++)
+ {
+ Tuple tuple = new Tuple();
+ tuple.Add(new FeatureInfo(d, f));
+
+ if (tuple[0].Dimension == dimension)
+ {
+ continue;
+ }
+
+ tuple.Add(new FeatureInfo(dimension, feature));
+
+ if (this.testCases.IsTupleCovered(tuple))
+ {
+ continue;
+ }
+
+ this.uncoveredTuples[dimension][feature].Add(tuple);
+ }
+ }
+ }
+ }
+
+ private Tuple FindTupleToCover()
+ {
+ int tupleLength = MaxTupleLength;
+ int tupleCount = 0;
+ Tuple tuple = null;
+
+ for (int d = 0; d < this.dimensions.Length; d++)
+ {
+ for (int f = 0; f < this.dimensions[d]; f++)
+ {
+ if (this.currentTupleLength[d][f] < tupleLength)
+ {
+ tupleLength = this.currentTupleLength[d][f];
+ tupleCount = this.uncoveredTuples[d][f].Count;
+ tuple = this.uncoveredTuples[d][f][0];
+ }
+ else
+ {
+ if (this.currentTupleLength[d][f] == tupleLength && this.uncoveredTuples[d][f].Count > tupleCount)
+ {
+ tupleCount = this.uncoveredTuples[d][f].Count;
+ tuple = this.uncoveredTuples[d][f][0];
+ }
+ }
+ }
+ }
+
+ return tuple;
+ }
+
+ private TestCase FindGoodTestCase(Tuple tuple)
+ {
+ TestCase bestTest = null;
+ int bestCoverage = -1;
+
+ for (int i = 0; i < 5; i++)
+ {
+ TestCase test = new TestCase(this.dimensions.Length);
+
+ int coverage = this.CreateTestCase(tuple, test);
+
+ if (coverage > bestCoverage)
+ {
+ bestTest = test;
+ bestCoverage = coverage;
+ }
+ }
+
+ return bestTest;
+ }
+
+ private int CreateTestCase(Tuple tuple, TestCase test)
+ {
+ // Create a random test case...
+ for (int i = 0; i < test.Features.Length; i++)
+ {
+ test.Features[i] = (int)(this.random.Next() % this.dimensions[i]);
+ }
+
+ // ...and inject the tuple into it!
+ for (int i = 0; i < tuple.Count; i++)
+ {
+ test.Features[tuple[i].Dimension] = tuple[i].Feature;
+ }
+
+ return this.MaximizeCoverage(test, tuple);
+ }
+
+ private int MaximizeCoverage(TestCase test, Tuple tuple)
+ {
+ int[] dimensionOrder = this.GetMutableDimensions(tuple);
+
+ while (true)
+ {
+ bool progress = false;
+ int totalCoverage = 1;
+
+ // Scramble dimensions.
+ for (int i = dimensionOrder.Length; i > 1; i--)
+ {
+ int j = (int)(this.random.Next() % i);
+ int t = dimensionOrder[i - 1];
+ dimensionOrder[i - 1] = dimensionOrder[j];
+ dimensionOrder[j] = t;
+ }
+
+ // For each dimension that can be modified...
+ for (int i = 0; i < dimensionOrder.Length; i++)
+ {
+ int d = dimensionOrder[i];
+
+#if CLR_2_0 || CLR_4_0
+ List<int> bestFeatures = new List<int>();
+#else
+ ArrayList bestFeatures = new ArrayList();
+#endif
+
+ int bestCoverage = this.CountTuplesCovered(test, d, test.Features[d]);
+
+ int bestTupleLength = this.currentTupleLength[d][test.Features[d]];
+
+ // For each feature that can be modified, check if it can extend coverage.
+ for (int f = 0; f < this.dimensions[d]; f++)
+ {
+ test.Features[d] = f;
+
+ int coverage = this.CountTuplesCovered(test, d, f);
+
+ if (this.currentTupleLength[d][f] < bestTupleLength)
+ {
+ progress = true;
+ bestTupleLength = this.currentTupleLength[d][f];
+ bestCoverage = coverage;
+ bestFeatures.Clear();
+ bestFeatures.Add(f);
+ }
+ else
+ {
+ if (this.currentTupleLength[d][f] == bestTupleLength && coverage >= bestCoverage)
+ {
+ if (coverage > bestCoverage)
+ {
+ progress = true;
+ bestCoverage = coverage;
+ bestFeatures.Clear();
+ }
+
+ bestFeatures.Add(f);
+ }
+ }
+ }
+
+ if (bestFeatures.Count == 1)
+ {
+ test.Features[d] = (int)bestFeatures[0];
+ }
+ else
+ {
+ test.Features[d] = (int)bestFeatures[(int)(this.random.Next() % bestFeatures.Count)];
+ }
+
+ totalCoverage += bestCoverage;
+ }
+
+ if (!progress)
+ {
+ return totalCoverage;
+ }
+ }
+ }
+
+ private int[] GetMutableDimensions(Tuple tuple)
+ {
+ bool[] immutableDimensions = new bool[this.dimensions.Length];
+
+ for (int i = 0; i < tuple.Count; i++)
+ {
+ immutableDimensions[tuple[i].Dimension] = true;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ List<int> mutableDimensions = new List<int>();
+#else
+ ArrayList mutableDimensions = new ArrayList();
+#endif
+
+ for (int i = 0; i < this.dimensions.Length; i++)
+ {
+ if (!immutableDimensions[i])
+ {
+ mutableDimensions.Add(i);
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ return mutableDimensions.ToArray();
+#else
+ return (int[])mutableDimensions.ToArray(typeof(int));
+#endif
+ }
+
+ private int CountTuplesCovered(TestCase test, int dimension, int feature)
+ {
+ int tuplesCovered = 0;
+
+ TupleCollection tuples = this.uncoveredTuples[dimension][feature];
+
+ for (int i = 0; i < tuples.Count; i++)
+ {
+ if (test.IsTupleCovered(tuples[i]))
+ {
+ tuplesCovered++;
+ }
+ }
+
+ return tuplesCovered;
+ }
+
+ private void RemoveTuplesCoveredBy(TestCase testCase)
+ {
+ for (int d = 0; d < this.uncoveredTuples.Length; d++)
+ {
+ for (int f = 0; f < this.uncoveredTuples[d].Length; f++)
+ {
+ TupleCollection tuples = this.uncoveredTuples[d][f];
+
+ for (int i = tuples.Count - 1; i >= 0; i--)
+ {
+ if (testCase.IsTupleCovered(tuples[i]))
+ {
+ tuples.RemoveAt(i);
+ }
+ }
+ }
+ }
+ }
+
+ private void SelfTest()
+ {
+ for (int d1 = 0; d1 < this.dimensions.Length - 1; d1++)
+ {
+ for (int d2 = d1 + 1; d2 < this.dimensions.Length; d2++)
+ {
+ for (int f1 = 0; f1 < this.dimensions[d1]; f1++)
+ {
+ for (int f2 = 0; f2 < this.dimensions[d2]; f2++)
+ {
+ Tuple tuple = new Tuple();
+ tuple.Add(new FeatureInfo(d1, f1));
+ tuple.Add(new FeatureInfo(d2, f2));
+
+ if (!this.testCases.IsTupleCovered(tuple))
+ {
+ throw new Exception("PairwiseStrategy self-test failed : Not all pairs are covered!");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="PairwiseStrategy"/> class.
+ /// </summary>
+ /// <param name="sources">The sources.</param>
+ public PairwiseStrategy(IEnumerable[] sources) : base(sources) { }
+
+ /// <summary>
+ /// Gets the test cases generated by this strategy instance.
+ /// </summary>
+ /// <returns>The test cases.</returns>
+#if CLR_2_0 || CLR_4_0
+ public override IEnumerable<ITestCaseData> GetTestCases()
+ {
+ List<ITestCaseData> testCases = new List<ITestCaseData>();
+#else
+ public override IEnumerable GetTestCases()
+ {
+ ArrayList testCases = new ArrayList();
+#endif
+ ObjectList[] valueSet = CreateValueSet();
+ int[] dimensions = CreateDimensions(valueSet);
+
+ IEnumerable pairwiseTestCases = new PairwiseTestCaseGenerator(dimensions).GetTestCases();
+
+ foreach (TestCase pairwiseTestCase in pairwiseTestCases)
+ {
+ object[] testData = new object[pairwiseTestCase.Features.Length];
+
+ for (int i = 0; i < pairwiseTestCase.Features.Length; i++)
+ {
+ testData[i] = valueSet[i][pairwiseTestCase.Features[i]];
+ }
+
+ ParameterSet parms = new ParameterSet();
+ parms.Arguments = testData;
+ testCases.Add(parms);
+ }
+
+ return testCases;
+ }
+
+ private ObjectList[] CreateValueSet()
+ {
+ ObjectList[] valueSet = new ObjectList[Sources.Length];
+
+ for (int i = 0; i < valueSet.Length; i++)
+ {
+ ObjectList values = new ObjectList();
+
+ foreach (object value in Sources[i])
+ {
+ values.Add(value);
+ }
+
+ valueSet[i] = values;
+ }
+
+ return valueSet;
+ }
+
+ private int[] CreateDimensions(ObjectList[] valueSet)
+ {
+ int[] dimensions = new int[valueSet.Length];
+
+ for (int i = 0; i < valueSet.Length; i++)
+ {
+ dimensions[i] = valueSet[i].Count;
+ }
+
+ return dimensions;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/ParameterDataProvider.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/ParameterDataProvider.cs
new file mode 100755
index 0000000..54d02f4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/ParameterDataProvider.cs
@@ -0,0 +1,79 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Collections;
+using NUnit.Framework.Api;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// ParameterDataProvider supplies individual argument values for
+ /// single parameters using attributes derived from DataAttribute.
+ /// </summary>
+ public class ParameterDataProvider : IParameterDataProvider
+ {
+ #region IDataPointProvider Members
+
+ /// <summary>
+ /// Determine whether any data is available for a parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>
+ /// True if any data is available, otherwise false.
+ /// </returns>
+ public bool HasDataFor(ParameterInfo parameter)
+ {
+ return parameter.IsDefined(typeof(DataAttribute), false);
+ }
+
+ /// <summary>
+ /// Return an IEnumerable providing data for use with the
+ /// supplied parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>
+ /// An IEnumerable providing the required data
+ /// </returns>
+ public IEnumerable GetDataFor(ParameterInfo parameter)
+ {
+ ObjectList data = new ObjectList();
+
+ foreach (Attribute attr in parameter.GetCustomAttributes(typeof(DataAttribute), false))
+ {
+ IParameterDataSource source = attr as IParameterDataSource;
+ if (source != null)
+ foreach (object item in source.GetData(parameter))
+ data.Add(item);
+ }
+
+ return data;
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/ProviderCache.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/ProviderCache.cs
new file mode 100755
index 0000000..316bb86
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/ProviderCache.cs
@@ -0,0 +1,102 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Text;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ class ProviderCache
+ {
+#if CLR_2_0 || CLR_4_0
+ private static Dictionary<CacheEntry, object> instances = new Dictionary<CacheEntry, object>();
+#else
+ private static IDictionary instances = new Hashtable();
+#endif
+
+ public static object GetInstanceOf(Type providerType)
+ {
+ return GetInstanceOf(providerType, null);
+ }
+
+ public static object GetInstanceOf(Type providerType, object[] providerArgs)
+ {
+ CacheEntry entry = new CacheEntry(providerType, providerArgs);
+
+#if CLR_2_0 || CLR_4_0
+ object instance = instances.ContainsKey(entry)
+#else
+ object instance = instances.Contains(entry)
+#endif
+ ?instances[entry]
+ : null;
+
+ if (instance == null)
+ instances[entry] = instance = Reflect.Construct(providerType, providerArgs);
+
+ return instance;
+ }
+
+ public static void Clear()
+ {
+ foreach (CacheEntry key in instances.Keys)
+ {
+ IDisposable provider = instances[key] as IDisposable;
+ if (provider != null)
+ provider.Dispose();
+ }
+
+ instances.Clear();
+ }
+
+ class CacheEntry
+ {
+ private Type providerType;
+ private object[] providerArgs;
+
+ public CacheEntry(Type providerType, object[] providerArgs)
+ {
+ this.providerType = providerType;
+ this.providerArgs = providerArgs;
+ }
+
+ public override bool Equals(object obj)
+ {
+ CacheEntry other = obj as CacheEntry;
+ if (other == null) return false;
+
+ return this.providerType == other.providerType;
+ }
+
+ public override int GetHashCode()
+ {
+ return providerType.GetHashCode();
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Builders/SequentialStrategy.cs b/NUnitLite-0.9.0/src/framework/Internal/Builders/SequentialStrategy.cs
new file mode 100755
index 0000000..10db34b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Builders/SequentialStrategy.cs
@@ -0,0 +1,88 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Builders
+{
+ /// <summary>
+ /// SequentialStrategy creates test cases by using all of the
+ /// parameter data sources in parallel, substituting <c>null</c>
+ /// when any of them run out of data.
+ /// </summary>
+ public class SequentialStrategy : CombiningStrategy
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SequentialStrategy"/> class.
+ /// </summary>
+ /// <param name="sources">The sources.</param>
+ public SequentialStrategy(IEnumerable[] sources) : base(sources) { }
+
+ /// <summary>
+ /// Gets the test cases generated by the CombiningStrategy.
+ /// </summary>
+ /// <returns>The test cases.</returns>
+#if CLR_2_0 || CLR_4_0
+ public override IEnumerable<ITestCaseData> GetTestCases()
+ {
+ List<ITestCaseData> testCases = new List<ITestCaseData>();
+#else
+ public override IEnumerable GetTestCases()
+ {
+ ArrayList testCases = new ArrayList();
+#endif
+
+ for (; ; )
+ {
+ bool gotData = false;
+ object[] testdata = new object[Sources.Length];
+
+ for (int i = 0; i < Sources.Length; i++)
+ if (Enumerators[i].MoveNext())
+ {
+ testdata[i] = Enumerators[i].Current;
+ gotData = true;
+ }
+ else
+ testdata[i] = null;
+
+ if (!gotData)
+ break;
+
+ ParameterSet parms = new ParameterSet();
+ parms.Arguments = testdata;
+ testCases.Add(parms);
+ }
+
+ return testCases;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/ApplyChangesToContextCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/ApplyChangesToContextCommand.cs
new file mode 100755
index 0000000..14c09cc
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/ApplyChangesToContextCommand.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// ContextSettingsCommand applies specified changes to the
+ /// TestExecutionContext prior to running a test. No special
+ /// action is needed after the test runs, since the prior
+ /// context will be restored automatically.
+ /// </summary>
+ class ApplyChangesToContextCommand : DelegatingTestCommand
+ {
+ private IApplyToContext[] _changes;
+
+ public ApplyChangesToContextCommand(TestCommand innerCommand, IApplyToContext[] changes)
+ : base(innerCommand)
+ {
+ _changes = changes;
+ }
+
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ try
+ {
+ foreach (IApplyToContext change in _changes)
+ change.ApplyToContext(context);
+
+ context.CurrentResult = innerCommand.Execute(context);
+ }
+ catch (Exception ex)
+ {
+#if !NETCF && !SILVERLIGHT
+ if (ex is ThreadAbortException)
+ Thread.ResetAbort();
+#endif
+ context.CurrentResult.RecordException(ex);
+ }
+
+ return context.CurrentResult;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/CommandDecoratorList.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/CommandDecoratorList.cs
new file mode 100755
index 0000000..5b77b85
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/CommandDecoratorList.cs
@@ -0,0 +1,48 @@
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// CommandDecoratorList maintains a list of ICommandDecorators
+ /// and is able to sort them by level so that they are applied
+ /// in the proper order.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public class CommandDecoratorList : System.Collections.Generic.List<ICommandDecorator>
+#else
+ public class CommandDecoratorList : System.Collections.ArrayList
+#endif
+ {
+ /// <summary>
+ /// Order command decorators by the stage at which they apply.
+ /// </summary>
+ public void OrderByStage()
+ {
+ Sort(CommandDecoratorComparison);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ private int CommandDecoratorComparison(ICommandDecorator x, ICommandDecorator y)
+ {
+ return x.Stage.CompareTo(y.Stage);
+ }
+#else
+ private CommandDecoratorComparer CommandDecoratorComparison = new CommandDecoratorComparer();
+
+ private class CommandDecoratorComparer : System.Collections.IComparer
+ {
+ public int Compare(object x, object y)
+ {
+ ICommandDecorator xDecorator = x as ICommandDecorator;
+ ICommandDecorator yDecorator = y as ICommandDecorator;
+
+ if (xDecorator == null || yDecorator == null)
+ return 0;
+
+ return xDecorator.Stage.CompareTo(yDecorator.Stage);
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/CommandStage.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/CommandStage.cs
new file mode 100755
index 0000000..d61f163
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/CommandStage.cs
@@ -0,0 +1,92 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// The CommandStage enumeration represents the defined stages
+ /// of execution for a series of TestCommands. The int values
+ /// of the enum are used to apply decorators in the proper
+ /// order. Lower values are applied first and are therefore
+ /// "closer" to the actual test execution.
+ /// </summary>
+ /// <remarks>
+ /// No CommandStage is defined for actual invocation of the test or
+ /// for creation of the context. Execution may be imagined as
+ /// proceeding from the bottom of the list upwards, with cleanup
+ /// after the test running in the opposite order.
+ /// </remarks>
+ public enum CommandStage
+ {
+ /// <summary>
+ /// Use an application-defined default value.
+ /// </summary>
+ Default,
+
+ // NOTE: The test is actually invoked here.
+
+ /// <summary>
+ /// Make adjustments needed before and after running
+ /// the raw test - that is, after any SetUp has run
+ /// and before TearDown.
+ /// </summary>
+ BelowSetUpTearDown,
+
+ /// <summary>
+ /// Run SetUp and TearDown for the test. This stage is used
+ /// internally by NUnit and should not normally appear
+ /// in user-defined decorators.
+ /// </summary>
+ SetUpTearDown,
+
+ /// <summary>
+ /// Make adjustments needed before and after running
+ /// the entire test - including SetUp and TearDown.
+ /// </summary>
+ AboveSetUpTearDown
+
+ ///// <summary>
+ ///// Create any thread needed for execution of the test
+ ///// and destroy it afterwards
+ ///// </summary>
+ //CreateThread,
+
+ ///// <summary>
+ ///// Run the test repeatedly, returning a single result
+ ///// </summary>
+ //Repeat,
+
+ // Note: The context is created here and destroyed
+ // after the test has run.
+
+ // Command Stages
+ // Create/Destroy Context
+ // Modify/Restore Context
+ // Create/Destroy fixture object
+ // Repeat test
+ // Create/Destroy thread
+ // Modify overall result
+ // SetUp/TearDown
+ // Modify raw result
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/DelegatingTestCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/DelegatingTestCommand.cs
new file mode 100755
index 0000000..76ac551
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/DelegatingTestCommand.cs
@@ -0,0 +1,46 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+ public abstract class DelegatingTestCommand : TestCommand
+ {
+ /// <summary>TODO: Documentation needed for field</summary>
+ protected TestCommand innerCommand;
+
+ /// <summary>
+ /// TODO: Documentation needed for constructor
+ /// </summary>
+ /// <param name="innerCommand"></param>
+ protected DelegatingTestCommand(TestCommand innerCommand)
+ : base(innerCommand.Test)
+ {
+ this.innerCommand = innerCommand;
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/ExpectedExceptionCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/ExpectedExceptionCommand.cs
new file mode 100755
index 0000000..496e229
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/ExpectedExceptionCommand.cs
@@ -0,0 +1,217 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using System.Threading;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+ public class ExpectedExceptionCommand : DelegatingTestCommand
+ {
+ private ExpectedExceptionData exceptionData;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ExpectedExceptionCommand"/> class.
+ /// </summary>
+ /// <param name="innerCommand">The inner command.</param>
+ /// <param name="exceptionData">The exception data.</param>
+ public ExpectedExceptionCommand(TestCommand innerCommand, ExpectedExceptionData exceptionData)
+ : base(innerCommand)
+ {
+ this.exceptionData = exceptionData;
+ }
+
+
+ /// <summary>
+ /// Runs the test, saving a TestResult in the supplied TestExecutionContext
+ /// </summary>
+ /// <param name="context">The context in which the test is to be run.</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ try
+ {
+ context.CurrentResult = innerCommand.Execute(context);
+
+ if (context.CurrentResult.ResultState == ResultState.Success)
+ ProcessNoException(context);
+ }
+ catch (Exception ex)
+ {
+#if !NETCF && !SILVERLIGHT
+ if (ex is ThreadAbortException)
+ Thread.ResetAbort();
+#endif
+ ProcessException(ex, context);
+ }
+
+ return context.CurrentResult;
+ }
+
+ /// <summary>
+ /// Handles processing when no exception was thrown.
+ /// </summary>
+ /// <param name="context">The execution context.</param>
+ public void ProcessNoException(TestExecutionContext context)
+ {
+ context.CurrentResult.SetResult(ResultState.Failure, NoExceptionMessage());
+ }
+
+ /// <summary>
+ /// Handles processing when an exception was thrown.
+ /// </summary>
+ /// <param name="exception">The exception.</param>
+ /// <param name="context">The execution context.</param>
+ public void ProcessException(Exception exception, TestExecutionContext context)
+ {
+ if (exception is NUnitException)
+ exception = exception.InnerException;
+
+ if (IsExpectedExceptionType(exception))
+ {
+ if (IsExpectedMessageMatch(exception))
+ {
+ MethodInfo exceptionMethod = exceptionData.GetExceptionHandler(context.TestObject.GetType());
+ if (exceptionMethod != null)
+ {
+ Reflect.InvokeMethod(exceptionMethod, context.TestObject, exception);
+ }
+ else
+ {
+ IExpectException handler = context.TestObject as IExpectException;
+ if (handler != null)
+ handler.HandleException(exception);
+ }
+
+ context.CurrentResult.SetResult(ResultState.Success);
+ }
+ else
+ {
+ context.CurrentResult.SetResult(ResultState.Failure, WrongTextMessage(exception), GetStackTrace(exception));
+ }
+ }
+ else
+ {
+ context.CurrentResult.RecordException(exception);
+
+ // If it shows as an error, change it to a failure due to the wrong type
+ if (context.CurrentResult.ResultState == ResultState.Error)
+ context.CurrentResult.SetResult(ResultState.Failure, WrongTypeMessage(exception), GetStackTrace(exception));
+ }
+ }
+
+ #region Helper Methods
+
+ private bool IsExpectedExceptionType(Exception exception)
+ {
+ return exceptionData.ExpectedExceptionName == null ||
+ exceptionData.ExpectedExceptionName.Equals(exception.GetType().FullName);
+ }
+
+ private bool IsExpectedMessageMatch(Exception exception)
+ {
+ if (exceptionData.ExpectedMessage == null)
+ return true;
+
+ switch (exceptionData.MatchType)
+ {
+ case MessageMatch.Exact:
+ default:
+ return exceptionData.ExpectedMessage.Equals(exception.Message);
+ case MessageMatch.Contains:
+ return exception.Message.IndexOf(exceptionData.ExpectedMessage) >= 0;
+ case MessageMatch.Regex:
+ return Regex.IsMatch(exception.Message, exceptionData.ExpectedMessage);
+ case MessageMatch.StartsWith:
+ return exception.Message.StartsWith(exceptionData.ExpectedMessage);
+ }
+ }
+
+ private string NoExceptionMessage()
+ {
+ string expectedType = exceptionData.ExpectedExceptionName == null ? "An Exception" : exceptionData.ExpectedExceptionName;
+ return CombineWithUserMessage(expectedType + " was expected");
+ }
+
+ private string WrongTypeMessage(Exception exception)
+ {
+ return CombineWithUserMessage(
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: " + exceptionData.ExpectedExceptionName + Env.NewLine +
+ " but was: " + exception.GetType().FullName + " : " + exception.Message);
+ }
+
+ private string WrongTextMessage(Exception exception)
+ {
+ string expectedText;
+ switch (exceptionData.MatchType)
+ {
+ default:
+ case MessageMatch.Exact:
+ expectedText = "Expected: ";
+ break;
+ case MessageMatch.Contains:
+ expectedText = "Expected message containing: ";
+ break;
+ case MessageMatch.Regex:
+ expectedText = "Expected message matching: ";
+ break;
+ case MessageMatch.StartsWith:
+ expectedText = "Expected message starting: ";
+ break;
+ }
+
+ return CombineWithUserMessage(
+ "The exception message text was incorrect" + Env.NewLine +
+ expectedText + exceptionData.ExpectedMessage + Env.NewLine +
+ " but was: " + exception.Message);
+ }
+
+ private string CombineWithUserMessage(string message)
+ {
+ if (exceptionData.UserMessage == null)
+ return message;
+ return exceptionData.UserMessage + Env.NewLine + message;
+ }
+
+ private string GetStackTrace(Exception exception)
+ {
+ try
+ {
+ return exception.StackTrace;
+ }
+ catch (Exception)
+ {
+ return "No stack trace available";
+ }
+ }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/ICommandDecorator.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/ICommandDecorator.cs
new file mode 100755
index 0000000..68f7690
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/ICommandDecorator.cs
@@ -0,0 +1,54 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// ICommandDecorator is implemented by attributes and other
+ /// objects able to decorate a TestCommand, usually by wrapping
+ /// it with an outer command.
+ /// </summary>
+ public interface ICommandDecorator
+ {
+ /// <summary>
+ /// The stage of command execution to which this decorator applies.
+ /// </summary>
+ CommandStage Stage { get; }
+
+ /// <summary>
+ /// The priority of this decorator as compared to other decorators
+ /// in the same Stage. Lower values are applied first.
+ /// </summary>
+ int Priority { get; }
+
+ /// <summary>
+ /// Decorate a command, usually by wrapping it with another
+ /// command, and return the decorated command.
+ /// </summary>
+ /// <param name="command">The command to be decorated</param>
+ /// <returns>The decorated command</returns>
+ TestCommand Decorate(TestCommand command);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/MaxTimeCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/MaxTimeCommand.cs
new file mode 100755
index 0000000..4886fe9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/MaxTimeCommand.cs
@@ -0,0 +1,88 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Diagnostics;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+ public class MaxTimeCommand : DelegatingTestCommand
+ {
+ private int maxTime;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MaxTimeCommand"/> class.
+ /// TODO: Add a comment about where the max time is retrieved.
+ /// </summary>
+ /// <param name="innerCommand">The inner command.</param>
+ public MaxTimeCommand(TestCommand innerCommand)
+ : base(innerCommand)
+ {
+ this.maxTime = Test.Properties.GetSetting(PropertyNames.MaxTime, 0);
+ }
+
+ /// <summary>
+ /// Runs the test, saving a TestResult in the supplied TestExecutionContext
+ /// </summary>
+ /// <param name="context">The context in which the test should run.</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ // TODO: This command duplicates the calculation of the
+ // duration of the test because that calculation is
+ // normally performed at a higher level. Most likely,
+ // we should move the maxtime calculation to the
+ // higher level eventually.
+#if (CLR_2_0 || CLR_4_0) && !SILVERLIGHT && !NETCF_2_0
+ long startTicks = Stopwatch.GetTimestamp();
+#endif
+
+ TestResult testResult = innerCommand.Execute(context);
+
+#if (CLR_2_0 || CLR_4_0) && !SILVERLIGHT && !NETCF_2_0
+ long tickCount = Stopwatch.GetTimestamp() - startTicks;
+ double seconds = (double)tickCount / Stopwatch.Frequency;
+ testResult.Duration = TimeSpan.FromSeconds(seconds);
+#else
+ testResult.Duration = DateTime.Now - context.StartTime;
+#endif
+
+ if (testResult.ResultState == ResultState.Success)
+ {
+ //int elapsedTime = (int)Math.Round(testResult.Time * 1000.0);
+ double elapsedTime = testResult.Duration.TotalMilliseconds;
+
+ if (elapsedTime > maxTime)
+ testResult.SetResult(ResultState.Failure,
+ string.Format("Elapsed time of {0}ms exceeds maximum of {1}ms",
+ elapsedTime, maxTime));
+ }
+
+ return testResult;
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeSetUpCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeSetUpCommand.cs
new file mode 100755
index 0000000..5f0112b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeSetUpCommand.cs
@@ -0,0 +1,74 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// OneTimeSetUpCommand runs any one-time setup methods for a suite,
+ /// constructing the user test object if necessary.
+ /// </summary>
+ public class OneTimeSetUpCommand : TestCommand
+ {
+ private readonly TestSuite suite;
+ private readonly Type fixtureType;
+ private readonly object[] arguments;
+
+ /// <summary>
+ /// Constructs a OneTimeSetUpComand for a suite
+ /// </summary>
+ /// <param name="suite">The suite to which the command applies</param>
+ public OneTimeSetUpCommand(TestSuite suite) : base(suite)
+ {
+ this.suite = suite;
+ this.fixtureType = suite.FixtureType;
+ this.arguments = suite.arguments;
+ }
+
+ /// <summary>
+ /// Overridden to run the one-time setup for a suite.
+ /// </summary>
+ /// <param name="context">The TestExecutionContext to be used.</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ if (fixtureType != null)
+ {
+ if (context.TestObject == null && !IsStaticClass(fixtureType))
+ context.TestObject = Reflect.Construct(fixtureType, arguments);
+
+ foreach (MethodInfo method in Reflect.GetMethodsWithAttribute(fixtureType, typeof(TestFixtureSetUpAttribute), true))
+ Reflect.InvokeMethod(method, method.IsStatic ? null : context.TestObject);
+ }
+
+ return context.CurrentResult;
+ }
+
+ private static bool IsStaticClass(Type type)
+ {
+ return type.IsAbstract && type.IsSealed;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeTearDownCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeTearDownCommand.cs
new file mode 100755
index 0000000..8ba497f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/OneTimeTearDownCommand.cs
@@ -0,0 +1,106 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// OneTimeTearDownCommand performs any teardown actions
+ /// specified for a suite and calls Dispose on the user
+ /// test object, if any.
+ /// </summary>
+ public class OneTimeTearDownCommand : TestCommand
+ {
+ private readonly TestSuite suite;
+ private readonly Type fixtureType;
+
+ /// <summary>
+ /// Construct a OneTimeTearDownCommand
+ /// </summary>
+ /// <param name="suite">The test suite to which the command applies</param>
+ public OneTimeTearDownCommand(TestSuite suite)
+ : base(suite)
+ {
+ this.suite = suite;
+ this.fixtureType = suite.FixtureType;
+ }
+
+ /// <summary>
+ /// Overridden to run the teardown methods specified on the test.
+ /// </summary>
+ /// <param name="context">The TestExecutionContext to be used.</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ TestResult suiteResult = context.CurrentResult;
+
+ if (fixtureType != null)
+ {
+ MethodInfo[] teardownMethods =
+ Reflect.GetMethodsWithAttribute(fixtureType, typeof(TestFixtureTearDownAttribute), true);
+
+ try
+ {
+ int index = teardownMethods.Length;
+ while (--index >= 0)
+ {
+ MethodInfo fixtureTearDown = teardownMethods[index];
+ if (!fixtureTearDown.IsStatic && context.TestObject == null)
+ Console.WriteLine("TestObject should not be null!!!");
+ Reflect.InvokeMethod(fixtureTearDown, fixtureTearDown.IsStatic ? null : context.TestObject);
+ }
+
+ IDisposable disposable = context.TestObject as IDisposable;
+ if (disposable != null)
+ disposable.Dispose();
+ }
+ catch (Exception ex)
+ {
+ // Error in TestFixtureTearDown or Dispose causes the
+ // suite to be marked as a error, even if
+ // all the contained tests passed.
+ NUnitException nex = ex as NUnitException;
+ if (nex != null)
+ ex = nex.InnerException;
+
+ // TODO: Can we move this logic into TestResult itself?
+ string message = "TearDown : " + ExceptionHelper.BuildMessage(ex);
+ if (suiteResult.Message != null)
+ message = suiteResult.Message + NUnit.Env.NewLine + message;
+
+ string stackTrace = "--TearDown" + NUnit.Env.NewLine + ExceptionHelper.BuildStackTrace(ex);
+ if (suiteResult.StackTrace != null)
+ stackTrace = suiteResult.StackTrace + NUnit.Env.NewLine + stackTrace;
+
+ // TODO: What about ignore exceptions in teardown?
+ suiteResult.SetResult(ResultState.Error, message, stackTrace);
+ }
+ }
+
+ return suiteResult;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/RepeatedTestCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/RepeatedTestCommand.cs
new file mode 100755
index 0000000..48b7467
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/RepeatedTestCommand.cs
@@ -0,0 +1,72 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+#if false
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+ public class RepeatedTestCommand : DelegatingTestCommand
+ {
+ private int repeatCount;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="RepeatedTestCommand"/> class.
+ /// TODO: Add a comment about where the repeat count is retrieved.
+ /// </summary>
+ /// <param name="innerCommand">The inner command.</param>
+ public RepeatedTestCommand(TestCommand innerCommand)
+ : base(innerCommand)
+ {
+ this.repeatCount = Test.Properties.GetSetting(PropertyNames.RepeatCount, 1);
+ }
+
+ /// <summary>
+ /// Runs the test, saving a TestResult in the supplied TestExecutionContext.
+ /// </summary>
+ /// <param name="context">The context in which the test should run.</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ int count = repeatCount;
+
+ while (count-- > 0)
+ {
+ context.CurrentResult = innerCommand.Execute(context);
+
+ // TODO: We may want to change this so that all iterations are run
+ if (context.CurrentResult.ResultState == ResultState.Failure ||
+ context.CurrentResult.ResultState == ResultState.Error ||
+ context.CurrentResult.ResultState == ResultState.Cancelled)
+ {
+ break;
+ }
+ }
+
+ return context.CurrentResult;
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/SetUpTearDownCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/SetUpTearDownCommand.cs
new file mode 100755
index 0000000..4cae066
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/SetUpTearDownCommand.cs
@@ -0,0 +1,143 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Threading;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// SetUpTearDownDecorator decorates a test command by running
+ /// a setup method before the original command and a teardown
+ /// method after it has executed.
+ /// </summary>
+ public class SetUpTearDownDecorator : ICommandDecorator
+ {
+ CommandStage ICommandDecorator.Stage
+ {
+ get { return CommandStage.SetUpTearDown; }
+ }
+
+ int ICommandDecorator.Priority
+ {
+ get { return 0; }
+ }
+
+ TestCommand ICommandDecorator.Decorate(TestCommand command)
+ {
+ return new SetUpTearDownCommand(command);
+ }
+ }
+
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+ public class SetUpTearDownCommand : DelegatingTestCommand
+ {
+ private readonly MethodInfo[] setUpMethods;
+ private readonly MethodInfo[] tearDownMethods;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SetUpTearDownCommand"/> class.
+ /// </summary>
+ /// <param name="innerCommand">The inner command.</param>
+ public SetUpTearDownCommand(TestCommand innerCommand)
+ : base(innerCommand)
+ {
+ this.setUpMethods = Test.SetUpMethods;
+ this.tearDownMethods = Test.TearDownMethods;
+ }
+
+ /// <summary>
+ /// Runs the test, saving a TestResult in the supplied TestExecutionContext.
+ /// </summary>
+ /// <param name="context">The context in which the test should run.</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ try
+ {
+ RunSetUpMethods(context);
+
+ context.CurrentResult = innerCommand.Execute(context);
+ }
+ catch (Exception ex)
+ {
+#if !NETCF && !SILVERLIGHT
+ if (ex is ThreadAbortException)
+ Thread.ResetAbort();
+#endif
+ context.CurrentResult.RecordException(ex);
+ }
+ finally
+ {
+ RunTearDownMethods(context);
+ }
+
+ return context.CurrentResult;
+ }
+
+ private void RunSetUpMethods(TestExecutionContext context)
+ {
+ if (setUpMethods != null)
+ foreach (MethodInfo setUpMethod in setUpMethods)
+ Reflect.InvokeMethod(setUpMethod, setUpMethod.IsStatic ? null : context.TestObject);
+ }
+
+ private void RunTearDownMethods(TestExecutionContext context)
+ {
+ try
+ {
+ if (tearDownMethods != null)
+ {
+ int index = tearDownMethods.Length;
+ while (--index >= 0)
+ Reflect.InvokeMethod(tearDownMethods[index], tearDownMethods[index].IsStatic ? null : context.TestObject);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (ex is NUnitException)
+ ex = ex.InnerException;
+
+ // TODO: What about ignore exceptions in teardown?
+ ResultState resultState = context.CurrentResult.ResultState == ResultState.Cancelled
+ ? ResultState.Cancelled
+ : ResultState.Error;
+
+ // TODO: Can we move this logic into TestResult itself?
+ string message = "TearDown : " + ExceptionHelper.BuildMessage(ex);
+ if (context.CurrentResult.Message != null)
+ message = context.CurrentResult.Message + NUnit.Env.NewLine + message;
+
+ string stackTrace = "--TearDown" + NUnit.Env.NewLine + ExceptionHelper.BuildStackTrace(ex);
+ if (context.CurrentResult.StackTrace != null)
+ stackTrace = context.CurrentResult.StackTrace + NUnit.Env.NewLine + stackTrace;
+
+ context.CurrentResult.SetResult(resultState, message, stackTrace);
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/SkipCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/SkipCommand.cs
new file mode 100755
index 0000000..ed7367e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/SkipCommand.cs
@@ -0,0 +1,79 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+ public class SkipCommand : TestCommand
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SkipCommand"/> class.
+ /// </summary>
+ /// <param name="test">The test being skipped.</param>
+ public SkipCommand(Test test) : base(test)
+ {
+ }
+
+ /// <summary>
+ /// Overridden to simply set the CurrentResult to the
+ /// appropriate Skipped state.
+ /// </summary>
+ /// <param name="context">The execution context for the test</param>
+ /// <returns>A TestResult</returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ TestResult testResult = this.Test.MakeTestResult();
+
+ switch (Test.RunState)
+ {
+ default:
+ case RunState.Skipped:
+ testResult.SetResult(ResultState.Skipped, GetSkipReason());
+ break;
+ case RunState.Ignored:
+ testResult.SetResult(ResultState.Ignored, GetSkipReason());
+ break;
+ case RunState.NotRunnable:
+ testResult.SetResult(ResultState.NotRunnable, GetSkipReason(), GetProviderStackTrace());
+ break;
+ }
+
+ return testResult;
+ }
+
+ private string GetSkipReason()
+ {
+ return (string)Test.Properties.Get(PropertyNames.SkipReason);
+ }
+
+ private string GetProviderStackTrace()
+ {
+ return (string)Test.Properties.Get(PropertyNames.ProviderStackTrace);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/TestCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/TestCommand.cs
new file mode 100755
index 0000000..ea7a8da
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/TestCommand.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TestCommand is the abstract base class for all test commands
+ /// in the framework. A TestCommand represents a single stage in
+ /// the execution of a test, e.g.: SetUp/TearDown, checking for
+ /// Timeout, verifying the returned result from a method, etc.
+ ///
+ /// TestCommands may decorate other test commands so that the
+ /// execution of a lower-level command is nested within that
+ /// of a higher level command. All nested commands are executed
+ /// synchronously, as a single unit. Scheduling test execution
+ /// on separate threads is handled at a higher level, using the
+ /// task dispatcher.
+ /// </summary>
+ public abstract class TestCommand
+ {
+ private Test test;
+
+ /// <summary>
+ /// Construct a TestCommand for a test.
+ /// </summary>
+ /// <param name="test">The test to be executed</param>
+ public TestCommand(Test test)
+ {
+ this.test = test;
+ }
+
+ #region ITestCommandMembers
+
+ /// <summary>
+ /// Gets the test associated with this command.
+ /// </summary>
+ public Test Test
+ {
+ get { return test; }
+ }
+
+ /// <summary>
+ /// Runs the test in a specified context, returning a TestResult.
+ /// </summary>
+ /// <param name="context">The TestExecutionContext to be used for running the test.</param>
+ /// <returns>A TestResult</returns>
+ public abstract TestResult Execute(TestExecutionContext context);
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/TestMethodCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/TestMethodCommand.cs
new file mode 100755
index 0000000..743e188
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/TestMethodCommand.cs
@@ -0,0 +1,168 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TestMethodCommand is the lowest level concrete command
+ /// used to run actual test cases.
+ /// </summary>
+ public class TestMethodCommand : TestCommand
+ {
+ private const string TaskWaitMethod = "Wait";
+ private const string TaskResultProperty = "Result";
+ private const string SystemAggregateException = "System.AggregateException";
+ private const string InnerExceptionsProperty = "InnerExceptions";
+ private const BindingFlags TaskResultPropertyBindingFlags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public;
+ private readonly TestMethod testMethod;
+ private readonly object[] arguments;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestMethodCommand"/> class.
+ /// </summary>
+ /// <param name="testMethod">The test.</param>
+ public TestMethodCommand(TestMethod testMethod) : base(testMethod)
+ {
+ this.testMethod = testMethod;
+ this.arguments = testMethod.Arguments;
+ }
+
+ /// <summary>
+ /// Runs the test, saving a TestResult in the execution context, as
+ /// well as returning it. If the test has an expected result, it
+ /// is asserts on that value. Since failed tests and errors throw
+ /// an exception, this command must be wrapped in an outer command,
+ /// will handle that exception and records the failure. This role
+ /// is usually played by the SetUpTearDown command.
+ /// </summary>
+ /// <param name="context">The execution context</param>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ // TODO: Decide if we should handle exceptions here
+ object result = RunTestMethod(context);
+
+ if (testMethod.HasExpectedResult)
+ NUnit.Framework.Assert.AreEqual(testMethod.ExpectedResult, result);
+
+ context.CurrentResult.SetResult(ResultState.Success);
+ // TODO: Set assert count here?
+ //context.CurrentResult.AssertCount = context.AssertCount;
+ return context.CurrentResult;
+ }
+
+ private object RunTestMethod(TestExecutionContext context)
+ {
+#if NET_4_5
+ if (MethodHelper.IsAsyncMethod(testMethod.Method))
+ return RunAsyncTestMethod(context);
+ //{
+ // if (testMethod.Method.ReturnType == typeof(void))
+ // return RunAsyncVoidTestMethod(context);
+ // else
+ // return RunAsyncTaskTestMethod(context);
+ //}
+ else
+#endif
+ return RunNonAsyncTestMethod(context);
+ }
+
+#if NET_4_5
+ private object RunAsyncTestMethod(TestExecutionContext context)
+ {
+ using (AsyncInvocationRegion region = AsyncInvocationRegion.Create(testMethod.Method))
+ {
+ object result = Reflect.InvokeMethod(testMethod.Method, context.TestObject, arguments);
+
+ try
+ {
+ return region.WaitForPendingOperationsToComplete(result);
+ }
+ catch (Exception e)
+ {
+ throw new NUnitException("Rethrown", e);
+ }
+ }
+ }
+#endif
+
+ private object RunNonAsyncTestMethod(TestExecutionContext context)
+ {
+ return Reflect.InvokeMethod(testMethod.Method, context.TestObject, arguments);
+ }
+
+#if NET_4_5x
+ private object RunAsyncVoidTestMethod(TestExecutionContext context)
+ {
+ var previousContext = SynchronizationContext.Current;
+ var currentContext = new AsyncSynchronizationContext();
+ SynchronizationContext.SetSynchronizationContext(currentContext);
+
+ try
+ {
+ object result = Reflect.InvokeMethod(testMethod.Method, context.TestObject, arguments);
+
+ currentContext.WaitForOperationCompleted();
+
+ if (currentContext.Exceptions.Count > 0)
+ throw new NUnitException("Rethrown", currentContext.Exceptions[0]);
+
+ return result;
+ }
+ finally
+ {
+ SynchronizationContext.SetSynchronizationContext(previousContext);
+ }
+ }
+
+ private object RunAsyncTaskTestMethod(TestExecutionContext context)
+ {
+ try
+ {
+ object task = Reflect.InvokeMethod(testMethod.Method, context.TestObject, arguments);
+
+ Reflect.InvokeMethod(testMethod.Method.ReturnType.GetMethod(TaskWaitMethod, new Type[0]), task);
+ PropertyInfo resultProperty = testMethod.Method.ReturnType.GetProperty(TaskResultProperty, TaskResultPropertyBindingFlags);
+
+ return resultProperty != null ? resultProperty.GetValue(task, null) : null;
+ }
+ catch (NUnitException e)
+ {
+ if (e.InnerException != null &&
+ e.InnerException.GetType().FullName.Equals(SystemAggregateException))
+ {
+ IList<Exception> inner = (IList<Exception>)e.InnerException.GetType()
+ .GetProperty(InnerExceptionsProperty).GetValue(e.InnerException, null);
+
+ throw new NUnitException("Rethrown", inner[0]);
+ }
+
+ throw;
+ }
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Commands/TheoryResultCommand.cs b/NUnitLite-0.9.0/src/framework/Internal/Commands/TheoryResultCommand.cs
new file mode 100755
index 0000000..c1a0e11
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Commands/TheoryResultCommand.cs
@@ -0,0 +1,72 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Commands
+{
+ /// <summary>
+ /// TheoryResultCommand adjusts the result of a Theory so that
+ /// it fails if all the results were inconclusive.
+ /// </summary>
+ public class TheoryResultCommand : DelegatingTestCommand
+ {
+ /// <summary>
+ /// Constructs a TheoryResultCommand
+ /// </summary>
+ /// <param name="command">The command to be wrapped by this one</param>
+ public TheoryResultCommand(TestCommand command) : base(command) { }
+
+ /// <summary>
+ /// Overridden to call the inner command and adjust the result
+ /// in case all chlid results were inconclusive.
+ /// </summary>
+ /// <param name="context"></param>
+ /// <returns></returns>
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ TestResult theoryResult = innerCommand.Execute(context);
+
+ if (theoryResult.ResultState == ResultState.Success)
+ {
+ if (!theoryResult.HasChildren)
+ theoryResult.SetResult(ResultState.Failure, "No test cases were provided", null);
+ else
+ {
+ bool wasInconclusive = true;
+ foreach (TestResult childResult in theoryResult.Children)
+ if (childResult.ResultState == ResultState.Success)
+ {
+ wasInconclusive = false;
+ break;
+ }
+
+ if (wasInconclusive)
+ theoryResult.SetResult(ResultState.Failure, "All test cases were inconclusive", null);
+ }
+ }
+
+ return theoryResult;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/CultureDetector.cs b/NUnitLite-0.9.0/src/framework/Internal/CultureDetector.cs
new file mode 100755
index 0000000..cda504c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/CultureDetector.cs
@@ -0,0 +1,142 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Globalization;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// CultureDetector is a helper class used by NUnit to determine
+ /// whether a test should be run based on the current culture.
+ /// </summary>
+ public class CultureDetector
+ {
+ private CultureInfo currentCulture;
+
+ // Set whenever we fail to support a list of platforms
+ private string reason = string.Empty;
+
+ /// <summary>
+ /// Default constructor uses the current culutre.
+ /// </summary>
+ public CultureDetector()
+ {
+ this.currentCulture = CultureInfo.CurrentCulture;
+ }
+
+ /// <summary>
+ /// Contruct a CultureDetector for a particular culture for testing.
+ /// </summary>
+ /// <param name="culture">The culture to be used</param>
+ public CultureDetector( string culture )
+ {
+ this.currentCulture = new CultureInfo( culture );
+ }
+
+ /// <summary>
+ /// Test to determine if one of a collection of culturess
+ /// is being used currently.
+ /// </summary>
+ /// <param name="cultures"></param>
+ /// <returns></returns>
+ public bool IsCultureSupported( string[] cultures )
+ {
+ foreach( string culture in cultures )
+ if ( IsCultureSupported( culture ) )
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Tests to determine if the current culture is supported
+ /// based on a culture attribute.
+ /// </summary>
+ /// <param name="cultureAttribute">The attribute to examine</param>
+ /// <returns></returns>
+ public bool IsCultureSupported( CultureAttribute cultureAttribute )
+ {
+ string include = cultureAttribute.Include;
+ string exclude = cultureAttribute.Exclude;
+
+ //try
+ //{
+ if (include != null && !IsCultureSupported(include))
+ {
+ reason = string.Format("Only supported under culture {0}", include);
+ return false;
+ }
+
+ if (exclude != null && IsCultureSupported(exclude))
+ {
+ reason = string.Format("Not supported under culture {0}", exclude);
+ return false;
+ }
+ //}
+ //catch( ArgumentException ex )
+ //{
+ // reason = string.Format( "Invalid culture: {0}", ex.ParamName );
+ // return false;
+ //}
+
+ return true;
+ }
+
+ /// <summary>
+ /// Test to determine if the a particular culture or comma-
+ /// delimited set of cultures is in use.
+ /// </summary>
+ /// <param name="culture">Name of the culture or comma-separated list of culture names</param>
+ /// <returns>True if the culture is in use on the system</returns>
+ public bool IsCultureSupported( string culture )
+ {
+ culture = culture.Trim();
+
+ if ( culture.IndexOf( ',' ) >= 0 )
+ {
+ if ( IsCultureSupported( culture.Split( new char[] { ',' } ) ) )
+ return true;
+ }
+ else
+ {
+ if( this.currentCulture.Name == culture || this.currentCulture.TwoLetterISOLanguageName == culture)
+ return true;
+ }
+
+ this.reason = "Only supported under culture " + culture;
+ return false;
+ }
+
+ /// <summary>
+ /// Return the last failure reason. Results are not
+ /// defined if called before IsSupported( Attribute )
+ /// is called.
+ /// </summary>
+ public string Reason
+ {
+ get { return reason; }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/ExceptionHelper.cs b/NUnitLite-0.9.0/src/framework/Internal/ExceptionHelper.cs
new file mode 100755
index 0000000..09058ab
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/ExceptionHelper.cs
@@ -0,0 +1,95 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Globalization;
+using System.Text;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// ExceptionHelper provides static methods for working with exceptions
+ /// </summary>
+ public class ExceptionHelper
+ {
+ // TODO: Move to a utility class
+ /// <summary>
+ /// Builds up a message, using the Message field of the specified exception
+ /// as well as any InnerExceptions.
+ /// </summary>
+ /// <param name="exception">The exception.</param>
+ /// <returns>A combined message string.</returns>
+ public static string BuildMessage(Exception exception)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.AppendFormat(CultureInfo.CurrentCulture, "{0} : {1}", exception.GetType().ToString(), exception.Message);
+
+ Exception inner = exception.InnerException;
+ while (inner != null)
+ {
+ sb.Append(NUnit.Env.NewLine);
+ sb.AppendFormat(CultureInfo.CurrentCulture, " ----> {0} : {1}", inner.GetType().ToString(), inner.Message);
+ inner = inner.InnerException;
+ }
+
+ return sb.ToString();
+ }
+
+ /// <summary>
+ /// Builds up a message, using the Message field of the specified exception
+ /// as well as any InnerExceptions.
+ /// </summary>
+ /// <param name="exception">The exception.</param>
+ /// <returns>A combined stack trace.</returns>
+ public static string BuildStackTrace(Exception exception)
+ {
+ StringBuilder sb = new StringBuilder(GetStackTrace(exception));
+
+ Exception inner = exception.InnerException;
+ while (inner != null)
+ {
+ sb.Append(NUnit.Env.NewLine);
+ sb.Append("--");
+ sb.Append(inner.GetType().Name);
+ sb.Append(NUnit.Env.NewLine);
+ sb.Append(GetStackTrace(inner));
+
+ inner = inner.InnerException;
+ }
+
+ return sb.ToString();
+ }
+
+ private static string GetStackTrace(Exception exception)
+ {
+ try
+ {
+ return exception.StackTrace;
+ }
+ catch (Exception)
+ {
+ return "No stack trace available";
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Extensibility/ParameterDataProviders.cs b/NUnitLite-0.9.0/src/framework/Internal/Extensibility/ParameterDataProviders.cs
new file mode 100755
index 0000000..07e5176
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Extensibility/ParameterDataProviders.cs
@@ -0,0 +1,101 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Builders;
+
+namespace NUnit.Framework.Extensibility
+{
+#if NUNITLITE
+ class ParameterDataProviders : IParameterDataProvider
+ {
+#if CLR_2_0 || CLR_4_0
+ private List<IParameterDataProvider> Extensions = new List<IParameterDataProvider>();
+#else
+ private ArrayList Extensions = new ArrayList();
+#endif
+
+ public ParameterDataProviders()
+ {
+ Extensions.Add(new ParameterDataProvider());
+ Extensions.Add(new DatapointProvider());
+ }
+#else
+ class ParameterDataProviders : ExtensionPoint, IParameterDataProvider
+ {
+ public ParameterDataProviders(ExtensionHost host)
+ : base("ParameterDataProviders", host) { }
+#endif
+
+ #region IDataPointProvider Members
+
+ /// <summary>
+ /// Determine whether any data is available for a parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>True if any data is available, otherwise false.</returns>
+ public bool HasDataFor(ParameterInfo parameter)
+ {
+ foreach (IParameterDataProvider provider in Extensions)
+ if (provider.HasDataFor(parameter))
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Return an IEnumerable providing data for use with the
+ /// supplied parameter.
+ /// </summary>
+ /// <param name="parameter">A ParameterInfo representing one
+ /// argument to a parameterized test</param>
+ /// <returns>An IEnumerable providing the required data</returns>
+ public IEnumerable GetDataFor(ParameterInfo parameter)
+ {
+ ObjectList list = new ObjectList();
+
+ foreach (IParameterDataProvider provider in Extensions)
+ if (provider.HasDataFor(parameter))
+ foreach (object o in provider.GetDataFor(parameter))
+ list.Add(o);
+
+ return list;
+ }
+ #endregion
+
+#if !NUNITLITE
+ #region ExtensionPoint Overrides
+ protected override bool IsValidExtension(object extension)
+ {
+ return extension is IParameterDataProvider;
+ }
+ #endregion
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Extensibility/TestCaseProviders.cs b/NUnitLite-0.9.0/src/framework/Internal/Extensibility/TestCaseProviders.cs
new file mode 100755
index 0000000..a989416
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Extensibility/TestCaseProviders.cs
@@ -0,0 +1,116 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Builders;
+
+namespace NUnit.Framework.Extensibility
+{
+#if NUNITLITE
+ class TestCaseProviders : ITestCaseProvider
+ {
+#if CLR_2_0 || CLR_4_0
+ private List<ITestCaseProvider> Extensions = new List<ITestCaseProvider>();
+#else
+ private System.Collections.ArrayList Extensions = new System.Collections.ArrayList();
+#endif
+
+ public TestCaseProviders()
+ {
+ this.Extensions.Add(new DataAttributeTestCaseProvider());
+ this.Extensions.Add(new CombinatorialTestCaseProvider());
+ }
+#else
+ class TestCaseProviders : ExtensionPoint, ITestCaseProvider
+ {
+ public TestCaseProviders(IExtensionHost host) : base( "TestCaseProviders", host ) { }
+#endif
+
+ #region ITestCaseProvider Members
+
+ /// <summary>
+ /// Determine whether any test cases are available for a parameterized method.
+ /// </summary>
+ /// <param name="method">A MethodInfo representing a parameterized test</param>
+ /// <returns>True if any cases are available, otherwise false.</returns>
+ public bool HasTestCasesFor(MethodInfo method)
+ {
+ foreach (ITestCaseProvider provider in Extensions)
+ if (provider.HasTestCasesFor(method))
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Return an enumeration providing test cases for use in
+ /// running a parameterized test.
+ /// </summary>
+ /// <param name="method"></param>
+ /// <returns></returns>
+#if CLR_2_0 || CLR_4_0
+ public System.Collections.Generic.IEnumerable<ITestCaseData> GetTestCasesFor(MethodInfo method)
+ {
+ List<ITestCaseData> testcases = new List<ITestCaseData>();
+#else
+ public System.Collections.IEnumerable GetTestCasesFor(MethodInfo method)
+ {
+ System.Collections.ArrayList testcases = new System.Collections.ArrayList();
+#endif
+
+ foreach (ITestCaseProvider provider in Extensions)
+ try
+ {
+ if (provider.HasTestCasesFor(method))
+ foreach (ITestCaseData testcase in provider.GetTestCasesFor(method))
+ testcases.Add(testcase);
+ }
+ catch (System.Reflection.TargetInvocationException ex)
+ {
+ testcases.Add(new ParameterSet(ex.InnerException));
+ }
+ catch (System.Exception ex)
+ {
+ testcases.Add(new ParameterSet(ex));
+ }
+
+ return testcases;
+ }
+
+ #endregion
+
+#if !NUNITLITE
+ #region IsValidExtension
+ protected override bool IsValidExtension(object extension)
+ {
+ return extension is ITestCaseProvider;
+ }
+ #endregion
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/AndFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/AndFilter.cs
new file mode 100755
index 0000000..fa16110
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/AndFilter.cs
@@ -0,0 +1,96 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// Combines multiple filters so that a test must pass all
+ /// of them in order to pass this filter.
+ /// </summary>
+ [Serializable]
+ public class AndFilter : TestFilter
+ {
+#if CLR_2_0 || CLR_4_0
+ private List<ITestFilter> filters = new List<ITestFilter>();
+#else
+ private System.Collections.ArrayList filters = new System.Collections.ArrayList();
+#endif
+
+ /// <summary>
+ /// Constructs an empty AndFilter
+ /// </summary>
+ public AndFilter() { }
+
+ /// <summary>
+ /// Constructs an AndFilter from an array of filters
+ /// </summary>
+ /// <param name="filters"></param>
+ public AndFilter( params ITestFilter[] filters )
+ {
+ this.filters.AddRange( filters );
+ }
+
+ /// <summary>
+ /// Adds a filter to the list of filters
+ /// </summary>
+ /// <param name="filter">The filter to be added</param>
+ public void Add( ITestFilter filter )
+ {
+ this.filters.Add( filter );
+ }
+
+ /// <summary>
+ /// Checks whether the AndFilter is matched by a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if all the component filters pass, otherwise false</returns>
+ public override bool Pass( ITest test )
+ {
+ foreach( ITestFilter filter in filters )
+ if ( !filter.Pass( test ) )
+ return false;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Checks whether the AndFilter is matched by a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if all the component filters match, otherwise false</returns>
+ public override bool Match( ITest test )
+ {
+ foreach( TestFilter filter in filters )
+ if ( !filter.Match( test ) )
+ return false;
+
+ return true;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/CategoryExpression.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/CategoryExpression.cs
new file mode 100755
index 0000000..5b6eb8f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/CategoryExpression.cs
@@ -0,0 +1,180 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// CategoryExpression parses strings representing boolean
+ /// combinations of categories according to the following
+ /// grammar:
+ /// CategoryName ::= string not containing any of ',', '&amp;', '+', '-'
+ /// CategoryFilter ::= CategoryName | CategoryFilter ',' CategoryName
+ /// CategoryPrimitive ::= CategoryFilter | '-' CategoryPrimitive
+ /// CategoryTerm ::= CategoryPrimitive | CategoryTerm '&amp;' CategoryPrimitive
+ /// </summary>
+ public class CategoryExpression
+ {
+ static readonly char[] ops = new char[] { ',', ';', '-', '|', '+', '(', ')' };
+
+ private string text;
+ private int next;
+ private string token;
+
+ private TestFilter filter;
+
+ /// <summary>
+ /// Construct expression from a text string
+ /// </summary>
+ /// <param name="text">The text of the expression</param>
+ public CategoryExpression(string text)
+ {
+ this.text = text;
+ this.next = 0;
+ }
+
+ /// <summary>
+ /// Gets the TestFilter represented by the expression
+ /// </summary>
+ public TestFilter Filter
+ {
+ get
+ {
+ if( filter == null )
+ {
+ filter = GetToken() == null
+ ? TestFilter.Empty
+ : GetExpression();
+ }
+
+ return filter;
+ }
+ }
+
+ private TestFilter GetExpression()
+ {
+ TestFilter term = GetTerm();
+ if ( token != "|" )
+ return term;
+
+ OrFilter filter = new OrFilter( term );
+
+ while ( token == "|" )
+ {
+ GetToken();
+ filter.Add( GetTerm() );
+ }
+
+ return filter;
+ }
+
+ private TestFilter GetTerm()
+ {
+ TestFilter prim = GetPrimitive();
+ if ( token != "+" && token != "-" )
+ return prim;
+
+ AndFilter filter = new AndFilter( prim );
+
+ while ( token == "+"|| token == "-" )
+ {
+ string tok = token;
+ GetToken();
+ prim = GetPrimitive();
+ filter.Add( tok == "-" ? new NotFilter( prim ) : prim );
+ }
+
+ return filter;
+ }
+
+ private TestFilter GetPrimitive()
+ {
+ if( token == "-" )
+ {
+ GetToken();
+ return new NotFilter( GetPrimitive() );
+ }
+ else if( token == "(" )
+ {
+ GetToken();
+ TestFilter expr = GetExpression();
+ GetToken(); // Skip ')'
+ return expr;
+ }
+
+ return GetCategoryFilter();
+ }
+
+ private CategoryFilter GetCategoryFilter()
+ {
+ CategoryFilter filter = new CategoryFilter( token );
+
+ while( GetToken() == "," || token == ";" )
+ filter.AddCategory( GetToken() );
+
+ return filter;
+ }
+
+ private string GetToken()
+ {
+ SkipWhiteSpace();
+
+ if ( EndOfText() )
+ token = null;
+ else if ( NextIsOperator() )
+ token = text.Substring(next++, 1);
+ else
+ {
+ int index2 = text.IndexOfAny( ops, next );
+ if ( index2 < 0 ) index2 = text.Length;
+
+ token = text.Substring( next, index2 - next ).TrimEnd();
+ next = index2;
+ }
+
+ return token;
+ }
+
+ private void SkipWhiteSpace()
+ {
+ while( next < text.Length && Char.IsWhiteSpace( text[next] ) )
+ ++next;
+ }
+
+ private bool EndOfText()
+ {
+ return next >= text.Length;
+ }
+
+ private bool NextIsOperator()
+ {
+ foreach( char op in ops )
+ if( op == text[next] )
+ return true;
+
+ return false;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/CategoryFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/CategoryFilter.cs
new file mode 100755
index 0000000..1eac74a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/CategoryFilter.cs
@@ -0,0 +1,118 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Text;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// CategoryFilter is able to select or exclude tests
+ /// based on their categories.
+ /// </summary>
+ ///
+ [Serializable]
+ public class CategoryFilter : TestFilter
+ {
+#if CLR_2_0 || CLR_4_0
+ List<string> categories = new List<string>();
+#else
+ ArrayList categories = new ArrayList();
+#endif
+
+ /// <summary>
+ /// Construct an empty CategoryFilter
+ /// </summary>
+ public CategoryFilter()
+ {
+ }
+
+ /// <summary>
+ /// Construct a CategoryFilter using a single category name
+ /// </summary>
+ /// <param name="name">A category name</param>
+ public CategoryFilter( string name )
+ {
+ if ( name != null && name != string.Empty )
+ categories.Add( name );
+ }
+
+ /// <summary>
+ /// Construct a CategoryFilter using an array of category names
+ /// </summary>
+ /// <param name="names">An array of category names</param>
+ public CategoryFilter( string[] names )
+ {
+ if ( names != null )
+ categories.AddRange( names );
+ }
+
+ /// <summary>
+ /// Add a category name to the filter
+ /// </summary>
+ /// <param name="name">A category name</param>
+ public void AddCategory(string name)
+ {
+ categories.Add( name );
+ }
+
+ /// <summary>
+ /// Check whether the filter matches a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns></returns>
+ public override bool Match(ITest test)
+ {
+ IList testCategories = test.Properties[PropertyNames.Category] as IList;
+
+ if ( testCategories == null || testCategories.Count == 0)
+ return false;
+
+ foreach( string cat in this.categories )
+ if ( testCategories.Contains( cat ) )
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Return the string representation of a category filter
+ /// </summary>
+ /// <returns></returns>
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ for( int i = 0; i < categories.Count; i++ )
+ {
+ if ( i > 0 ) sb.Append( ',' );
+ sb.Append( categories[i] );
+ }
+ return sb.ToString();
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/NotFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/NotFilter.cs
new file mode 100755
index 0000000..7a16fe6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/NotFilter.cs
@@ -0,0 +1,97 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// NotFilter negates the operation of another filter
+ /// </summary>
+ [Serializable]
+ public class NotFilter : TestFilter
+ {
+ ITestFilter baseFilter;
+ bool topLevel = false;
+
+ /// <summary>
+ /// Construct a not filter on another filter
+ /// </summary>
+ /// <param name="baseFilter">The filter to be negated</param>
+ public NotFilter( ITestFilter baseFilter)
+ {
+ this.baseFilter = baseFilter;
+ }
+
+ /// <summary>
+ /// Indicates whether this is a top-level NotFilter,
+ /// requiring special handling of Explicit
+ /// </summary>
+ public bool TopLevel
+ {
+ get { return topLevel; }
+ set { topLevel = value; }
+ }
+
+ /// <summary>
+ /// Gets the base filter
+ /// </summary>
+ public ITestFilter BaseFilter
+ {
+ get { return baseFilter; }
+ }
+
+ /// <summary>
+ /// Check whether the filter matches a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if it matches, otherwise false</returns>
+ public override bool Match( ITest test )
+ {
+ if (topLevel && test.RunState == RunState.Explicit)
+ return false;
+
+ return !baseFilter.Pass( test );
+ }
+
+ /// <summary>
+ /// Determine whether any descendant of the test matches the filter criteria.
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if at least one descendant matches the filter criteria</returns>
+ protected override bool MatchDescendant(ITest test)
+ {
+ if (!test.HasChildren || test.Tests == null || topLevel && test.RunState == RunState.Explicit)
+ return false;
+
+ foreach (ITest child in test.Tests)
+ {
+ if (Match(child) || MatchDescendant(child))
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/OrFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/OrFilter.cs
new file mode 100755
index 0000000..74171cb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/OrFilter.cs
@@ -0,0 +1,111 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// Combines multiple filters so that a test must pass one
+ /// of them in order to pass this filter.
+ /// </summary>
+ [Serializable]
+ public class OrFilter : TestFilter
+ {
+#if CLR_2_0 || CLR_4_0
+ private List<ITestFilter> filters = new List<ITestFilter>();
+#else
+ private System.Collections.ArrayList filters = new System.Collections.ArrayList();
+#endif
+
+ /// <summary>
+ /// Constructs an empty OrFilter
+ /// </summary>
+ public OrFilter() { }
+
+ /// <summary>
+ /// Constructs an AndFilter from an array of filters
+ /// </summary>
+ /// <param name="filters"></param>
+ public OrFilter( params ITestFilter[] filters )
+ {
+ this.filters.AddRange( filters );
+ }
+
+ /// <summary>
+ /// Adds a filter to the list of filters
+ /// </summary>
+ /// <param name="filter">The filter to be added</param>
+ public void Add( ITestFilter filter )
+ {
+ this.filters.Add( filter );
+ }
+
+ /// <summary>
+ /// Return an array of the composing filters
+ /// </summary>
+ public ITestFilter[] Filters
+ {
+ get
+ {
+#if CLR_2_0 || CLR_4_0
+ return filters.ToArray();
+#else
+ return (ITestFilter[])filters.ToArray(typeof(ITestFilter));
+#endif
+ }
+ }
+
+ /// <summary>
+ /// Checks whether the OrFilter is matched by a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if any of the component filters pass, otherwise false</returns>
+ public override bool Pass( ITest test )
+ {
+ foreach( ITestFilter filter in filters )
+ if ( filter.Pass( test ) )
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Checks whether the OrFilter is matched by a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if any of the component filters match, otherwise false</returns>
+ public override bool Match( ITest test )
+ {
+ foreach( TestFilter filter in filters )
+ if ( filter.Match( test ) )
+ return true;
+
+ return false;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/SimpleCategoryExpression.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/SimpleCategoryExpression.cs
new file mode 100755
index 0000000..87ef5ab
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/SimpleCategoryExpression.cs
@@ -0,0 +1,43 @@
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// SimpleCategoryFilter parses a basic string representing a
+ /// single category or a list of categories separated by commas
+ /// </summary>
+ public class SimpleCategoryExpression
+ {
+ private string text;
+
+ private TestFilter filter;
+
+ /// <summary>
+ /// Construct category filter from a text string
+ /// </summary>
+ /// <param name="text">A list of categories to parse</param>
+ public SimpleCategoryExpression(string text)
+ {
+ this.text = text;
+ }
+
+ /// <summary>
+ /// Gets the TestFilter represented by the expression
+ /// </summary>
+ public TestFilter Filter
+ {
+ get
+ {
+ if (filter == null)
+ {
+ filter = GetCategories();
+ }
+ return filter;
+ }
+ }
+
+ private TestFilter GetCategories()
+ {
+ string[] categories = text.Split(',');
+ return new CategoryFilter(categories);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Filters/SimpleNameFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/Filters/SimpleNameFilter.cs
new file mode 100755
index 0000000..bec326a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Filters/SimpleNameFilter.cs
@@ -0,0 +1,93 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.Filters
+{
+ /// <summary>
+ /// SimpleName filter selects tests based on their name
+ /// </summary>
+ [Serializable]
+ public class SimpleNameFilter : TestFilter
+ {
+#if CLR_2_0 || CLR_4_0
+ private List<string> names = new List<string>();
+#else
+ private System.Collections.ArrayList names = new System.Collections.ArrayList();
+#endif
+
+ /// <summary>
+ /// Construct an empty SimpleNameFilter
+ /// </summary>
+ public SimpleNameFilter() { }
+
+ /// <summary>
+ /// Construct a SimpleNameFilter for a single name
+ /// </summary>
+ /// <param name="nameToAdd">The name the filter will recognize.</param>
+ public SimpleNameFilter(string nameToAdd)
+ {
+ Add(nameToAdd);
+ }
+
+ /// <summary>
+ /// Construct a SimpleNameFilter for an array of names
+ /// </summary>
+ /// <param name="namesToAdd">The names the filter will recognize.</param>
+ public SimpleNameFilter(string[] namesToAdd)
+ {
+ foreach (string name in namesToAdd)
+ Add(name);
+ }
+
+ /// <summary>
+ /// Add a name to a SimpleNameFilter
+ /// </summary>
+ /// <param name="name">The name to be added.</param>
+ public void Add(string name)
+ {
+ Guard.ArgumentNotNullOrEmpty(name, "name");
+
+ names.Add(name);
+ }
+
+ /// <summary>
+ /// Check whether the filter matches a test
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if it matches, otherwise false</returns>
+ public override bool Match( ITest test )
+ {
+ foreach( string name in names )
+ if ( test.FullName == name )
+ return true;
+
+ return false;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/IApplyToContext.cs b/NUnitLite-0.9.0/src/framework/Internal/IApplyToContext.cs
new file mode 100755
index 0000000..7d71e79
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/IApplyToContext.cs
@@ -0,0 +1,39 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The IApplyToContext interface is implemented by attributes
+ /// that want to make changes to the execution context before
+ /// a test is run.
+ /// </summary>
+ public interface IApplyToContext
+ {
+ /// <summary>
+ /// Apply changes to the execution context
+ /// </summary>
+ /// <param name="context">The execution context</param>
+ void ApplyToContext(TestExecutionContext context);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/IApplyToTest.cs b/NUnitLite-0.9.0/src/framework/Internal/IApplyToTest.cs
new file mode 100755
index 0000000..2612280
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/IApplyToTest.cs
@@ -0,0 +1,40 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The IApplyToTest interface is implemented by self-applying
+ /// attributes that modify the state of a test in some way.
+ /// </summary>
+ public interface IApplyToTest
+ {
+ /// <summary>
+ /// Modifies a test as defined for the specific attribute.
+ /// </summary>
+ /// <param name="test">The test to modify</param>
+ void ApplyToTest(Test test);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/InvalidTestFixtureException.cs b/NUnitLite-0.9.0/src/framework/Internal/InvalidTestFixtureException.cs
new file mode 100755
index 0000000..c17e92b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/InvalidTestFixtureException.cs
@@ -0,0 +1,66 @@
+// ***********************************************************************
+// Copyright (c) 2006 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Internal
+{
+ using System;
+#if !NETCF
+ using System.Runtime.Serialization;
+#endif
+
+ /// <summary>
+ /// InvalidTestFixtureException is thrown when an appropriate test
+ /// fixture constructor using the provided arguments cannot be found.
+ /// </summary>
+ [Serializable]
+ public class InvalidTestFixtureException : Exception
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="InvalidTestFixtureException"/> class.
+ /// </summary>
+ public InvalidTestFixtureException() : base() {}
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="InvalidTestFixtureException"/> class.
+ /// </summary>
+ /// <param name="message">The message.</param>
+ public InvalidTestFixtureException(string message) : base(message)
+ {}
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="InvalidTestFixtureException"/> class.
+ /// </summary>
+ /// <param name="message">The message.</param>
+ /// <param name="inner">The inner.</param>
+ public InvalidTestFixtureException(string message, Exception inner) : base(message, inner)
+ {}
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Serialization Constructor
+ /// </summary>
+ protected InvalidTestFixtureException(SerializationInfo info,
+ StreamingContext context) : base(info,context){}
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/Internal/MethodHelper.cs b/NUnitLite-0.9.0/src/framework/Internal/MethodHelper.cs
new file mode 100755
index 0000000..780eaf8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/MethodHelper.cs
@@ -0,0 +1,226 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Text;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// MethodHelper provides static methods for working with methods.
+ /// </summary>
+ public class MethodHelper
+ {
+ /// <summary>
+ /// Gets the display name for a method as used by NUnit.
+ /// </summary>
+ /// <param name="method">The method for which a display name is needed.</param>
+ /// <param name="arglist">The arguments provided.</param>
+ /// <returns>The display name for the method</returns>
+ public static string GetDisplayName(MethodInfo method, object[] arglist)
+ {
+ StringBuilder sb = new StringBuilder(method.Name);
+
+#if CLR_2_0 || CLR_4_0
+ if (method.IsGenericMethod)
+ {
+ sb.Append("<");
+ int cnt = 0;
+ foreach (Type t in method.GetGenericArguments())
+ {
+ if (cnt++ > 0) sb.Append(",");
+ sb.Append(t.Name);
+ }
+ sb.Append(">");
+ }
+#endif
+
+ if (arglist != null)
+ {
+ sb.Append("(");
+
+ for (int i = 0; i < arglist.Length; i++)
+ {
+ if (i > 0) sb.Append(",");
+ sb.Append(GetDisplayString(arglist[i]));
+ }
+
+ sb.Append(")");
+ }
+
+ return sb.ToString();
+ }
+
+ private static string GetDisplayString(object arg)
+ {
+ string display = arg == null
+ ? "null"
+ : Convert.ToString(arg, System.Globalization.CultureInfo.InvariantCulture);
+
+ if (arg is double)
+ {
+ double d = (double)arg;
+
+ if (double.IsNaN(d))
+ display = "double.NaN";
+ else if (double.IsPositiveInfinity(d))
+ display = "double.PositiveInfinity";
+ else if (double.IsNegativeInfinity(d))
+ display = "double.NegativeInfinity";
+ else if (d == double.MaxValue)
+ display = "double.MaxValue";
+ else if (d == double.MinValue)
+ display = "double.MinValue";
+ else
+ {
+ if (display.IndexOf('.') == -1)
+ display += ".0";
+ display += "d";
+ }
+ }
+ else if (arg is float)
+ {
+ float f = (float)arg;
+
+ if (float.IsNaN(f))
+ display = "float.NaN";
+ else if (float.IsPositiveInfinity(f))
+ display = "float.PositiveInfinity";
+ else if (float.IsNegativeInfinity(f))
+ display = "float.NegativeInfinity";
+ else if (f == float.MaxValue)
+ display = "float.MaxValue";
+ else if (f == float.MinValue)
+ display = "float.MinValue";
+ else
+ {
+ if (display.IndexOf('.') == -1)
+ display += ".0";
+ display += "f";
+ }
+ }
+ else if (arg is decimal)
+ {
+ decimal d = (decimal)arg;
+ if (d == decimal.MinValue)
+ display = "decimal.MinValue";
+ else if (d == decimal.MaxValue)
+ display = "decimal.MaxValue";
+ else
+ display += "m";
+ }
+ else if (arg is long)
+ {
+ long l = (long)arg;
+ if (l == long.MinValue)
+ display = "long.MinValue";
+ else if (l == long.MinValue)
+ display = "long.MaxValue";
+ else
+ display += "L";
+ }
+ else if (arg is ulong)
+ {
+ ulong ul = (ulong)arg;
+ if (ul == ulong.MinValue)
+ display = "ulong.MinValue";
+ else if (ul == ulong.MinValue)
+ display = "ulong.MaxValue";
+ else
+ display += "UL";
+ }
+ else if (arg is string)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("\"");
+ foreach (char c in (string)arg)
+ sb.Append(EscapeControlChar(c));
+ sb.Append("\"");
+ display = sb.ToString();
+ }
+ else if (arg is char)
+ {
+ display = "\'" + EscapeControlChar((char)arg) + "\'";
+ }
+ else if (arg is int)
+ {
+ int ival = (int)arg;
+ if (ival == int.MaxValue)
+ display = "int.MaxValue";
+ else if (ival == int.MinValue)
+ display = "int.MinValue";
+ }
+
+ return display;
+ }
+
+ private static string EscapeControlChar(char c)
+ {
+ switch (c)
+ {
+ case '\'':
+ return "\\\'";
+ case '\"':
+ return "\\\"";
+ case '\\':
+ return "\\\\";
+ case '\0':
+ return "\\0";
+ case '\a':
+ return "\\a";
+ case '\b':
+ return "\\b";
+ case '\f':
+ return "\\f";
+ case '\n':
+ return "\\n";
+ case '\r':
+ return "\\r";
+ case '\t':
+ return "\\t";
+ case '\v':
+ return "\\v";
+
+ case '\x0085':
+ case '\x2028':
+ case '\x2029':
+ return string.Format("\\x{0:X4}", (int)c);
+
+ default:
+ return c.ToString();
+ }
+ }
+
+#if NET_4_5
+ /// <summary>
+ /// Returns true if the method specified by the argument
+ /// is an async method.
+ /// </summary>
+ public static bool IsAsyncMethod(MethodInfo method)
+ {
+ return method.IsDefined(typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute));
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/NUnitException.cs b/NUnitLite-0.9.0/src/framework/Internal/NUnitException.cs
new file mode 100755
index 0000000..2665b54
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/NUnitException.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Internal
+{
+ using System;
+#if !NETCF
+ using System.Runtime.Serialization;
+#endif
+
+ /// <summary>
+ /// Thrown when an assertion failed. Here to preserve the inner
+ /// exception and hence its stack trace.
+ /// </summary>
+ [Serializable]
+ public class NUnitException : Exception
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NUnitException"/> class.
+ /// </summary>
+ public NUnitException () : base()
+ {}
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NUnitException"/> class.
+ /// </summary>
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ public NUnitException(string message) : base (message)
+ {}
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NUnitException"/> class.
+ /// </summary>
+ /// <param name="message">The error message that explains
+ /// the reason for the exception</param>
+ /// <param name="inner">The exception that caused the
+ /// current exception</param>
+ public NUnitException(string message, Exception inner) :
+ base(message, inner)
+ {}
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Serialization Constructor
+ /// </summary>
+ protected NUnitException(SerializationInfo info,
+ StreamingContext context) : base(info,context){}
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyBuilder.cs b/NUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyBuilder.cs
new file mode 100755
index 0000000..a4ce58c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyBuilder.cs
@@ -0,0 +1,192 @@
+using System;
+using System.Collections;
+using System.IO;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Builders;
+using NUnit.Framework.Extensibility;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite
+ /// containing test fixtures present in the assembly.
+ /// </summary>
+ public class NUnitLiteTestAssemblyBuilder : ITestAssemblyBuilder
+ {
+ #region Instance Fields
+
+ /// <summary>
+ /// The loaded assembly
+ /// </summary>
+ Assembly assembly;
+
+ #endregion
+
+ #region Constructor
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NUnitLiteTestAssemblyBuilder"/> class.
+ /// </summary>
+ public NUnitLiteTestAssemblyBuilder()
+ {
+ }
+
+ #endregion
+
+ #region Build Methods
+ /// <summary>
+ /// Build a suite of tests from a provided assembly
+ /// </summary>
+ /// <param name="assembly">The assembly from which tests are to be built</param>
+ /// <param name="options">A dictionary of options to use in building the suite</param>
+ /// <returns>
+ /// A TestSuite containing the tests found in the assembly
+ /// </returns>
+ public TestSuite Build(Assembly assembly, IDictionary options)
+ {
+ this.assembly = assembly;
+
+ IList fixtureNames = options["LOAD"] as IList;
+
+ IList fixtures = GetFixtures(assembly, fixtureNames);
+
+ if (fixtures.Count > 0)
+ {
+ AssemblyName assemblyName = AssemblyHelper.GetAssemblyName(assembly);
+ return BuildTestAssembly(assemblyName.Name, fixtures);
+ }
+
+ return null;
+ }
+
+ /// <summary>
+ /// Build a suite of tests given the filename of an assembly
+ /// </summary>
+ /// <param name="assemblyName">The filename of the assembly from which tests are to be built</param>
+ /// <param name="options">A dictionary of options to use in building the suite</param>
+ /// <returns>
+ /// A TestSuite containing the tests found in the assembly
+ /// </returns>
+ public TestSuite Build(string assemblyName, IDictionary options)
+ {
+ this.assembly = Load(assemblyName);
+ if (assembly == null) return null;
+
+ IList fixtureNames = options["LOAD"] as IList;
+
+ IList fixtures = GetFixtures(assembly, fixtureNames);
+ if (fixtures.Count > 0)
+ return BuildTestAssembly(assemblyName, fixtures);
+
+ return null;
+ }
+ #endregion
+
+ #region Helper Methods
+
+ private Assembly Load(string path)
+ {
+#if NETCF || SILVERLIGHT
+ return Assembly.Load(path);
+#else
+ // Throws if this isn't a managed assembly or if it was built
+ // with a later version of the same assembly.
+ AssemblyName assemblyName = AssemblyName.GetAssemblyName(Path.GetFileName(path));
+
+ return Assembly.Load(assemblyName);
+#endif
+ }
+
+ private IList GetFixtures(Assembly assembly, IList names)
+ {
+ ObjectList fixtures = new ObjectList();
+
+ IList testTypes = GetCandidateFixtureTypes(assembly, names);
+
+ foreach (Type testType in testTypes)
+ {
+ if (TestFixtureBuilder.CanBuildFrom(testType))
+ fixtures.Add(TestFixtureBuilder.BuildFrom(testType));
+ }
+
+ return fixtures;
+ }
+
+ private IList GetCandidateFixtureTypes(Assembly assembly, IList names)
+ {
+ IList types = assembly.GetTypes();
+
+ if (names == null || names.Count == 0)
+ return types;
+
+ ObjectList result = new ObjectList();
+
+ foreach (string name in names)
+ {
+ Type fixtureType = assembly.GetType(name);
+ if (fixtureType != null)
+ result.Add(fixtureType);
+ else
+ {
+ string prefix = name + ".";
+
+ foreach (Type type in types)
+ if (type.FullName.StartsWith(prefix))
+ result.Add(type);
+ }
+ }
+
+ return result;
+ }
+
+ private TestSuite BuildFromFixtureType(string assemblyName, Type testType)
+ {
+ ISuiteBuilder testFixtureBuilder = new NUnitTestFixtureBuilder();
+
+ // TODO: This is the only situation in which we currently
+ // recognize and load legacy suites. We need to determine
+ // whether to allow them in more places.
+ //if (legacySuiteBuilder.CanBuildFrom(testType))
+ // return (TestSuite)legacySuiteBuilder.BuildFrom(testType);
+ //else
+ if (testFixtureBuilder.CanBuildFrom(testType))
+ return BuildTestAssembly(assemblyName,
+ new Test[] { testFixtureBuilder.BuildFrom(testType) });
+ return null;
+ }
+
+ private TestSuite BuildTestAssembly(string assemblyName, IList fixtures)
+ {
+ TestSuite testAssembly = new TestAssembly(this.assembly, assemblyName);
+
+ //NamespaceTreeBuilder treeBuilder =
+ // new NamespaceTreeBuilder(testAssembly);
+ //treeBuilder.Add(fixtures);
+ //testAssembly = treeBuilder.RootSuite;
+
+ foreach (Test fixture in fixtures)
+ testAssembly.Add(fixture);
+
+ if (fixtures.Count == 0)
+ {
+ testAssembly.RunState = RunState.NotRunnable;
+ testAssembly.Properties.Set(PropertyNames.SkipReason, "Has no TestFixtures");
+ }
+
+ testAssembly.ApplyAttributesToTest(assembly);
+
+#if !SILVERLIGHT
+ testAssembly.Properties.Set(PropertyNames.ProcessID, System.Diagnostics.Process.GetCurrentProcess().Id);
+#endif
+ testAssembly.Properties.Set(PropertyNames.AppDomain, AppDomain.CurrentDomain.FriendlyName);
+
+
+ // TODO: Make this an option? Add Option to sort assemblies as well?
+ testAssembly.Sort();
+
+ return testAssembly;
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyRunner.cs b/NUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyRunner.cs
new file mode 100755
index 0000000..716ad1e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/NUnitLiteTestAssemblyRunner.cs
@@ -0,0 +1,143 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal.WorkItems;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Default implementation of ITestAssemblyRunner
+ /// </summary>
+ public class NUnitLiteTestAssemblyRunner : ITestAssemblyRunner
+ {
+ private IDictionary settings;
+ private ITestAssemblyBuilder builder;
+ private TestSuite loadedTest;
+ //private Thread runThread;
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NUnitLiteTestAssemblyRunner"/> class.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public NUnitLiteTestAssemblyRunner(ITestAssemblyBuilder builder)
+ {
+ this.builder = builder;
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// TODO: Documentation needed for property
+ /// </summary>
+ public ITest LoadedTest
+ {
+ get
+ {
+ return this.loadedTest;
+ }
+ }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// Loads the tests found in an Assembly
+ /// </summary>
+ /// <param name="assemblyName">File name of the assembly to load</param>
+ /// <param name="settings">Dictionary of option settings for loading the assembly</param>
+ /// <returns>True if the load was successful</returns>
+ public bool Load(string assemblyName, IDictionary settings)
+ {
+ this.settings = settings;
+ this.loadedTest = this.builder.Build(assemblyName, settings);
+ if (loadedTest == null) return false;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Loads the tests found in an Assembly
+ /// </summary>
+ /// <param name="assembly">The assembly to load</param>
+ /// <param name="settings">Dictionary of option settings for loading the assembly</param>
+ /// <returns>True if the load was successful</returns>
+ public bool Load(Assembly assembly, IDictionary settings)
+ {
+ this.settings = settings;
+ this.loadedTest = this.builder.Build(assembly, settings);
+ if (loadedTest == null) return false;
+
+ return true;
+ }
+
+ ///// <summary>
+ ///// Count Test Cases using a filter
+ ///// </summary>
+ ///// <param name="filter">The filter to apply</param>
+ ///// <returns>The number of test cases found</returns>
+ //public int CountTestCases(TestFilter filter)
+ //{
+ // return this.suite.CountTestCases(filter);
+ //}
+
+ /// <summary>
+ /// Run selected tests and return a test result. The test is run synchronously,
+ /// and the listener interface is notified as it progresses.
+ /// </summary>
+ /// <param name="listener">Interface to receive EventListener notifications.</param>
+ /// <param name="filter">A test filter used to select tests to be run</param>
+ /// <returns></returns>
+ public ITestResult Run(ITestListener listener, ITestFilter filter)
+ {
+ TestExecutionContext context = new TestExecutionContext();
+
+ if (this.settings.Contains("WorkDirectory"))
+ context.WorkDirectory = (string)this.settings["WorkDirectory"];
+ else
+#if NETCF || SILVERLIGHT
+ context.WorkDirectory = Env.DocumentFolder;
+#else
+ context.WorkDirectory = Environment.CurrentDirectory;
+#endif
+ context.Listener = listener;
+
+ WorkItem workItem = WorkItem.CreateWorkItem(loadedTest, context, filter);
+ workItem.Execute();
+
+ while (workItem.State != WorkItemState.Complete)
+ System.Threading.Thread.Sleep(5);
+ return workItem.Result;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/OSPlatform.cs b/NUnitLite-0.9.0/src/framework/Internal/OSPlatform.cs
new file mode 100755
index 0000000..0ced8cd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/OSPlatform.cs
@@ -0,0 +1,386 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// OSPlatform represents a particular operating system platform
+ /// </summary>
+ public class OSPlatform
+ {
+ PlatformID platform;
+ Version version;
+ ProductType product;
+
+ #region Static Members
+ private static OSPlatform currentPlatform;
+
+
+ /// <summary>
+ /// Platform ID for Unix as defined by Microsoft .NET 2.0 and greater
+ /// </summary>
+ public static readonly PlatformID UnixPlatformID_Microsoft = (PlatformID)4;
+
+ /// <summary>
+ /// Platform ID for Unix as defined by Mono
+ /// </summary>
+ public static readonly PlatformID UnixPlatformID_Mono = (PlatformID)128;
+
+ /// <summary>
+ /// Get the OSPlatform under which we are currently running
+ /// </summary>
+ public static OSPlatform CurrentPlatform
+ {
+ get
+ {
+ if (currentPlatform == null)
+ {
+ OperatingSystem os = Environment.OSVersion;
+
+#if SILVERLIGHT
+ // TODO: Runtime silverlight detection?
+ currentPlatform = new OSPlatform(os.Platform, os.Version);
+#else
+ if (os.Platform == PlatformID.Win32NT && os.Version.Major >= 5)
+ {
+ OSVERSIONINFOEX osvi = new OSVERSIONINFOEX();
+ osvi.dwOSVersionInfoSize = (uint)Marshal.SizeOf(osvi);
+ GetVersionEx(ref osvi);
+ currentPlatform = new OSPlatform(os.Platform, os.Version, (ProductType)osvi.ProductType);
+ }
+ else
+ currentPlatform = new OSPlatform(os.Platform, os.Version);
+#endif
+ }
+
+ return currentPlatform;
+ }
+ }
+ #endregion
+
+ #region Members used for Win32NT platform only
+ /// <summary>
+ /// Product Type Enumeration used for Windows
+ /// </summary>
+ public enum ProductType
+ {
+ /// <summary>
+ /// Product type is unknown or unspecified
+ /// </summary>
+ Unknown,
+
+ /// <summary>
+ /// Product type is Workstation
+ /// </summary>
+ WorkStation,
+
+ /// <summary>
+ /// Product type is Domain Controller
+ /// </summary>
+ DomainController,
+
+ /// <summary>
+ /// Product type is Server
+ /// </summary>
+ Server,
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct OSVERSIONINFOEX
+ {
+ public uint dwOSVersionInfoSize;
+ public uint dwMajorVersion;
+ public uint dwMinorVersion;
+ public uint dwBuildNumber;
+ public uint dwPlatformId;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
+ public string szCSDVersion;
+ public Int16 wServicePackMajor;
+ public Int16 wServicePackMinor;
+ public Int16 wSuiteMask;
+ public Byte ProductType;
+ public Byte Reserved;
+ }
+
+ [DllImport("Kernel32.dll")]
+ private static extern bool GetVersionEx(ref OSVERSIONINFOEX osvi);
+ #endregion
+
+ /// <summary>
+ /// Construct from a platform ID and version
+ /// </summary>
+ public OSPlatform(PlatformID platform, Version version)
+ {
+ this.platform = platform;
+ this.version = version;
+ }
+
+ /// <summary>
+ /// Construct from a platform ID, version and product type
+ /// </summary>
+ public OSPlatform(PlatformID platform, Version version, ProductType product)
+ : this( platform, version )
+ {
+ this.product = product;
+ }
+
+ /// <summary>
+ /// Get the platform ID of this instance
+ /// </summary>
+ public PlatformID Platform
+ {
+ get { return platform; }
+ }
+
+ /// <summary>
+ /// Get the Version of this instance
+ /// </summary>
+ public Version Version
+ {
+ get { return version; }
+ }
+
+ /// <summary>
+ /// Get the Product Type of this instance
+ /// </summary>
+ public ProductType Product
+ {
+ get { return product; }
+ }
+
+ /// <summary>
+ /// Return true if this is a windows platform
+ /// </summary>
+ public bool IsWindows
+ {
+ get
+ {
+ return platform == PlatformID.Win32NT
+ || platform == PlatformID.Win32Windows
+ || platform == PlatformID.Win32S
+ || platform == PlatformID.WinCE;
+ }
+ }
+
+ /// <summary>
+ /// Return true if this is a Unix or Linux platform
+ /// </summary>
+ public bool IsUnix
+ {
+ get
+ {
+ return platform == UnixPlatformID_Microsoft
+ || platform == UnixPlatformID_Mono;
+ }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Win32S
+ /// </summary>
+ public bool IsWin32S
+ {
+ get { return platform == PlatformID.Win32S; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Win32Windows
+ /// </summary>
+ public bool IsWin32Windows
+ {
+ get { return platform == PlatformID.Win32Windows; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Win32NT
+ /// </summary>
+ public bool IsWin32NT
+ {
+ get { return platform == PlatformID.Win32NT; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows CE
+ /// </summary>
+ public bool IsWinCE
+ {
+ get { return (int)platform == 3; } // PlatformID.WinCE not defined in .NET 1.0
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ /// <summary>
+ /// Return true if the platform is Xbox
+ /// </summary>
+ public bool IsXbox
+ {
+ get { return platform == PlatformID.Xbox; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is MacOSX
+ /// </summary>
+ public bool IsMacOSX
+ {
+ get { return platform == PlatformID.MacOSX; }
+ }
+#endif
+
+ /// <summary>
+ /// Return true if the platform is Windows 95
+ /// </summary>
+ public bool IsWin95
+ {
+ get { return platform == PlatformID.Win32Windows && version.Major == 4 && version.Minor == 0; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 98
+ /// </summary>
+ public bool IsWin98
+ {
+ get { return platform == PlatformID.Win32Windows && version.Major == 4 && version.Minor == 10; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows ME
+ /// </summary>
+ public bool IsWinME
+ {
+ get { return platform == PlatformID.Win32Windows && version.Major == 4 && version.Minor == 90; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is NT 3
+ /// </summary>
+ public bool IsNT3
+ {
+ get { return platform == PlatformID.Win32NT && version.Major == 3; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is NT 4
+ /// </summary>
+ public bool IsNT4
+ {
+ get { return platform == PlatformID.Win32NT && version.Major == 4; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is NT 5
+ /// </summary>
+ public bool IsNT5
+ {
+ get { return platform == PlatformID.Win32NT && version.Major == 5; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 2000
+ /// </summary>
+ public bool IsWin2K
+ {
+ get { return IsNT5 && version.Minor == 0; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows XP
+ /// </summary>
+ public bool IsWinXP
+ {
+ get { return IsNT5 && (version.Minor == 1 || version.Minor == 2 && Product == ProductType.WorkStation); }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 2003 Server
+ /// </summary>
+ public bool IsWin2003Server
+ {
+ get { return IsNT5 && version.Minor == 2 && Product == ProductType.Server; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is NT 6
+ /// </summary>
+ public bool IsNT6
+ {
+ get { return platform == PlatformID.Win32NT && version.Major == 6; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Vista
+ /// </summary>
+ public bool IsVista
+ {
+ get { return IsNT6 && version.Minor == 0 && Product == ProductType.WorkStation; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 2008 Server (original or R2)
+ /// </summary>
+ public bool IsWin2008Server
+ {
+ get { return IsNT6 && Product == ProductType.Server; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 2008 Server (original)
+ /// </summary>
+ public bool IsWin2008ServerR1
+ {
+ get { return IsNT6 && version.Minor == 0 && Product == ProductType.Server; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 2008 Server R2
+ /// </summary>
+ public bool IsWin2008ServerR2
+ {
+ get { return IsNT6 && version.Minor == 1 && Product == ProductType.Server; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 2012 Server
+ /// </summary>
+ public bool IsWin2012Server
+ {
+ get { return IsNT6 && version.Minor == 2 && Product == ProductType.Server; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 7
+ /// </summary>
+ public bool IsWindows7
+ {
+ get { return IsNT6 && version.Minor == 1 && Product == ProductType.WorkStation; }
+ }
+
+ /// <summary>
+ /// Return true if the platform is Windows 8
+ /// </summary>
+ public bool IsWindows8
+ {
+ get { return IsNT6 && version.Minor == 8 && Product == ProductType.WorkStation; }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/ParameterSet.cs b/NUnitLite-0.9.0/src/framework/Internal/ParameterSet.cs
new file mode 100755
index 0000000..68277eb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/ParameterSet.cs
@@ -0,0 +1,219 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// ParameterSet encapsulates method arguments and
+ /// other selected parameters needed for constructing
+ /// a parameterized test case.
+ /// </summary>
+ public class ParameterSet : ITestCaseData, IApplyToTest
+ {
+ #region Instance Fields
+
+ private object[] arguments;
+ private object[] originalArguments;
+ private object result;
+ private bool hasExpectedResult;
+ private ExpectedExceptionData exceptionData;
+
+ /// <summary>
+ /// A dictionary of properties, used to add information
+ /// to tests without requiring the class to change.
+ /// </summary>
+ private IPropertyBag properties;
+
+ #endregion
+
+ #region Properties
+
+ private RunState runState;
+ /// <summary>
+ /// The RunState for this set of parameters.
+ /// </summary>
+ public RunState RunState
+ {
+ get { return runState; }
+ set { runState = value; }
+ }
+
+ /// <summary>
+ /// The arguments to be used in running the test,
+ /// which must match the method signature.
+ /// </summary>
+ public object[] Arguments
+ {
+ get { return arguments; }
+ set
+ {
+ arguments = value;
+
+ if (originalArguments == null)
+ originalArguments = value;
+ }
+ }
+
+ /// <summary>
+ /// The original arguments provided by the user,
+ /// used for display purposes.
+ /// </summary>
+ public object[] OriginalArguments
+ {
+ get { return originalArguments; }
+ }
+
+ /// <summary>
+ /// Gets a flag indicating whether an exception is expected.
+ /// </summary>
+ public bool ExceptionExpected
+ {
+ get { return exceptionData.ExpectedExceptionName != null; }
+ }
+
+ /// <summary>
+ /// Data about any expected exception
+ /// </summary>
+ public ExpectedExceptionData ExceptionData
+ {
+ get { return exceptionData; }
+ }
+
+ /// <summary>
+ /// The expected result of the test, which
+ /// must match the method return type.
+ /// </summary>
+ public object ExpectedResult
+ {
+ get { return result; }
+ set
+ {
+ result = value;
+ hasExpectedResult = true;
+ }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether an expected result was specified.
+ /// </summary>
+ public bool HasExpectedResult
+ {
+ get { return hasExpectedResult; }
+ }
+
+ private string testName;
+ /// <summary>
+ /// A name to be used for this test case in lieu
+ /// of the standard generated name containing
+ /// the argument list.
+ /// </summary>
+ public string TestName
+ {
+ get { return testName; }
+ set { testName = value; }
+ }
+
+ /// <summary>
+ /// Gets the property dictionary for this test
+ /// </summary>
+ public IPropertyBag Properties
+ {
+ get
+ {
+ if (properties == null)
+ properties = new PropertyBag();
+
+ return properties;
+ }
+ }
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Construct a non-runnable ParameterSet, specifying
+ /// the provider exception that made it invalid.
+ /// </summary>
+ public ParameterSet(Exception exception)
+ {
+ this.RunState = RunState.NotRunnable;
+ this.Properties.Set(PropertyNames.SkipReason, ExceptionHelper.BuildMessage(exception));
+ this.Properties.Set(PropertyNames.ProviderStackTrace, ExceptionHelper.BuildStackTrace(exception));
+ }
+
+ /// <summary>
+ /// Construct an empty parameter set, which
+ /// defaults to being Runnable.
+ /// </summary>
+ public ParameterSet()
+ {
+ this.RunState = RunState.Runnable;
+ }
+
+ /// <summary>
+ /// Construct a ParameterSet from an object implementing ITestCaseData
+ /// </summary>
+ /// <param name="data"></param>
+ public ParameterSet(ITestCaseData data)
+ {
+ this.TestName = data.TestName;
+ this.RunState = data.RunState;
+ this.Arguments = data.Arguments;
+ this.exceptionData = data.ExceptionData;
+
+ if (data.HasExpectedResult)
+ this.ExpectedResult = data.ExpectedResult;
+
+ foreach (string key in data.Properties.Keys)
+ this.Properties[key] = data.Properties[key];
+ }
+
+ #endregion
+
+ #region IApplyToTest Members
+
+ /// <summary>
+ /// Applies ParameterSet values to the test itself.
+ /// </summary>
+ /// <param name="test">A test.</param>
+ public void ApplyToTest(Test test)
+ {
+ if (this.RunState != RunState.Runnable)
+ test.RunState = this.RunState;
+
+ foreach (string key in Properties.Keys)
+ foreach (object value in Properties[key])
+ test.Properties.Add(key, value);
+
+ TestMethod testMethod = test as TestMethod;
+ if (testMethod != null && exceptionData.ExpectedExceptionName != null)
+ testMethod.CustomDecorators.Add(new ExpectedExceptionDecorator(this.ExceptionData));
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/PlatformHelper.cs b/NUnitLite-0.9.0/src/framework/Internal/PlatformHelper.cs
new file mode 100755
index 0000000..9ff4fa7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/PlatformHelper.cs
@@ -0,0 +1,298 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// PlatformHelper class is used by the PlatformAttribute class to
+ /// determine whether a platform is supported.
+ /// </summary>
+ public class PlatformHelper
+ {
+ private OSPlatform os;
+ private RuntimeFramework rt;
+
+ // Set whenever we fail to support a list of platforms
+ private string reason = string.Empty;
+
+ /// <summary>
+ /// Comma-delimited list of all supported OS platform constants
+ /// </summary>
+ public static readonly string OSPlatforms =
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ "Win,Win32,Win32S,Win32NT,Win32Windows,WinCE,Win95,Win98,WinMe,NT3,NT4,NT5,NT6,Win2K,WinXP,Win2003Server,Vista,Win2008Server,Win2008ServerR2,Win2012Server,Windows7,Windows8,Unix,Linux,Xbox,MacOSX";
+#else
+ "Win,Win32,Win32S,Win32NT,Win32Windows,WinCE,Win95,Win98,WinMe,NT3,NT4,NT5,NT6,Win2K,WinXP,Win2003Server,Vista,Win2008Server,Win2008ServerR2,Win2012Server,Windows7,Windows8,Unix,Linux";
+#endif
+
+ /// <summary>
+ /// Comma-delimited list of all supported Runtime platform constants
+ /// </summary>
+ public static readonly string RuntimePlatforms =
+ "Net,NetCF,SSCLI,Rotor,Mono,MonoTouch";
+
+ /// <summary>
+ /// Default constructor uses the operating system and
+ /// common language runtime of the system.
+ /// </summary>
+ public PlatformHelper()
+ {
+ this.os = OSPlatform.CurrentPlatform;
+ this.rt = RuntimeFramework.CurrentFramework;
+ }
+
+ /// <summary>
+ /// Contruct a PlatformHelper for a particular operating
+ /// system and common language runtime. Used in testing.
+ /// </summary>
+ /// <param name="os">OperatingSystem to be used</param>
+ /// <param name="rt">RuntimeFramework to be used</param>
+ public PlatformHelper( OSPlatform os, RuntimeFramework rt )
+ {
+ this.os = os;
+ this.rt = rt;
+ }
+
+ /// <summary>
+ /// Test to determine if one of a collection of platforms
+ /// is being used currently.
+ /// </summary>
+ /// <param name="platforms"></param>
+ /// <returns></returns>
+ public bool IsPlatformSupported( string[] platforms )
+ {
+ foreach( string platform in platforms )
+ if ( IsPlatformSupported( platform ) )
+ return true;
+
+ return false;
+ }
+
+ /// <summary>
+ /// Tests to determine if the current platform is supported
+ /// based on a platform attribute.
+ /// </summary>
+ /// <param name="platformAttribute">The attribute to examine</param>
+ /// <returns></returns>
+ public bool IsPlatformSupported( PlatformAttribute platformAttribute )
+ {
+ string include = platformAttribute.Include;
+ string exclude = platformAttribute.Exclude;
+
+ try
+ {
+ if (include != null && !IsPlatformSupported(include))
+ {
+ reason = string.Format("Only supported on {0}", include);
+ return false;
+ }
+
+ if (exclude != null && IsPlatformSupported(exclude))
+ {
+ reason = string.Format("Not supported on {0}", exclude);
+ return false;
+ }
+ }
+ catch (Exception ex)
+ {
+ reason = ex.Message;
+ return false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// Test to determine if the a particular platform or comma-
+ /// delimited set of platforms is in use.
+ /// </summary>
+ /// <param name="platform">Name of the platform or comma-separated list of platform names</param>
+ /// <returns>True if the platform is in use on the system</returns>
+ public bool IsPlatformSupported( string platform )
+ {
+ if ( platform.IndexOf( ',' ) >= 0 )
+ return IsPlatformSupported( platform.Split( new char[] { ',' } ) );
+
+ string platformName = platform.Trim();
+ bool isSupported = false;
+
+// string versionSpecification = null;
+//
+// string[] parts = platformName.Split( new char[] { '-' } );
+// if ( parts.Length == 2 )
+// {
+// platformName = parts[0];
+// versionSpecification = parts[1];
+// }
+
+ switch( platformName.ToUpper() )
+ {
+ case "WIN":
+ case "WIN32":
+ isSupported = os.IsWindows;
+ break;
+ case "WIN32S":
+ isSupported = os.IsWin32S;
+ break;
+ case "WIN32WINDOWS":
+ isSupported = os.IsWin32Windows;
+ break;
+ case "WIN32NT":
+ isSupported = os.IsWin32NT;
+ break;
+ case "WINCE":
+ isSupported = os.IsWinCE;
+ break;
+ case "WIN95":
+ isSupported = os.IsWin95;
+ break;
+ case "WIN98":
+ isSupported = os.IsWin98;
+ break;
+ case "WINME":
+ isSupported = os.IsWinME;
+ break;
+ case "NT3":
+ isSupported = os.IsNT3;
+ break;
+ case "NT4":
+ isSupported = os.IsNT4;
+ break;
+ case "NT5":
+ isSupported = os.IsNT5;
+ break;
+ case "WIN2K":
+ isSupported = os.IsWin2K;
+ break;
+ case "WINXP":
+ isSupported = os.IsWinXP;
+ break;
+ case "WIN2003SERVER":
+ isSupported = os.IsWin2003Server;
+ break;
+ case "NT6":
+ isSupported = os.IsNT6;
+ break;
+ case "VISTA":
+ isSupported = os.IsVista;
+ break;
+ case "WIN2008SERVER":
+ isSupported = os.IsWin2008Server;
+ break;
+ case "WIN2008SERVERR2":
+ isSupported = os.IsWin2008ServerR2;
+ break;
+ case "WIN2012SERVER":
+ isSupported = os.IsWin2012Server;
+ break;
+ case "WINDOWS7":
+ isSupported = os.IsWindows7;
+ break;
+ case "WINDOWS8":
+ isSupported = os.IsWindows8;
+ break;
+ case "UNIX":
+ case "LINUX":
+ isSupported = os.IsUnix;
+ break;
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ case "XBOX":
+ isSupported = os.IsXbox;
+ break;
+ case "MACOSX":
+ isSupported = os.IsMacOSX;
+ break;
+#endif
+
+ default:
+ isSupported = IsRuntimeSupported(platformName);
+ break;
+ }
+
+ if (!isSupported)
+ this.reason = "Only supported on " + platform;
+
+ return isSupported;
+ }
+
+ /// <summary>
+ /// Return the last failure reason. Results are not
+ /// defined if called before IsSupported( Attribute )
+ /// is called.
+ /// </summary>
+ public string Reason
+ {
+ get { return reason; }
+ }
+
+ private bool IsRuntimeSupported(string platformName)
+ {
+ string versionSpecification = null;
+ string[] parts = platformName.Split(new char[] { '-' });
+ if (parts.Length == 2)
+ {
+ platformName = parts[0];
+ versionSpecification = parts[1];
+ }
+
+ switch (platformName.ToUpper())
+ {
+ case "NET":
+ return IsRuntimeSupported(RuntimeType.Net, versionSpecification);
+
+ case "NETCF":
+ return IsRuntimeSupported(RuntimeType.NetCF, versionSpecification);
+
+ case "SSCLI":
+ case "ROTOR":
+ return IsRuntimeSupported(RuntimeType.SSCLI, versionSpecification);
+
+ case "MONO":
+ return IsRuntimeSupported(RuntimeType.Mono, versionSpecification);
+
+ case "SL":
+ case "SILVERLIGHT":
+ return IsRuntimeSupported(RuntimeType.Silverlight, versionSpecification);
+
+ case "MONOTOUCH":
+ return IsRuntimeSupported(RuntimeType.MonoTouch, versionSpecification);
+
+ default:
+ throw new ArgumentException("Invalid platform name", platformName);
+ }
+ }
+
+ private bool IsRuntimeSupported(RuntimeType runtime, string versionSpecification)
+ {
+ Version version = versionSpecification == null
+ ? RuntimeFramework.DefaultVersion
+ : new Version(versionSpecification);
+
+ RuntimeFramework target = new RuntimeFramework(runtime, version);
+
+ return rt.Supports(target);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/PropertyBag.cs b/NUnitLite-0.9.0/src/framework/Internal/PropertyBag.cs
new file mode 100755
index 0000000..7557957
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/PropertyBag.cs
@@ -0,0 +1,462 @@
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// A PropertyBag represents a collection of name value pairs
+ /// that allows duplicate entries with the same key. Methods
+ /// are provided for adding a new pair as well as for setting
+ /// a key to a single value. All keys are strings but values
+ /// may be of any type. Null values are not permitted, since
+ /// a null entry represents the absence of the key.
+ /// </summary>
+ public class PropertyBag : IPropertyBag
+ {
+#if CLR_2_0 || CLR_4_0
+ private Dictionary<string, IList> inner = new Dictionary<string, IList>();
+
+ private bool TryGetValue(string key, out IList list)
+ {
+ return inner.TryGetValue(key, out list);
+ }
+#else
+ private Hashtable inner = new Hashtable();
+
+ private bool TryGetValue(string key, out IList list)
+ {
+ list = inner.ContainsKey(key)
+ ? (IList)inner[key]
+ : null;
+
+ return list != null;
+ }
+#endif
+
+ /// <summary>
+ /// Adds a key/value pair to the property set
+ /// </summary>
+ /// <param name="key">The key</param>
+ /// <param name="value">The value</param>
+ public void Add(string key, object value)
+ {
+ IList list;
+ if (!TryGetValue(key, out list))
+ {
+ list = new ObjectList();
+ inner.Add(key, list);
+ }
+ list.Add(value);
+ }
+
+ /// <summary>
+ /// Sets the value for a key, removing any other
+ /// values that are already in the property set.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="value"></param>
+ public void Set(string key, object value)
+ {
+ IList list = new ObjectList();
+ list.Add(value);
+ inner[key] = list;
+ }
+
+ /// <summary>
+ /// Gets a single value for a key, using the first
+ /// one if multiple values are present and returning
+ /// null if the value is not found.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public object Get(string key)
+ {
+ IList list;
+ return TryGetValue(key, out list) && list.Count > 0
+ ? list[0]
+ : null;
+ }
+
+ /// <summary>
+ /// Gets a single boolean value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="defaultValue"></param>
+ /// <returns></returns>
+ public bool GetSetting(string key, bool defaultValue)
+ {
+ object value = Get(key);
+ return value == null
+ ? defaultValue
+ : (bool)value;
+ }
+
+ /// <summary>
+ /// Gets a single string value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="defaultValue"></param>
+ /// <returns></returns>
+ public string GetSetting(string key, string defaultValue)
+ {
+ object value = Get(key);
+ return value == null
+ ? defaultValue
+ : (string)value;
+ }
+
+ /// <summary>
+ /// Gets a single int value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="defaultValue"></param>
+ /// <returns></returns>
+ public int GetSetting(string key, int defaultValue)
+ {
+ object value = Get(key);
+ return value == null
+ ? defaultValue
+ : (int)value;
+ }
+
+ /// <summary>
+ /// Gets a single Enum value for a key, using the first
+ /// one if multiple values are present and returning the
+ /// default value if no entry is found.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="defaultValue"></param>
+ /// <returns></returns>
+ public Enum GetSetting(string key, Enum defaultValue)
+ {
+ object value = Get(key);
+ return value == null
+ ? defaultValue
+ : (Enum)value;
+ }
+
+ /// <summary>
+ /// Clears this instance.
+ /// </summary>
+ public void Clear()
+ {
+ inner.Clear();
+ }
+
+ /// <summary>
+ /// Removes all entries for a key from the property set
+ /// </summary>
+ /// <param name="key">The key for which the entries are to be removed</param>
+ public void Remove(string key)
+ {
+ inner.Remove(key);
+ }
+
+ /// <summary>
+ /// Removes a single entry if present. If not found,
+ /// no error occurs.
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="value"></param>
+ public void Remove(string key, object value)
+ {
+ IList list;
+ if (TryGetValue(key, out list))
+ list.Remove(value);
+ }
+
+ /// <summary>
+ /// Removes a specific PropertyEntry. If the entry is not
+ /// found, no errr occurs.
+ /// </summary>
+ /// <param name="entry">The property entry to remove</param>
+ public void Remove(PropertyEntry entry)
+ {
+ Remove(entry.Name, entry.Value);
+ }
+
+ /// <summary>
+ /// Get the number of key/value pairs in the property set
+ /// </summary>
+ /// <value></value>
+ public int Count
+ {
+ get
+ {
+ int count = 0;
+
+ foreach (string key in inner.Keys)
+ count += ((IList)inner[key]).Count;
+
+ return count;
+ }
+ }
+
+ /// <summary>
+ /// Gets a flag indicating whether the specified key has
+ /// any entries in the property set.
+ /// </summary>
+ /// <param name="key">The key to be checked</param>
+ /// <returns>
+ /// True if their are values present, otherwise false
+ /// </returns>
+ public bool ContainsKey(string key)
+ {
+ return inner.ContainsKey(key);
+ }
+
+ /// <summary>
+ /// Gets a flag indicating whether the specified key and
+ /// value are present in the property set.
+ /// </summary>
+ /// <param name="key">The key to be checked</param>
+ /// <param name="value">The value to be checked</param>
+ /// <returns>
+ /// True if the key and value are present, otherwise false
+ /// </returns>
+ public bool Contains(string key, object value)
+ {
+ IList list;
+ return TryGetValue(key, out list) && list.Contains(value);
+ }
+
+ /// <summary>
+ /// Gets a flag indicating whether the specified key and
+ /// value are present in the property set.
+ /// </summary>
+ /// <param name="entry">The property entry to be checked</param>
+ /// <returns>
+ /// True if the entry is present, otherwise false
+ /// </returns>
+ public bool Contains(PropertyEntry entry)
+ {
+ return Contains(entry.Name, entry.Value);
+ }
+
+ /// <summary>
+ /// Gets a collection containing all the keys in the property set
+ /// </summary>
+ /// <value></value>
+#if CLR_2_0 || CLR_4_0
+ public ICollection<string> Keys
+#else
+ public ICollection Keys
+#endif
+ {
+ get { return inner.Keys; }
+ }
+
+ /// <summary>
+ /// Gets an enumerator for all properties in the property bag
+ /// </summary>
+ /// <returns></returns>
+ public IEnumerator GetEnumerator()
+ {
+ return new PropertyBagEnumerator(this);
+ }
+
+ /// <summary>
+ /// Gets or sets the list of values for a particular key
+ /// </summary>
+ public IList this[string key]
+ {
+ get
+ {
+ IList list;
+ if (!TryGetValue(key, out list))
+ {
+ list = new ObjectList();
+ inner.Add(key, list);
+ }
+ return list;
+ }
+ set
+ {
+ inner[key] = value;
+ }
+ }
+
+ #region IXmlNodeBuilder Members
+
+ /// <summary>
+ /// Returns an XmlNode representating the current PropertyBag.
+ /// </summary>
+ /// <param name="recursive">Not used</param>
+ /// <returns>An XmlNode representing the PropertyBag</returns>
+ public XmlNode ToXml(bool recursive)
+ {
+ //XmlResult topNode = XmlResult.CreateTopLevelElement("dummy");
+
+ XmlNode thisNode = AddToXml(new XmlNode("dummy"), recursive);
+
+ return thisNode;
+ }
+
+ /// <summary>
+ /// Returns an XmlNode representing the PropertyBag after
+ /// adding it as a child of the supplied parent node.
+ /// </summary>
+ /// <param name="parentNode">The parent node.</param>
+ /// <param name="recursive">Not used</param>
+ /// <returns></returns>
+ public XmlNode AddToXml(XmlNode parentNode, bool recursive)
+ {
+ XmlNode properties = parentNode.AddElement("properties");
+
+ foreach (string key in Keys)
+ {
+ foreach (object value in this[key])
+ {
+ XmlNode prop = properties.AddElement("property");
+
+ // TODO: Format as string
+ prop.AddAttribute("name", key.ToString());
+ prop.AddAttribute("value", value.ToString());
+ }
+ }
+
+ return properties;
+ }
+
+ #endregion
+
+ #region Nested PropertyBagEnumerator Class
+
+ /// <summary>
+ /// TODO: Documentation needed for class
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public class PropertyBagEnumerator : IEnumerator<PropertyEntry>
+ {
+ private IEnumerator<KeyValuePair<string, IList>> innerEnum;
+#else
+ public class PropertyBagEnumerator : IEnumerator
+ {
+ private IEnumerator innerEnum;
+#endif
+ private PropertyBag bag;
+ private IEnumerator valueEnum;
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="bag"></param>
+ public PropertyBagEnumerator(PropertyBag bag)
+ {
+ this.bag = bag;
+
+ Initialize();
+ }
+
+ private void Initialize()
+ {
+ innerEnum = bag.inner.GetEnumerator();
+ valueEnum = null;
+
+ if (innerEnum.MoveNext())
+ {
+#if CLR_2_0 || CLR_4_0
+ valueEnum = innerEnum.Current.Value.GetEnumerator();
+#else
+ DictionaryEntry entry = (DictionaryEntry)innerEnum.Current;
+ valueEnum = ((IList)entry.Value).GetEnumerator();
+#endif
+ }
+ }
+
+ private PropertyEntry GetCurrentEntry()
+ {
+ if (valueEnum == null)
+ throw new InvalidOperationException();
+
+#if CLR_2_0 || CLR_4_0
+ string key = innerEnum.Current.Key;
+#else
+ DictionaryEntry entry = (DictionaryEntry)innerEnum.Current;
+ string key = (string)entry.Key;
+#endif
+
+ object value = valueEnum.Current;
+
+ return new PropertyEntry(key, value);
+ }
+
+ #region IEnumerator<PropertyEntry> Members
+
+#if CLR_2_0 || CLR_4_0
+ PropertyEntry IEnumerator<PropertyEntry>.Current
+ {
+ get
+ {
+ return GetCurrentEntry();
+ }
+ }
+#endif
+
+ #endregion
+
+ #region IDisposable Members
+
+#if CLR_2_0 || CLR_4_0
+ void IDisposable.Dispose()
+ {
+ }
+#endif
+
+ #endregion
+
+ #region IEnumerator Members
+
+ object IEnumerator.Current
+ {
+ get
+ {
+ return GetCurrentEntry();
+ }
+ }
+
+ bool IEnumerator.MoveNext()
+ {
+ if (valueEnum == null)
+ return false;
+
+ while (!valueEnum.MoveNext())
+ {
+ if (!innerEnum.MoveNext())
+ {
+ valueEnum = null;
+ return false;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ valueEnum = innerEnum.Current.Value.GetEnumerator();
+#else
+ DictionaryEntry entry = (DictionaryEntry)innerEnum.Current;
+ valueEnum = ((IList)entry.Value).GetEnumerator();
+#endif
+ }
+
+ return true;
+ }
+
+ void IEnumerator.Reset()
+ {
+ Initialize();
+ }
+
+ #endregion
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/PropertyNames.cs b/NUnitLite-0.9.0/src/framework/Internal/PropertyNames.cs
new file mode 100755
index 0000000..13cc572
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/PropertyNames.cs
@@ -0,0 +1,102 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The PropertyNames class provides static constants for the
+ /// standard property names that NUnit uses on tests.
+ /// </summary>
+ public class PropertyNames
+ {
+ /// <summary>
+ /// The Description of a test
+ /// </summary>
+ public static readonly string Description = "Description";
+
+ /// <summary>
+ /// The reason a test was not run
+ /// </summary>
+ public static readonly string SkipReason = "_SKIPREASON";
+
+ /// <summary>
+ /// The stack trace from any data provider that threw
+ /// an exception.
+ /// </summary>
+ public static readonly string ProviderStackTrace = "_PROVIDERSTACKTRACE";
+
+ /// <summary>
+ /// The culture to be set for a test
+ /// </summary>
+ public static readonly string SetCulture = "SetCulture";
+
+ /// <summary>
+ /// The UI culture to be set for a test
+ /// </summary>
+ public static readonly string SetUICulture = "SetUICulture";
+
+ /// <summary>
+ /// The categories applying to a test
+ /// </summary>
+ public static readonly string Category = "Category";
+
+#if !NUNITLITE
+ /// <summary>
+ /// The ApartmentState required for running the test
+ /// </summary>
+ public static readonly string ApartmentState = "ApartmentState";
+#endif
+
+ /// <summary>
+ /// The timeout value for the test
+ /// </summary>
+ public static readonly string Timeout = "Timeout";
+
+ /// <summary>
+ /// The number of times the test should be repeated
+ /// </summary>
+ public static readonly string RepeatCount = "Repeat";
+
+ /// <summary>
+ /// The maximum time in ms, above which the test is considered to have failed
+ /// </summary>
+ public static readonly string MaxTime = "MaxTime";
+
+ /// <summary>
+ /// The selected strategy for joining parameter data into test cases
+ /// </summary>
+ public static readonly string JoinType = "_JOINTYPE";
+
+ /// <summary>
+ /// The process ID of the executing assembly
+ /// </summary>
+ public static readonly string ProcessID = "_PID";
+
+ /// <summary>
+ /// The FriendlyName of the AppDomain in which the assembly is running
+ /// </summary>
+ public static readonly string AppDomain = "_APPDOMAIN";
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/RandomGenerator.cs b/NUnitLite-0.9.0/src/framework/Internal/RandomGenerator.cs
new file mode 100755
index 0000000..947d364
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/RandomGenerator.cs
@@ -0,0 +1,196 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// RandomGenerator returns a set of random values in a repeatable
+ /// way, to allow re-running of tests if necessary.
+ ///
+ /// This class is internal to the framework but exposed externally to through the TestContext
+ /// the class is used to allow for obtaining repeatable random values during a tests execution.
+ /// this class should not be used inside the framework only with a TestMethod.
+ /// </summary>
+ public class RandomGenerator
+ {
+ #region Members & Constructor
+ /// <summary>
+ /// Seed for the wrapped Random
+ /// </summary>
+ public readonly int seed;
+
+ private Random random;
+
+ /// <summary>
+ /// Lazy-loaded Random built on the readonly Seed
+ /// </summary>
+ private Random Rand
+ {
+ get
+ {
+ random = random == null ? new Random(seed) : random;
+ return random;
+ }
+ }
+
+ /// <summary>
+ /// Constructor requires Seed value in order to store it for use in Random creation
+ /// </summary>
+ /// <param name="seed"></param>
+ public RandomGenerator(int seed)
+ {
+ this.seed = seed;
+ }
+ #endregion
+
+ #region Ints
+ /// <summary>
+ /// Get Next Integer from Random
+ /// </summary>
+ /// <returns> int </returns>
+ public int GetInt()
+ {
+ return Rand.Next();
+ }
+ /// <summary>
+ /// Get Next Integer within the specified min & max from Random
+ /// </summary>
+ /// <param name="min"></param>
+ /// <param name="max"></param>
+ /// <returns> int </returns>
+ public int GetInt(int min, int max)
+ {
+ return Rand.Next(min, max);
+ }
+ #endregion
+
+ #region Shorts
+ /// <summary>
+ /// Get Next Short from Random
+ /// </summary>
+ /// <returns> short </returns>
+ public short GetShort()
+ {
+ return (short)Rand.Next(short.MinValue, short.MaxValue);
+ }
+ /// <summary>
+ /// Get Next Short within the specified min & max from Random
+ /// </summary>
+ /// <param name="min"></param>
+ /// <param name="max"></param>
+ /// <returns> short </returns>
+ public short GetShort(short min, short max)
+ {
+ return (short)Rand.Next(min, max);
+ }
+ #endregion
+
+ #region Bytes
+ /// <summary>
+ /// Get Next Byte from Random
+ /// </summary>
+ /// <returns> byte </returns>
+ public byte GetByte()
+ {
+ return (byte)Rand.Next(Byte.MinValue, Byte.MaxValue);
+ }
+ /// <summary>
+ /// Get Next Byte within the specified min & max from Random
+ /// </summary>
+ /// <param name="min"></param>
+ /// <param name="max"></param>
+ /// <returns> byte </returns>
+ public byte GetByte(byte min, byte max)
+ {
+ return (byte)Rand.Next(min, max);
+ }
+ #endregion
+
+ #region Bools
+ /// <summary>
+ /// Get Random Boolean value
+ /// </summary>
+ /// <returns> bool </returns>
+ public bool GetBool()
+ {
+ return Rand.Next(0, 2) == 0;
+ }
+ /// <summary>
+ /// Get Random Boolean value based on the probability of that value being true
+ /// </summary>
+ /// <param name="probability"></param>
+ /// <returns> bool </returns>
+ public bool GetBool(double probability)
+ {
+ return Rand.NextDouble() < Math.Abs(probability % 1.0);
+ }
+ #endregion
+
+ #region Double & Float
+ /// <summary>
+ /// Get Next Double from Random
+ /// </summary>
+ /// <returns></returns>
+ public double GetDouble()
+ {
+ return Rand.NextDouble();
+ }
+ /// <summary>
+ /// Get Next Float from Random
+ /// </summary>
+ /// <returns></returns>
+ public float GetFloat()
+ {
+ return (float)Rand.NextDouble();
+ }
+ #endregion
+
+ #region Enums
+#if CLR_2_0
+ /// <summary>
+ /// Return a random enum value representation of the specified Type
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns> T </returns>
+ public T GetEnum<T>()
+ {
+ Array enums = TypeHelper.GetEnumValues(typeof(T));
+ return (T)enums.GetValue(Rand.Next(0, enums.Length));
+ }
+#else
+ /// <summary>
+ /// Return a random enum value from the specified type
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns> object </returns>
+ public object GetEnum(Type enumType)
+ {
+ Array enums = TypeHelper.GetEnumValues(enumType);
+ return enums.GetValue(Rand.Next(0, enums.Length));
+ }
+#endif
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Randomizer.cs b/NUnitLite-0.9.0/src/framework/Internal/Randomizer.cs
new file mode 100755
index 0000000..0c6fc1c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Randomizer.cs
@@ -0,0 +1,171 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Randomizer returns a set of random values in a repeatable
+ /// way, to allow re-running of tests if necessary.
+ ///
+ /// This class is an internal framework class used for setting up tests.
+ /// It is used to generate random test parameters, for an external Randomizer please see
+ /// RandomGenerator which allows for repeatable random during test execution
+ /// </summary>
+ public class Randomizer : Random
+ {
+ #region Static Members
+ private static Random seedGenerator = new Random();
+
+#if CLR_2_0 || CLR_4_0
+ private static Dictionary<MemberInfo, Randomizer> randomizers = new Dictionary<MemberInfo, Randomizer>();
+#else
+ private static System.Collections.Hashtable randomizers = new System.Collections.Hashtable();
+#endif
+
+ /// <summary>
+ /// Get a random seed for use in creating a randomizer.
+ /// </summary>
+ public static int RandomSeed
+ {
+ get { return seedGenerator.Next(); }
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public static Randomizer GetRandomizer(MemberInfo member)
+ {
+ if (randomizers.ContainsKey(member))
+ return (Randomizer)randomizers[member];
+ else
+ {
+ Randomizer r = new Randomizer();
+ randomizers[member] = r;
+ return (Randomizer)r;
+ }
+ }
+
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public static Randomizer GetRandomizer(ParameterInfo parameter)
+ {
+ return GetRandomizer(parameter.Member);
+ }
+ #endregion
+
+ #region Constructors
+ /// <summary>
+ /// Construct a randomizer using a random seed
+ /// </summary>
+ public Randomizer() : base(RandomSeed) { }
+
+ /// <summary>
+ /// Construct a randomizer using a specified seed
+ /// </summary>
+ public Randomizer(int seed) : base(seed) { }
+ #endregion
+
+ #region Public Methods
+ /// <summary>
+ /// Return an array of random doubles between 0.0 and 1.0.
+ /// </summary>
+ /// <param name="count"></param>
+ /// <returns></returns>
+ public double[] GetDoubles(int count)
+ {
+ double[] rvals = new double[count];
+
+ for (int index = 0; index < count; index++)
+ rvals[index] = NextDouble();
+
+ return rvals;
+ }
+
+ /// <summary>
+ /// Return an array of random Enums
+ /// </summary>
+ /// <param name="count"></param>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ public object[] GetEnums(int count, Type enumType)
+ {
+ if (!enumType.IsEnum)
+ throw new ArgumentException(string.Format("The specified type: {0} was not an enum", enumType));
+
+#if !NETCF && !SILVERLIGHT
+ Array values = Enum.GetValues(enumType);
+#else
+ Array values = TypeHelper.GetEnumValues(enumType);
+#endif
+ object[] rvals = new Enum[count];
+
+ for (int index = 0; index < count; index++)
+ rvals[index] = values.GetValue(Next(values.Length));
+
+ return rvals;
+ }
+
+ /// <summary>
+ /// Return an array of random doubles with values in a specified range.
+ /// </summary>
+ public double[] GetDoubles(double min, double max, int count)
+ {
+ double range = max - min;
+ double[] rvals = new double[count];
+
+ for (int index = 0; index < count; index++)
+ rvals[index] = NextDouble() * range + min;
+
+ return rvals;
+ }
+
+ /// <summary>
+ /// Return an array of random ints with values in a specified range.
+ /// </summary>
+ public int[] GetInts(int min, int max, int count)
+ {
+ int[] ivals = new int[count];
+
+ for (int index = 0; index < count; index++)
+ ivals[index] = Next(min, max);
+
+ return ivals;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Reflect.cs b/NUnitLite-0.9.0/src/framework/Internal/Reflect.cs
new file mode 100755
index 0000000..4acc155
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Reflect.cs
@@ -0,0 +1,251 @@
+// ***********************************************************************
+// Copyright (c) 2007-2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Helper methods for inspecting a type by reflection.
+ ///
+ /// Many of these methods take ICustomAttributeProvider as an
+ /// argument to avoid duplication, even though certain attributes can
+ /// only appear on specific types of members, like MethodInfo or Type.
+ ///
+ /// In the case where a type is being examined for the presence of
+ /// an attribute, interface or named member, the Reflect methods
+ /// operate with the full name of the member being sought. This
+ /// removes the necessity of the caller having a reference to the
+ /// assembly that defines the item being sought and allows the
+ /// NUnit core to inspect assemblies that reference an older
+ /// version of the NUnit framework.
+ /// </summary>
+ public class Reflect
+ {
+ private static readonly BindingFlags AllMembers = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy;
+
+ // A zero-length Type array - not provided by System.Type for all CLR versions we support.
+ private static readonly Type[] EmptyTypes = new Type[0];
+
+ #region Get Methods of a type
+
+ /// <summary>
+ /// Examine a fixture type and return an array of methods having a
+ /// particular attribute. The array is order with base methods first.
+ /// </summary>
+ /// <param name="fixtureType">The type to examine</param>
+ /// <param name="attributeType">The attribute Type to look for</param>
+ /// <param name="inherit">Specifies whether to search the fixture type inheritance chain</param>
+ /// <returns>The array of methods found</returns>
+ public static MethodInfo[] GetMethodsWithAttribute(Type fixtureType, Type attributeType, bool inherit)
+ {
+ MethodInfoList list = new MethodInfoList();
+
+ foreach (MethodInfo method in fixtureType.GetMethods(AllMembers))
+ {
+ if (method.IsDefined(attributeType, inherit))
+ list.Add(method);
+ }
+
+ list.Sort(new BaseTypesFirstComparer());
+
+ return list.ToArray();
+ }
+
+#if CLR_2_0 || CLR_4_0
+ private class BaseTypesFirstComparer : IComparer<MethodInfo>
+ {
+ public int Compare(MethodInfo m1, MethodInfo m2)
+ {
+ if (m1 == null || m2 == null) return 0;
+
+ Type m1Type = m1.DeclaringType;
+ Type m2Type = m2.DeclaringType;
+
+ if ( m1Type == m2Type ) return 0;
+ if ( m1Type.IsAssignableFrom(m2Type) ) return -1;
+
+ return 1;
+ }
+ }
+#else
+ private class BaseTypesFirstComparer : IComparer
+ {
+ public int Compare(object x, object y)
+ {
+ MethodInfo m1 = x as MethodInfo;
+ MethodInfo m2 = y as MethodInfo;
+
+ if (m1 == null || m2 == null) return 0;
+
+ Type m1Type = m1.DeclaringType;
+ Type m2Type = m2.DeclaringType;
+
+ if (m1Type == m2Type) return 0;
+ if (m1Type.IsAssignableFrom(m2Type)) return -1;
+
+ return 1;
+ }
+ }
+#endif
+
+ /// <summary>
+ /// Examine a fixture type and return true if it has a method with
+ /// a particular attribute.
+ /// </summary>
+ /// <param name="fixtureType">The type to examine</param>
+ /// <param name="attributeType">The attribute Type to look for</param>
+ /// <param name="inherit">Specifies whether to search the fixture type inheritance chain</param>
+ /// <returns>True if found, otherwise false</returns>
+ public static bool HasMethodWithAttribute(Type fixtureType, Type attributeType, bool inherit)
+ {
+ foreach (MethodInfo method in fixtureType.GetMethods(AllMembers))
+ {
+ if (method.IsDefined(attributeType, inherit))
+ return true;
+ }
+
+ return false;
+ }
+
+ #endregion
+
+ #region Invoke Constructors
+
+ /// <summary>
+ /// Invoke the default constructor on a Type
+ /// </summary>
+ /// <param name="type">The Type to be constructed</param>
+ /// <returns>An instance of the Type</returns>
+ public static object Construct(Type type)
+ {
+ ConstructorInfo ctor = type.GetConstructor(EmptyTypes);
+ if (ctor == null)
+ throw new InvalidTestFixtureException(type.FullName + " does not have a default constructor");
+
+ return ctor.Invoke(null);
+ }
+
+ /// <summary>
+ /// Invoke a constructor on a Type with arguments
+ /// </summary>
+ /// <param name="type">The Type to be constructed</param>
+ /// <param name="arguments">Arguments to the constructor</param>
+ /// <returns>An instance of the Type</returns>
+ public static object Construct(Type type, object[] arguments)
+ {
+ if (arguments == null) return Construct(type);
+
+ Type[] argTypes = GetTypeArray(arguments);
+ ConstructorInfo ctor = type.GetConstructor(argTypes);
+ if (ctor == null)
+ throw new InvalidTestFixtureException(type.FullName + " does not have a suitable constructor");
+
+ return ctor.Invoke(arguments);
+ }
+
+ /// <summary>
+ /// Returns an array of types from an array of objects.
+ /// Used because the compact framework doesn't support
+ /// Type.GetTypeArray()
+ /// </summary>
+ /// <param name="objects">An array of objects</param>
+ /// <returns>An array of Types</returns>
+ private static Type[] GetTypeArray(object[] objects)
+ {
+ Type[] types = new Type[objects.Length];
+ int index = 0;
+ foreach (object o in objects)
+ types[index++] = o.GetType();
+ return types;
+ }
+
+ #endregion
+
+ #region Invoke Methods
+
+ /// <summary>
+ /// Invoke a parameterless method returning void on an object.
+ /// </summary>
+ /// <param name="method">A MethodInfo for the method to be invoked</param>
+ /// <param name="fixture">The object on which to invoke the method</param>
+ public static object InvokeMethod( MethodInfo method, object fixture )
+ {
+ return InvokeMethod( method, fixture, null );
+ }
+
+ /// <summary>
+ /// Invoke a method, converting any TargetInvocationException to an NUnitException.
+ /// </summary>
+ /// <param name="method">A MethodInfo for the method to be invoked</param>
+ /// <param name="fixture">The object on which to invoke the method</param>
+ /// <param name="args">The argument list for the method</param>
+ /// <returns>The return value from the invoked method</returns>
+ public static object InvokeMethod( MethodInfo method, object fixture, params object[] args )
+ {
+ if(method != null)
+ {
+ if (fixture == null && !method.IsStatic)
+ Console.WriteLine("Trying to call {0} without an instance", method.Name);
+ try
+ {
+ return method.Invoke( fixture, args );
+ }
+ catch(Exception e)
+ {
+ if (e is TargetInvocationException)
+ throw new NUnitException("Rethrown", e.InnerException);
+ else
+ throw new NUnitException("Rethrown", e);
+ }
+ }
+
+ return null;
+ }
+
+ #endregion
+
+ #region Private Constructor for static-only class
+
+ private Reflect() { }
+
+ #endregion
+
+#if CLR_2_0 || CLR_4_0
+ class MethodInfoList : List<MethodInfo> { }
+#else
+ class MethodInfoList : ArrayList
+ {
+ public new MethodInfo[] ToArray()
+ {
+ return (MethodInfo[])base.ToArray(typeof(MethodInfo));
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Results/TestCaseResult.cs b/NUnitLite-0.9.0/src/framework/Internal/Results/TestCaseResult.cs
new file mode 100755
index 0000000..b3c67fc
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Results/TestCaseResult.cs
@@ -0,0 +1,53 @@
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Represents the result of running a single test case.
+ /// </summary>
+ public class TestCaseResult : TestResult
+ {
+ /// <summary>
+ /// Construct a TestCaseResult based on a TestMethod
+ /// </summary>
+ /// <param name="test">A TestMethod to which the result applies.</param>
+ public TestCaseResult(TestMethod test) : base(test) { }
+
+ /// <summary>
+ /// Gets the number of test cases that failed
+ /// when running the test and all its children.
+ /// </summary>
+ public override int FailCount
+ {
+ get { return ResultState.Status == TestStatus.Failed ? 1 : 0; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that passed
+ /// when running the test and all its children.
+ /// </summary>
+ public override int PassCount
+ {
+ get { return ResultState.Status == TestStatus.Passed ? 1 : 0; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that were skipped
+ /// when running the test and all its children.
+ /// </summary>
+ public override int SkipCount
+ {
+ get { return ResultState.Status == TestStatus.Skipped ? 1 : 0; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that were inconclusive
+ /// when running the test and all its children.
+ /// </summary>
+ public override int InconclusiveCount
+ {
+ get { return ResultState.Status == TestStatus.Inconclusive ? 1 : 0; }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Results/TestResult.cs b/NUnitLite-0.9.0/src/framework/Internal/Results/TestResult.cs
new file mode 100755
index 0000000..524841f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Results/TestResult.cs
@@ -0,0 +1,505 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The TestResult class represents the result of a test.
+ /// </summary>
+ public abstract class TestResult : ITestResult
+ {
+ #region Fields
+
+ /// <summary>
+ /// Indicates the result of the test
+ /// </summary>
+ [CLSCompliant(false)]
+ protected ResultState resultState;
+
+ /// <summary>
+ /// The elapsed time for executing this test
+ /// </summary>
+ private TimeSpan time = TimeSpan.Zero;
+
+ /// <summary>
+ /// The test that this result pertains to
+ /// </summary>
+ [CLSCompliant(false)]
+ protected readonly ITest test;
+
+ /// <summary>
+ /// The stacktrace at the point of failure
+ /// </summary>
+ private string stackTrace;
+
+ /// <summary>
+ /// Message giving the reason for failure, error or skipping the test
+ /// </summary>
+ [CLSCompliant(false)]
+ protected string message;
+
+ /// <summary>
+ /// Number of asserts executed by this test
+ /// </summary>
+ [CLSCompliant(false)]
+ protected int assertCount = 0;
+
+ /// <summary>
+ /// The point in processing at which a failure occured
+ /// </summary>
+ private FailureSite failureSite;
+
+ /// <summary>
+ /// List of child results
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ private System.Collections.Generic.List<ITestResult> children;
+#else
+ private System.Collections.ArrayList children;
+#endif
+
+ #endregion
+
+ #region Constructor
+
+ /// <summary>
+ /// Construct a test result given a Test
+ /// </summary>
+ /// <param name="test">The test to be used</param>
+ public TestResult(ITest test)
+ {
+ this.test = test;
+ this.resultState = ResultState.Inconclusive;
+ }
+
+ #endregion
+
+ #region ITestResult Members
+
+ /// <summary>
+ /// Gets the test with which this result is associated.
+ /// </summary>
+ public ITest Test
+ {
+ get { return test; }
+ }
+
+ /// <summary>
+ /// Gets the ResultState of the test result, which
+ /// indicates the success or failure of the test.
+ /// </summary>
+ public ResultState ResultState
+ {
+ get { return resultState; }
+ }
+
+ /// <summary>
+ /// Gets the name of the test result
+ /// </summary>
+ public virtual string Name
+ {
+ get { return test.Name; }
+ }
+
+ /// <summary>
+ /// Gets the full name of the test result
+ /// </summary>
+ public virtual string FullName
+ {
+ get { return test.FullName; }
+ }
+
+ /// <summary>
+ /// Gets or sets the elapsed time for running the test
+ /// </summary>
+ public TimeSpan Duration
+ {
+ get { return time; }
+ set { time = value; }
+ }
+
+ /// <summary>
+ /// Gets the message associated with a test
+ /// failure or with not running the test
+ /// </summary>
+ public string Message
+ {
+ get { return message; }
+ }
+
+ /// <summary>
+ /// Gets any stacktrace associated with an
+ /// error or failure. Not available in
+ /// the Compact Framework 1.0.
+ /// </summary>
+ public virtual string StackTrace
+ {
+ get { return stackTrace; }
+ }
+
+ /// <summary>
+ /// Gets the failure site, which indicates the point
+ /// in the processing of the test where it failed.
+ /// </summary>
+ public FailureSite FailureSite
+ {
+ get { return failureSite; }
+ }
+
+ /// <summary>
+ /// Gets or sets the count of asserts executed
+ /// when running the test.
+ /// </summary>
+ public int AssertCount
+ {
+ get { return assertCount; }
+ set { assertCount = value; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that failed
+ /// when running the test and all its children.
+ /// </summary>
+ public abstract int FailCount { get; }
+
+ /// <summary>
+ /// Gets the number of test cases that passed
+ /// when running the test and all its children.
+ /// </summary>
+ public abstract int PassCount { get; }
+
+ /// <summary>
+ /// Gets the number of test cases that were skipped
+ /// when running the test and all its children.
+ /// </summary>
+ public abstract int SkipCount { get; }
+
+ /// <summary>
+ /// Gets the number of test cases that were inconclusive
+ /// when running the test and all its children.
+ /// </summary>
+ public abstract int InconclusiveCount { get; }
+
+ /// <summary>
+ /// Indicates whether this result has any child results.
+ /// Test HasChildren before accessing Children to avoid
+ /// the creation of an empty collection.
+ /// </summary>
+ public bool HasChildren
+ {
+ get { return children != null && children.Count > 0; }
+ }
+
+ /// <summary>
+ /// Gets the collection of child results.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public System.Collections.Generic.IList<ITestResult> Children
+ {
+ get
+ {
+ if (children == null)
+ children = new System.Collections.Generic.List<ITestResult>();
+
+ return children;
+ }
+ }
+#else
+ public System.Collections.IList Children
+ {
+ get
+ {
+ if (children == null)
+ children = new System.Collections.ArrayList();
+
+ return children;
+ }
+ }
+#endif
+
+ #endregion
+
+ #region IXmlNodeBuilder Members
+
+ /// <summary>
+ /// Returns the Xml representation of the result.
+ /// </summary>
+ /// <param name="recursive">If true, descendant results are included</param>
+ /// <returns>An XmlNode representing the result</returns>
+ public XmlNode ToXml(bool recursive)
+ {
+ XmlNode topNode = XmlNode.CreateTopLevelElement("dummy");
+
+ AddToXml(topNode, recursive);
+
+ return topNode.FirstChild;
+ }
+
+ /// <summary>
+ /// Adds the XML representation of the result as a child of the
+ /// supplied parent node..
+ /// </summary>
+ /// <param name="parentNode">The parent node.</param>
+ /// <param name="recursive">If true, descendant results are included</param>
+ /// <returns></returns>
+ public virtual XmlNode AddToXml(XmlNode parentNode, bool recursive)
+ {
+ // A result node looks like a test node with extra info added
+ XmlNode thisNode = this.test.AddToXml(parentNode, false);
+
+ thisNode.AddAttribute("result", ResultState.Status.ToString());
+ if (ResultState.Label != string.Empty) // && ResultState.Label != ResultState.Status.ToString())
+ thisNode.AddAttribute("label", ResultState.Label);
+
+ thisNode.AddAttribute("time", this.Duration.ToString());
+
+ if (this.test is TestSuite)
+ {
+ thisNode.AddAttribute("total", (PassCount + FailCount + SkipCount + InconclusiveCount).ToString());
+ thisNode.AddAttribute("passed", PassCount.ToString());
+ thisNode.AddAttribute("failed", FailCount.ToString());
+ thisNode.AddAttribute("inconclusive", InconclusiveCount.ToString());
+ thisNode.AddAttribute("skipped", SkipCount.ToString());
+ }
+
+ thisNode.AddAttribute("asserts", this.AssertCount.ToString());
+
+ switch (ResultState.Status)
+ {
+ case TestStatus.Failed:
+ AddFailureElement(thisNode);
+ break;
+ case TestStatus.Skipped:
+ AddReasonElement(thisNode);
+ break;
+ case TestStatus.Passed:
+ case TestStatus.Inconclusive:
+ if (this.Message != null)
+ AddReasonElement(thisNode);
+ break;
+ }
+
+ if (recursive && HasChildren)
+ foreach (TestResult child in Children)
+ child.AddToXml(thisNode, recursive);
+
+ return thisNode;
+ }
+
+ #endregion
+
+ #region Other Public Methods
+
+ /// <summary>
+ /// Add a child result
+ /// </summary>
+ /// <param name="result">The child result to be added</param>
+ public virtual void AddResult(TestResult result)
+ {
+ this.Children.Add(result);
+
+ this.assertCount += result.AssertCount;
+
+ switch (result.ResultState.Status)
+ {
+ case TestStatus.Passed:
+
+ if (this.resultState.Status == TestStatus.Inconclusive)
+ SetResult(ResultState.Success);
+
+ break;
+
+ case TestStatus.Failed:
+
+ if (this.resultState.Status != TestStatus.Failed)
+ SetResult(ResultState.Failure, "One or more child tests had errors");
+
+ break;
+
+ case TestStatus.Skipped:
+
+ switch (result.ResultState.Label)
+ {
+ case "Invalid":
+
+ if (this.ResultState != ResultState.NotRunnable && this.ResultState.Status != TestStatus.Failed)
+ SetResult(ResultState.Failure, "One or more child tests had errors");
+
+ break;
+
+ case "Ignored":
+
+ if (this.ResultState.Status == TestStatus.Inconclusive || this.ResultState.Status == TestStatus.Passed)
+ SetResult(ResultState.Ignored, "One or more child tests were ignored");
+
+ break;
+
+ default:
+
+ // Tests skipped for other reasons do not change the outcome
+ // of the containing suite when added.
+
+ break;
+ }
+
+ break;
+
+ case TestStatus.Inconclusive:
+
+ // An inconclusive result does not change the outcome
+ // of the containing suite when added.
+
+ break;
+ }
+ }
+
+ /// <summary>
+ /// Set the result of the test
+ /// </summary>
+ /// <param name="resultState">The ResultState to use in the result</param>
+ public void SetResult(ResultState resultState)
+ {
+ SetResult(resultState, null, null, FailureSite.Test);
+ }
+
+ /// <summary>
+ /// Set the result of the test
+ /// </summary>
+ /// <param name="resultState">The ResultState to use in the result</param>
+ /// <param name="message">A message associated with the result state</param>
+ public void SetResult(ResultState resultState, string message)
+ {
+ SetResult(resultState, message, null, FailureSite.Test);
+ }
+
+ /// <summary>
+ /// Set the result of the test
+ /// </summary>
+ /// <param name="resultState">The ResultState to use in the result</param>
+ /// <param name="message">A message associated with the result state</param>
+ /// <param name="stackTrace">Stack trace giving the location of the command</param>
+ public void SetResult(ResultState resultState, string message, string stackTrace)
+ {
+ SetResult(resultState, message, stackTrace, FailureSite.Test);
+ }
+
+ /// <summary>
+ /// Set the result of the test
+ /// </summary>
+ /// <param name="resultState">The ResultState to use in the result</param>
+ /// <param name="message">A message associated with the result state</param>
+ /// <param name="stackTrace">Stack trace giving the location of the command</param>
+ /// <param name="site">The FailureSite for any failure or error</param>
+ public void SetResult(ResultState resultState, string message, string stackTrace, FailureSite site)
+ {
+ this.resultState = resultState;
+ this.message = message;
+ this.stackTrace = stackTrace;
+ this.failureSite = site;
+ }
+
+ /// <summary>
+ /// Set the test result based on the type of exception thrown
+ /// and the site of the Failure.
+ /// </summary>
+ /// <param name="ex">The exception that was thrown</param>
+ /// <param name="site">The FailureSite</param>
+ public virtual void RecordException(Exception ex, FailureSite site)
+ {
+ RecordException(ex);
+ }
+
+ /// <summary>
+ /// Set the test result based on the type of exception thrown
+ /// </summary>
+ /// <param name="ex">The exception that was thrown</param>
+ public void RecordException(Exception ex)
+ {
+ if (ex is NUnitException)
+ ex = ex.InnerException;
+
+ if (ex is System.Threading.ThreadAbortException)
+ SetResult(ResultState.Cancelled, "Test cancelled by user", ex.StackTrace);
+ else if (ex is AssertionException)
+ SetResult(ResultState.Failure, ex.Message, StackFilter.Filter(ex.StackTrace));
+ else if (ex is IgnoreException)
+ SetResult(ResultState.Ignored, ex.Message, StackFilter.Filter(ex.StackTrace));
+ else if (ex is InconclusiveException)
+ SetResult(ResultState.Inconclusive, ex.Message, StackFilter.Filter(ex.StackTrace));
+ else if (ex is SuccessException)
+ SetResult(ResultState.Success, ex.Message, StackFilter.Filter(ex.StackTrace));
+ else
+ SetResult(ResultState.Error,
+ ExceptionHelper.BuildMessage(ex),
+ ExceptionHelper.BuildStackTrace(ex));
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ /// <summary>
+ /// Adds a reason element to a node and returns it.
+ /// </summary>
+ /// <param name="targetNode">The target node.</param>
+ /// <returns>The new reason element.</returns>
+ private XmlNode AddReasonElement(XmlNode targetNode)
+ {
+ XmlNode reasonNode = targetNode.AddElement("reason");
+ reasonNode.AddElement("message").TextContent = this.Message;
+ return reasonNode;
+ }
+
+ /// <summary>
+ /// Adds a failure element to a node and returns it.
+ /// </summary>
+ /// <param name="targetNode">The target node.</param>
+ /// <returns>The new failure element.</returns>
+ private XmlNode AddFailureElement(XmlNode targetNode)
+ {
+ XmlNode failureNode = targetNode.AddElement("failure");
+
+ if (this.Message != null)
+ {
+ failureNode.AddElement("message").TextContent = this.Message;
+ }
+
+ if (this.StackTrace != null)
+ {
+ failureNode.AddElement("stack-trace").TextContent = this.StackTrace;
+ }
+
+ return failureNode;
+ }
+
+ //private static bool IsTestCase(ITest test)
+ //{
+ // return !(test is TestSuite);
+ //}
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Results/TestSuiteResult.cs b/NUnitLite-0.9.0/src/framework/Internal/Results/TestSuiteResult.cs
new file mode 100755
index 0000000..6df4cb6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Results/TestSuiteResult.cs
@@ -0,0 +1,97 @@
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Represents the result of running a test suite
+ /// </summary>
+ public class TestSuiteResult : TestResult
+ {
+ private int passCount = 0;
+ private int failCount = 0;
+ private int skipCount = 0;
+ private int inconclusiveCount = 0;
+
+ /// <summary>
+ /// Construct a TestSuiteResult base on a TestSuite
+ /// </summary>
+ /// <param name="suite">The TestSuite to which the result applies</param>
+ public TestSuiteResult(TestSuite suite) : base(suite) { }
+
+ /// <summary>
+ /// Gets the number of test cases that failed
+ /// when running the test and all its children.
+ /// </summary>
+ public override int FailCount
+ {
+ get { return this.failCount; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that passed
+ /// when running the test and all its children.
+ /// </summary>
+ public override int PassCount
+ {
+ get { return this.passCount; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that were skipped
+ /// when running the test and all its children.
+ /// </summary>
+ public override int SkipCount
+ {
+ get { return this.skipCount; }
+ }
+
+ /// <summary>
+ /// Gets the number of test cases that were inconclusive
+ /// when running the test and all its children.
+ /// </summary>
+ public override int InconclusiveCount
+ {
+ get { return this.inconclusiveCount; }
+ }
+
+ /// <summary>
+ /// Add a child result
+ /// </summary>
+ /// <param name="result">The child result to be added</param>
+ public override void AddResult(TestResult result)
+ {
+ base.AddResult(result);
+
+ this.passCount += result.PassCount;
+ this.failCount += result.FailCount;
+ this.skipCount += result.SkipCount;
+ this.inconclusiveCount += result.InconclusiveCount;
+ }
+
+ /// <summary>
+ /// Set the test result based on the type of exception thrown
+ /// and the site of the Failure.
+ /// </summary>
+ /// <param name="ex">The exception that was thrown</param>
+ /// <param name="site">The FailureSite</param>
+ public override void RecordException(Exception ex, FailureSite site)
+ {
+ RecordException(ex);
+
+ if (site == FailureSite.SetUp)
+ {
+ switch (ResultState.Status)
+ {
+ case TestStatus.Skipped:
+ this.skipCount = this.test.TestCaseCount;
+ break;
+
+ case TestStatus.Failed:
+ this.failCount = this.test.TestCaseCount;
+ break;
+ }
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/RuntimeFramework.cs b/NUnitLite-0.9.0/src/framework/Internal/RuntimeFramework.cs
new file mode 100755
index 0000000..a34c390
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/RuntimeFramework.cs
@@ -0,0 +1,582 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.IO;
+using System.Reflection;
+using Microsoft.Win32;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Enumeration identifying a common language
+ /// runtime implementation.
+ /// </summary>
+ public enum RuntimeType
+ {
+ /// <summary>Any supported runtime framework</summary>
+ Any,
+ /// <summary>Microsoft .NET Framework</summary>
+ Net,
+ /// <summary>Microsoft .NET Compact Framework</summary>
+ NetCF,
+ /// <summary>Microsoft Shared Source CLI</summary>
+ SSCLI,
+ /// <summary>Mono</summary>
+ Mono,
+ /// <summary>Silverlight</summary>
+ Silverlight,
+ /// <summary>MonoTouch</summary>
+ MonoTouch
+ }
+
+ /// <summary>
+ /// RuntimeFramework represents a particular version
+ /// of a common language runtime implementation.
+ /// </summary>
+ [Serializable]
+ public sealed class RuntimeFramework
+ {
+ #region Static and Instance Fields
+
+ /// <summary>
+ /// DefaultVersion is an empty Version, used to indicate that
+ /// NUnit should select the CLR version to use for the test.
+ /// </summary>
+ public static readonly Version DefaultVersion = new Version(0,0);
+
+ private static RuntimeFramework currentFramework;
+
+ private RuntimeType runtime;
+ private Version frameworkVersion;
+ private Version clrVersion;
+ private string displayName;
+ #endregion
+
+ #region Constructor
+
+ /// <summary>
+ /// Construct from a runtime type and version. If the version has
+ /// two parts, it is taken as a framework version. If it has three
+ /// or more, it is taken as a CLR version. In either case, the other
+ /// version is deduced based on the runtime type and provided version.
+ /// </summary>
+ /// <param name="runtime">The runtime type of the framework</param>
+ /// <param name="version">The version of the framework</param>
+ public RuntimeFramework( RuntimeType runtime, Version version)
+ {
+ this.runtime = runtime;
+
+ this.frameworkVersion = runtime == RuntimeType.Mono && version.Major == 1
+ ? new Version(1, 0)
+ : new Version(version.Major, version.Minor);
+ this.clrVersion = version;
+
+ if (version.Build < 0)
+ this.clrVersion = GetClrVersion(runtime, version);
+
+ this.displayName = GetDefaultDisplayName(runtime, version);
+ }
+
+ private static Version GetClrVersion(RuntimeType runtime, Version version)
+ {
+ switch (runtime)
+ {
+ case RuntimeType.Silverlight:
+ return version.Major >= 4
+ ? new Version(4, 0, 60310)
+ : new Version(2, 0, 50727);
+
+ default:
+ switch (version.Major)
+ {
+ case 4:
+ return new Version(4, 0, 30319);
+
+ case 2:
+ case 3:
+ return new Version(2, 0, 50727);
+
+ case 1:
+ return version.Minor == 0 && runtime != RuntimeType.Mono
+ ? new Version(1, 0, 3705)
+ : new Version(1, 1, 4322);
+
+ default:
+ return version;
+ }
+ }
+ }
+
+ #endregion
+
+ #region Properties
+ /// <summary>
+ /// Static method to return a RuntimeFramework object
+ /// for the framework that is currently in use.
+ /// </summary>
+ public static RuntimeFramework CurrentFramework
+ {
+ get
+ {
+ if (currentFramework == null)
+ {
+#if SILVERLIGHT
+ currentFramework = new RuntimeFramework(
+ RuntimeType.Silverlight,
+ new Version(Environment.Version.Major, Environment.Version.Minor));
+#else
+ Type monoRuntimeType = Type.GetType("Mono.Runtime", false);
+ Type monoTouchType = Type.GetType("MonoTouch.UIKit.UIApplicationDelegate, monotouch");
+ bool isMonoTouch = monoTouchType != null;
+ bool isMono = monoRuntimeType != null;
+
+ RuntimeType runtime = isMonoTouch
+ ? RuntimeType.MonoTouch
+ : isMono
+ ? RuntimeType.Mono
+ : Environment.OSVersion.Platform == PlatformID.WinCE
+ ? RuntimeType.NetCF
+ : RuntimeType.Net;
+
+ int major = Environment.Version.Major;
+ int minor = Environment.Version.Minor;
+
+ if (isMono)
+ {
+ switch (major)
+ {
+ case 1:
+ minor = 0;
+ break;
+ case 2:
+ major = 3;
+ minor = 5;
+ break;
+ }
+ }
+ else /* It's windows */
+ if (major == 2)
+ {
+ RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework");
+ if (key != null)
+ {
+ string installRoot = key.GetValue("InstallRoot") as string;
+ if (installRoot != null)
+ {
+ if (Directory.Exists(Path.Combine(installRoot, "v3.5")))
+ {
+ major = 3;
+ minor = 5;
+ }
+ else if (Directory.Exists(Path.Combine(installRoot, "v3.0")))
+ {
+ major = 3;
+ minor = 0;
+ }
+ }
+ }
+ }
+
+ currentFramework = new RuntimeFramework(runtime, new Version(major, minor));
+ currentFramework.clrVersion = Environment.Version;
+
+ if (isMono)
+ {
+ MethodInfo getDisplayNameMethod = monoRuntimeType.GetMethod(
+ "GetDisplayName", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.ExactBinding);
+ if (getDisplayNameMethod != null)
+ currentFramework.displayName = (string)getDisplayNameMethod.Invoke(null, new object[0]);
+ }
+#endif
+ }
+
+ return currentFramework;
+ }
+ }
+
+ /// <summary>
+ /// The type of this runtime framework
+ /// </summary>
+ public RuntimeType Runtime
+ {
+ get { return runtime; }
+ }
+
+ /// <summary>
+ /// The framework version for this runtime framework
+ /// </summary>
+ public Version FrameworkVersion
+ {
+ get { return frameworkVersion; }
+ }
+
+ /// <summary>
+ /// The CLR version for this runtime framework
+ /// </summary>
+ public Version ClrVersion
+ {
+ get { return clrVersion; }
+ }
+
+ /// <summary>
+ /// Return true if any CLR version may be used in
+ /// matching this RuntimeFramework object.
+ /// </summary>
+ public bool AllowAnyVersion
+ {
+ get { return this.clrVersion == DefaultVersion; }
+ }
+
+ /// <summary>
+ /// Returns the Display name for this framework
+ /// </summary>
+ public string DisplayName
+ {
+ get { return displayName; }
+ }
+
+#if !NUNITLITE
+ private static RuntimeFramework[] availableFrameworks;
+
+ /// <summary>
+ /// Gets an array of all available frameworks
+ /// </summary>
+ // TODO: Special handling for netcf
+ public static RuntimeFramework[] AvailableFrameworks
+ {
+ get
+ {
+ if (availableFrameworks == null)
+ {
+ FrameworkList frameworks = new FrameworkList();
+
+ AppendDotNetFrameworks(frameworks);
+ AppendDefaultMonoFramework(frameworks);
+
+ // NYI
+ //AppendMonoFrameworks(frameworks);
+
+ availableFrameworks = frameworks.ToArray();
+ }
+
+ return availableFrameworks;
+ }
+ }
+
+ /// <summary>
+ /// Returns true if the current RuntimeFramework is available.
+ /// In the current implementation, only Mono and Microsoft .NET
+ /// are supported.
+ /// </summary>
+ /// <returns>True if it's available, false if not</returns>
+ public bool IsAvailable
+ {
+ get
+ {
+ foreach (RuntimeFramework framework in AvailableFrameworks)
+ if (this.Supports(framework))
+ return true;
+
+ return false;
+ }
+ }
+#endif
+
+ #endregion
+
+ #region Public Methods
+
+ /// <summary>
+ /// Parses a string representing a RuntimeFramework.
+ /// The string may be just a RuntimeType name or just
+ /// a Version or a hyphentated RuntimeType-Version or
+ /// a Version prefixed by 'v'.
+ /// </summary>
+ /// <param name="s"></param>
+ /// <returns></returns>
+ public static RuntimeFramework Parse(string s)
+ {
+ RuntimeType runtime = RuntimeType.Any;
+ Version version = DefaultVersion;
+
+ string[] parts = s.Split(new char[] { '-' });
+ if (parts.Length == 2)
+ {
+ runtime = (RuntimeType)System.Enum.Parse(typeof(RuntimeType), parts[0], true);
+ string vstring = parts[1];
+ if (vstring != "")
+ version = new Version(vstring);
+ }
+ else if (char.ToLower(s[0]) == 'v')
+ {
+ version = new Version(s.Substring(1));
+ }
+ else if (IsRuntimeTypeName(s))
+ {
+ runtime = (RuntimeType)System.Enum.Parse(typeof(RuntimeType), s, true);
+ }
+ else
+ {
+ version = new Version(s);
+ }
+
+ return new RuntimeFramework(runtime, version);
+ }
+
+#if !NUNITLITE
+ /// <summary>
+ /// Returns the best available framework that matches a target framework.
+ /// If the target framework has a build number specified, then an exact
+ /// match is needed. Otherwise, the matching framework with the highest
+ /// build number is used.
+ /// </summary>
+ /// <param name="target"></param>
+ /// <returns></returns>
+ public static RuntimeFramework GetBestAvailableFramework(RuntimeFramework target)
+ {
+ RuntimeFramework result = target;
+
+ if (target.ClrVersion.Build < 0)
+ {
+ foreach (RuntimeFramework framework in AvailableFrameworks)
+ if (framework.Supports(target) &&
+ framework.ClrVersion.Build > result.ClrVersion.Build)
+ {
+ result = framework;
+ }
+ }
+
+ return result;
+ }
+#endif
+
+ /// <summary>
+ /// Overridden to return the short name of the framework
+ /// </summary>
+ /// <returns></returns>
+ public override string ToString()
+ {
+ if (this.AllowAnyVersion)
+ {
+ return runtime.ToString().ToLower();
+ }
+ else
+ {
+ string vstring = frameworkVersion.ToString();
+ if (runtime == RuntimeType.Any)
+ return "v" + vstring;
+ else
+ return runtime.ToString().ToLower() + "-" + vstring;
+ }
+ }
+
+ /// <summary>
+ /// Returns true if the current framework matches the
+ /// one supplied as an argument. Two frameworks match
+ /// if their runtime types are the same or either one
+ /// is RuntimeType.Any and all specified version components
+ /// are equal. Negative (i.e. unspecified) version
+ /// components are ignored.
+ /// </summary>
+ /// <param name="target">The RuntimeFramework to be matched.</param>
+ /// <returns>True on match, otherwise false</returns>
+ public bool Supports(RuntimeFramework target)
+ {
+ if (this.Runtime != RuntimeType.Any
+ && target.Runtime != RuntimeType.Any
+ && this.Runtime != target.Runtime)
+ return false;
+
+ if (this.AllowAnyVersion || target.AllowAnyVersion)
+ return true;
+
+ if (!VersionsMatch(this.ClrVersion, target.ClrVersion))
+ return false;
+
+ return Runtime == RuntimeType.Silverlight
+ ? this.frameworkVersion.Major == target.FrameworkVersion.Major && this.frameworkVersion.Minor == target.FrameworkVersion.Minor
+ : this.FrameworkVersion.Major >= target.FrameworkVersion.Major && this.FrameworkVersion.Minor >= target.FrameworkVersion.Minor;
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private static bool IsRuntimeTypeName(string name)
+ {
+ foreach (string item in TypeHelper.GetEnumNames(typeof(RuntimeType)))
+ if (item.ToLower() == name.ToLower())
+ return true;
+
+ return false;
+ }
+
+ private static string GetDefaultDisplayName(RuntimeType runtime, Version version)
+ {
+ if (version == DefaultVersion)
+ return runtime.ToString();
+ else if (runtime == RuntimeType.Any)
+ return "v" + version.ToString();
+ else
+ return runtime.ToString() + " " + version.ToString();
+ }
+
+ private static bool VersionsMatch(Version v1, Version v2)
+ {
+ return v1.Major == v2.Major &&
+ v1.Minor == v2.Minor &&
+ (v1.Build < 0 || v2.Build < 0 || v1.Build == v2.Build) &&
+ (v1.Revision < 0 || v2.Revision < 0 || v1.Revision == v2.Revision);
+ }
+
+#if !NUNITLITE
+ private static void AppendMonoFrameworks(FrameworkList frameworks)
+ {
+ if (Environment.OSVersion.Platform == PlatformID.Win32NT)
+ AppendAllMonoFrameworks(frameworks);
+ else
+ AppendDefaultMonoFramework(frameworks);
+ }
+
+ private static void AppendAllMonoFrameworks(FrameworkList frameworks)
+ {
+ // TODO: Find multiple installed Mono versions under Linux
+ if (Environment.OSVersion.Platform == PlatformID.Win32NT)
+ {
+ // Use registry to find alternate versions
+ RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Novell\Mono");
+ if (key == null) return;
+
+ foreach (string version in key.GetSubKeyNames())
+ {
+ RegistryKey subKey = key.OpenSubKey(version);
+ string monoPrefix = subKey.GetValue("SdkInstallRoot") as string;
+
+ AppendMonoFramework(frameworks, monoPrefix, version);
+ }
+ }
+ else
+ AppendDefaultMonoFramework(frameworks);
+ }
+
+ // This method works for Windows and Linux but currently
+ // is only called under Linux.
+ private static void AppendDefaultMonoFramework(FrameworkList frameworks)
+ {
+ string monoPrefix = null;
+ string version = null;
+
+ if (Environment.OSVersion.Platform == PlatformID.Win32NT)
+ {
+ RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Novell\Mono");
+ if (key != null)
+ {
+ version = key.GetValue("DefaultCLR") as string;
+ if (version != null && version != "")
+ {
+ key = key.OpenSubKey(version);
+ if (key != null)
+ monoPrefix = key.GetValue("SdkInstallRoot") as string;
+ }
+ }
+ }
+ else // Assuming we're currently running Mono - change if more runtimes are added
+ {
+ string libMonoDir = Path.GetDirectoryName(typeof(object).Assembly.Location);
+ monoPrefix = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(libMonoDir)));
+ }
+
+ AppendMonoFramework(frameworks, monoPrefix, version);
+ }
+
+ private static void AppendMonoFramework(FrameworkList frameworks, string monoPrefix, string version)
+ {
+ if (monoPrefix != null)
+ {
+ string displayFmt = version != null
+ ? "Mono " + version + " - {0} Profile"
+ : "Mono {0} Profile";
+
+ if (File.Exists(Path.Combine(monoPrefix, "lib/mono/1.0/mscorlib.dll")))
+ {
+ RuntimeFramework framework = new RuntimeFramework(RuntimeType.Mono, new Version(1, 1, 4322));
+ framework.displayName = string.Format(displayFmt, "1.0");
+ frameworks.Add(framework);
+ }
+
+ if (File.Exists(Path.Combine(monoPrefix, "lib/mono/2.0/mscorlib.dll")))
+ {
+ RuntimeFramework framework = new RuntimeFramework(RuntimeType.Mono, new Version(2, 0, 50727));
+ framework.displayName = string.Format(displayFmt, "2.0");
+ frameworks.Add(framework);
+ }
+
+ if (File.Exists(Path.Combine(monoPrefix, "lib/mono/4.0/mscorlib.dll")))
+ {
+ RuntimeFramework framework = new RuntimeFramework(RuntimeType.Mono, new Version(4, 0, 30319));
+ framework.displayName = string.Format(displayFmt, "4.0");
+ frameworks.Add(framework);
+ }
+ }
+ }
+
+ private static void AppendDotNetFrameworks(FrameworkList frameworks)
+ {
+ if (Environment.OSVersion.Platform == PlatformID.Win32NT)
+ {
+ RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\.NETFramework\policy");
+ if (key != null)
+ {
+ foreach (string name in key.GetSubKeyNames())
+ {
+ if (name.StartsWith("v"))
+ {
+ RegistryKey key2 = key.OpenSubKey(name);
+ foreach (string build in key2.GetValueNames())
+ frameworks.Add(new RuntimeFramework(RuntimeType.Net, new Version(name.Substring(1) + "." + build)));
+ }
+ }
+ }
+ }
+ }
+#endif
+
+#if CLR_2_0 || CLR_4_0
+ class FrameworkList : System.Collections.Generic.List<RuntimeFramework> { }
+#else
+ class FrameworkList : System.Collections.ArrayList
+ {
+ public new RuntimeFramework[] ToArray()
+ {
+ return (RuntimeFramework[])base.ToArray(typeof(RuntimeFramework));
+ }
+ }
+#endif
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/StackFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/StackFilter.cs
new file mode 100755
index 0000000..34d571b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/StackFilter.cs
@@ -0,0 +1,52 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using System.IO;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// StackFilter class is used to remove internal NUnit
+ /// entries from a stack trace so that the resulting
+ /// trace provides better information about the test.
+ /// </summary>
+ public class StackFilter
+ {
+ /// <summary>
+ /// Filters a raw stack trace and returns the result.
+ /// </summary>
+ /// <param name="rawTrace">The original stack trace</param>
+ /// <returns>A filtered stack trace</returns>
+ public static string Filter(string rawTrace)
+ {
+ if (rawTrace == null) return null;
+
+ StringReader sr = new StringReader(rawTrace);
+ StringWriter sw = new StringWriter();
+
+ try
+ {
+ string line;
+ while ((line = sr.ReadLine()) != null && line.IndexOf("NUnit.Framework.Assert") >= 0)
+ /*Skip*/
+ ;
+
+ while (line != null)
+ {
+ sw.WriteLine(line);
+ line = sr.ReadLine();
+ }
+ }
+ catch (Exception)
+ {
+ return rawTrace;
+ }
+
+ return sw.ToString();
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/StringUtil.cs b/NUnitLite-0.9.0/src/framework/Internal/StringUtil.cs
new file mode 100755
index 0000000..c98bc60
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/StringUtil.cs
@@ -0,0 +1,40 @@
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Provides methods to support legacy string comparison methods.
+ /// </summary>
+ public class StringUtil
+ {
+ /// <summary>
+ /// Compares two strings for equality, ignoring case if requested.
+ /// </summary>
+ /// <param name="strA">The first string.</param>
+ /// <param name="strB">The second string..</param>
+ /// <param name="ignoreCase">if set to <c>true</c>, the case of the letters in the strings is ignored.</param>
+ /// <returns>Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if
+ /// strB is sorted first</returns>
+ public static int Compare(string strA, string strB, bool ignoreCase)
+ {
+#if SILVERLIGHT
+ StringComparison comparison = ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringComparison.InvariantCulture;
+ return string.Compare(strA, strB, comparison);
+#else
+ return string.Compare(strA, strB, ignoreCase);
+#endif
+ }
+
+ /// <summary>
+ /// Compares two strings for equality, ignoring case if requested.
+ /// </summary>
+ /// <param name="strA">The first string.</param>
+ /// <param name="strB">The second string..</param>
+ /// <param name="ignoreCase">if set to <c>true</c>, the case of the letters in the strings is ignored.</param>
+ /// <returns>True if the strings are equivalent, false if not.</returns>
+ public static bool StringsEqual(string strA, string strB, bool ignoreCase)
+ {
+ return Compare(strA, strB, ignoreCase) == 0;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/TestExecutionContext.cs b/NUnitLite-0.9.0/src/framework/Internal/TestExecutionContext.cs
new file mode 100755
index 0000000..915ee22
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/TestExecutionContext.cs
@@ -0,0 +1,625 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Collections.Specialized;
+using System.IO;
+using System.Diagnostics;
+using System.Globalization;
+using System.Threading;
+
+#if !NUNITLITE
+using System.Security.Principal;
+#endif
+
+using NUnit.Framework.Api;
+#if !NETCF
+using System.Runtime.Remoting.Messaging;
+#endif
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Helper class used to save and restore certain static or
+ /// singleton settings in the environment that affect tests
+ /// or which might be changed by the user tests.
+ ///
+ /// An internal class is used to hold settings and a stack
+ /// of these objects is pushed and popped as Save and Restore
+ /// are called.
+ ///
+ /// Static methods for each setting forward to the internal
+ /// object on the top of the stack.
+ /// </summary>
+ public class TestExecutionContext
+#if !SILVERLIGHT && !NETCF
+ : ILogicalThreadAffinative
+#endif
+ {
+ #region Instance Fields
+
+ /// <summary>
+ /// Link to a prior saved context
+ /// </summary>
+ public TestExecutionContext prior;
+
+ /// <summary>
+ /// The currently executing test
+ /// </summary>
+ private Test currentTest;
+
+ /// <summary>
+ /// The time the test began execution
+ /// </summary>
+ private DateTime startTime;
+
+ /// <summary>
+ /// The active TestResult for the current test
+ /// </summary>
+ private TestResult currentResult;
+
+ /// <summary>
+ /// The work directory to receive test output
+ /// </summary>
+ private string workDirectory;
+
+ /// <summary>
+ /// The object on which tests are currently being executed - i.e. the user fixture object
+ /// </summary>
+ private object testObject;
+
+ /// <summary>
+ /// The event listener currently receiving notifications
+ /// </summary>
+ private ITestListener listener = TestListener.NULL;
+
+ /// <summary>
+ /// The number of assertions for the current test
+ /// </summary>
+ private int assertCount;
+
+ /// <summary>
+ /// Indicates whether execution should terminate after the first error
+ /// </summary>
+ private bool stopOnError;
+
+ /// <summary>
+ /// Default timeout for test cases
+ /// </summary>
+ private int testCaseTimeout;
+
+ private RandomGenerator random;
+
+#if !NETCF
+ /// <summary>
+ /// The current culture
+ /// </summary>
+ private CultureInfo currentCulture;
+
+ /// <summary>
+ /// The current UI culture
+ /// </summary>
+ private CultureInfo currentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Destination for standard output
+ /// </summary>
+ private TextWriter outWriter;
+
+ /// <summary>
+ /// Destination for standard error
+ /// </summary>
+ private TextWriter errorWriter;
+
+ /// <summary>
+ /// Indicates whether trace is enabled
+ /// </summary>
+ private bool tracing;
+
+ /// <summary>
+ /// Destination for Trace output
+ /// </summary>
+ private TextWriter traceWriter;
+#endif
+
+#if !NUNITLITE
+ /// <summary>
+ /// Indicates whether logging is enabled
+ /// </summary>
+ private bool logging;
+
+ /// <summary>
+ /// The current working directory
+ /// </summary>
+ private string currentDirectory;
+
+ private Log4NetCapture logCapture;
+
+ /// <summary>
+ /// The current Principal.
+ /// </summary>
+ private IPrincipal currentPrincipal;
+#endif
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestExecutionContext"/> class.
+ /// </summary>
+ public TestExecutionContext()
+ {
+ this.prior = null;
+ this.testCaseTimeout = 0;
+
+#if !NETCF
+ this.currentCulture = CultureInfo.CurrentCulture;
+ this.currentUICulture = CultureInfo.CurrentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ this.outWriter = Console.Out;
+ this.errorWriter = Console.Error;
+ this.traceWriter = null;
+ this.tracing = false;
+#endif
+
+#if !NUNITLITE
+ this.logging = false;
+ this.currentDirectory = Environment.CurrentDirectory;
+ this.logCapture = new Log4NetCapture();
+ this.currentPrincipal = Thread.CurrentPrincipal;
+#endif
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestExecutionContext"/> class.
+ /// </summary>
+ /// <param name="other">An existing instance of TestExecutionContext.</param>
+ public TestExecutionContext( TestExecutionContext other )
+ {
+ this.prior = other;
+
+ this.currentTest = other.currentTest;
+ this.currentResult = other.currentResult;
+ this.testObject = other.testObject;
+ this.workDirectory = other.workDirectory;
+ this.listener = other.listener;
+ this.stopOnError = other.stopOnError;
+ this.testCaseTimeout = other.testCaseTimeout;
+
+#if !NETCF
+ this.currentCulture = CultureInfo.CurrentCulture;
+ this.currentUICulture = CultureInfo.CurrentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ this.outWriter = other.outWriter;
+ this.errorWriter = other.errorWriter;
+ this.traceWriter = other.traceWriter;
+ this.tracing = other.tracing;
+#endif
+
+#if !NUNITLITE
+ this.logging = other.logging;
+ this.currentDirectory = Environment.CurrentDirectory;
+ this.logCapture = other.logCapture;
+ this.currentPrincipal = Thread.CurrentPrincipal;
+#endif
+ }
+
+ #endregion
+
+ #region Static Singleton Instance
+
+ /// <summary>
+ /// The current context, head of the list of saved contexts.
+ /// </summary>
+#if SILVERLIGHT || NETCF
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ [ThreadStatic]
+#endif
+ private static TestExecutionContext current;
+#endif
+
+ /// <summary>
+ /// Gets the current context.
+ /// </summary>
+ /// <value>The current context.</value>
+ public static TestExecutionContext CurrentContext
+ {
+ get
+ {
+#if SILVERLIGHT || NETCF
+ if (current == null)
+ current = new TestExecutionContext();
+
+ return current;
+#else
+ return CallContext.GetData("NUnit.Framework.TestContext") as TestExecutionContext;
+#endif
+ }
+ }
+
+ #endregion
+
+ #region Static Methods
+
+ internal static void SetCurrentContext(TestExecutionContext ec)
+ {
+#if SILVERLIGHT || NETCF
+ current = ec;
+#else
+ CallContext.SetData("NUnit.Framework.TestContext", ec);
+#endif
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets or sets the current test
+ /// </summary>
+ public Test CurrentTest
+ {
+ get { return currentTest; }
+ set { currentTest = value; }
+ }
+
+ /// <summary>
+ /// The time the current test started execution
+ /// </summary>
+ public DateTime StartTime
+ {
+ get { return startTime; }
+ set { startTime = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the current test result
+ /// </summary>
+ public TestResult CurrentResult
+ {
+ get { return currentResult; }
+ set { currentResult = value; }
+ }
+
+ /// <summary>
+ /// The current test object - that is the user fixture
+ /// object on which tests are being executed.
+ /// </summary>
+ public object TestObject
+ {
+ get { return testObject; }
+ set { testObject = value; }
+ }
+
+ /// <summary>
+ /// Get or set the working directory
+ /// </summary>
+ public string WorkDirectory
+ {
+ get { return workDirectory; }
+ set { workDirectory = value; }
+ }
+
+ /// <summary>
+ /// Get or set indicator that run should stop on the first error
+ /// </summary>
+ public bool StopOnError
+ {
+ get { return stopOnError; }
+ set { stopOnError = value; }
+ }
+
+ /// <summary>
+ /// The current test event listener
+ /// </summary>
+ internal ITestListener Listener
+ {
+ get { return listener; }
+ set { listener = value; }
+ }
+
+ /// <summary>
+ /// Gets the RandomGenerator specific to this Test
+ /// </summary>
+ public RandomGenerator Random
+ {
+ get
+ {
+ if (random == null)
+ {
+ random = new RandomGenerator(currentTest.Seed);
+ }
+ return random;
+ }
+ }
+
+ /// <summary>
+ /// Gets the assert count.
+ /// </summary>
+ /// <value>The assert count.</value>
+ internal int AssertCount
+ {
+ get { return assertCount; }
+ set { assertCount = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the test case timeout vaue
+ /// </summary>
+ public int TestCaseTimeout
+ {
+ get { return testCaseTimeout; }
+ set { testCaseTimeout = value; }
+ }
+
+#if !NETCF
+ /// <summary>
+ /// Saves or restores the CurrentCulture
+ /// </summary>
+ public CultureInfo CurrentCulture
+ {
+ get { return currentCulture; }
+ set
+ {
+ currentCulture = value;
+ Thread.CurrentThread.CurrentCulture = currentCulture;
+ }
+ }
+
+ /// <summary>
+ /// Saves or restores the CurrentUICulture
+ /// </summary>
+ public CultureInfo CurrentUICulture
+ {
+ get { return currentUICulture; }
+ set
+ {
+ currentUICulture = value;
+ Thread.CurrentThread.CurrentUICulture = currentUICulture;
+ }
+ }
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Controls where Console.Out is directed
+ /// </summary>
+ internal TextWriter Out
+ {
+ get { return outWriter; }
+ set
+ {
+ if ( outWriter != value )
+ {
+ outWriter = value;
+ Console.Out.Flush();
+ Console.SetOut( outWriter );
+ }
+ }
+ }
+
+ /// <summary>
+ /// Controls where Console.Error is directed
+ /// </summary>
+ internal TextWriter Error
+ {
+ get { return errorWriter; }
+ set
+ {
+ if ( errorWriter != value )
+ {
+ errorWriter = value;
+ Console.Error.Flush();
+ Console.SetError( errorWriter );
+ }
+ }
+ }
+
+ /// <summary>
+ /// Controls whether trace and debug output are written
+ /// to the standard output.
+ /// </summary>
+ internal bool Tracing
+ {
+ get { return tracing; }
+ set
+ {
+ if (tracing != value)
+ {
+ if (traceWriter != null && tracing)
+ StopTracing();
+
+ tracing = value;
+
+ if (traceWriter != null && tracing)
+ StartTracing();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Controls where Trace output is directed
+ /// </summary>
+ internal TextWriter TraceWriter
+ {
+ get { return traceWriter; }
+ set
+ {
+ if ( traceWriter != value )
+ {
+ if ( traceWriter != null && tracing )
+ StopTracing();
+
+ traceWriter = value;
+
+ if ( traceWriter != null && tracing )
+ StartTracing();
+ }
+ }
+ }
+
+ private void StopTracing()
+ {
+ traceWriter.Close();
+ System.Diagnostics.Trace.Listeners.Remove( "NUnit" );
+ }
+
+ private void StartTracing()
+ {
+ System.Diagnostics.Trace.Listeners.Add( new TextWriterTraceListener( traceWriter, "NUnit" ) );
+ }
+#endif
+
+#if !NUNITLITE
+ /// <summary>
+ /// Controls whether log output is captured
+ /// </summary>
+ public bool Logging
+ {
+ get { return logCapture.Enabled; }
+ set { logCapture.Enabled = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the Log writer, which is actually held by a log4net
+ /// TextWriterAppender. When first set, the appender will be created
+ /// and will thereafter send any log events to the writer.
+ ///
+ /// In normal operation, LogWriter is set to an EventListenerTextWriter
+ /// connected to the EventQueue in the test domain. The events are
+ /// subsequently captured in the Gui an the output displayed in
+ /// the Log tab. The application under test does not need to define
+ /// any additional appenders.
+ /// </summary>
+ public TextWriter LogWriter
+ {
+ get { return logCapture.Writer; }
+ set { logCapture.Writer = value; }
+ }
+
+ /// <summary>
+ /// Saves and restores the CurrentDirectory
+ /// </summary>
+ public string CurrentDirectory
+ {
+ get { return currentDirectory; }
+ set
+ {
+ currentDirectory = value;
+ Environment.CurrentDirectory = currentDirectory;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the current <see cref="IPrincipal"/> for the Thread.
+ /// </summary>
+ public IPrincipal CurrentPrincipal
+ {
+ get { return this.currentPrincipal; }
+ set
+ {
+ this.currentPrincipal = value;
+ Thread.CurrentPrincipal = this.currentPrincipal;
+ }
+ }
+#endif
+
+ #endregion
+
+ #region Instance Methods
+
+ /// <summary>
+ /// Saves the old context and returns a fresh one
+ /// with the same settings.
+ /// </summary>
+ public TestExecutionContext Save()
+ {
+ return new TestExecutionContext(this);
+ }
+
+ /// <summary>
+ /// Restores the last saved context and puts
+ /// any saved settings back into effect.
+ /// </summary>
+ public TestExecutionContext Restore()
+ {
+ if (prior == null)
+ throw new InvalidOperationException("TestContext: too many Restores");
+
+ this.TestCaseTimeout = prior.TestCaseTimeout;
+
+#if !NETCF
+ this.CurrentCulture = prior.CurrentCulture;
+ this.CurrentUICulture = prior.CurrentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ this.Out = prior.Out;
+ this.Error = prior.Error;
+ this.Tracing = prior.Tracing;
+#endif
+
+#if !NUNITLITE
+ this.CurrentDirectory = prior.CurrentDirectory;
+ this.CurrentPrincipal = prior.CurrentPrincipal;
+#endif
+
+ return prior;
+ }
+
+ /// <summary>
+ /// Record any changes in the environment made by
+ /// the test code in the execution context so it
+ /// will be passed on to lower level tests.
+ /// </summary>
+ public void UpdateContext()
+ {
+#if !NETCF
+ this.currentCulture = CultureInfo.CurrentCulture;
+ this.currentUICulture = CultureInfo.CurrentUICulture;
+#endif
+#if !NUNITLITE
+ this.currentDirectory = Environment.CurrentDirectory;
+ this.currentPrincipal = System.Threading.Thread.CurrentPrincipal;
+#endif
+ }
+
+ /// <summary>
+ /// Increments the assert count.
+ /// </summary>
+ public void IncrementAssertCount()
+ {
+ System.Threading.Interlocked.Increment(ref assertCount);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/TestFilter.cs b/NUnitLite-0.9.0/src/framework/Internal/TestFilter.cs
new file mode 100755
index 0000000..b2bfee0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/TestFilter.cs
@@ -0,0 +1,183 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Interface to be implemented by filters applied to tests.
+ /// The filter applies when running the test, after it has been
+ /// loaded, since this is the only time an ITest exists.
+ /// </summary>
+ [Serializable]
+ public abstract class TestFilter : ITestFilter
+ {
+ /// <summary>
+ /// Unique Empty filter.
+ /// </summary>
+ public static TestFilter Empty = new EmptyFilter();
+
+ /// <summary>
+ /// Indicates whether this is the EmptyFilter
+ /// </summary>
+ public bool IsEmpty
+ {
+ get { return this is TestFilter.EmptyFilter; }
+ }
+
+ /// <summary>
+ /// Determine if a particular test passes the filter criteria. The default
+ /// implementation checks the test itself, its parents and any descendants.
+ ///
+ /// Derived classes may override this method or any of the Match methods
+ /// to change the behavior of the filter.
+ /// </summary>
+ /// <param name="test">The test to which the filter is applied</param>
+ /// <returns>True if the test passes the filter, otherwise false</returns>
+ public virtual bool Pass( ITest test )
+ {
+ return Match(test) || MatchParent(test) || MatchDescendant(test);
+ }
+
+ /// <summary>
+ /// Determine whether the test itself matches the filter criteria, without
+ /// examining either parents or descendants.
+ /// </summary>
+ /// <param name="test">The test to which the filter is applied</param>
+ /// <returns>True if the filter matches the any parent of the test</returns>
+ public abstract bool Match(ITest test);
+
+ /// <summary>
+ /// Determine whether any ancestor of the test matches the filter criteria
+ /// </summary>
+ /// <param name="test">The test to which the filter is applied</param>
+ /// <returns>True if the filter matches the an ancestor of the test</returns>
+ protected virtual bool MatchParent(ITest test)
+ {
+ return (test.RunState != RunState.Explicit && test.Parent != null &&
+ (Match(test.Parent) || MatchParent(test.Parent)));
+ }
+
+ /// <summary>
+ /// Determine whether any descendant of the test matches the filter criteria.
+ /// </summary>
+ /// <param name="test">The test to be matched</param>
+ /// <returns>True if at least one descendant matches the filter criteria</returns>
+ protected virtual bool MatchDescendant(ITest test)
+ {
+ if (test.Tests == null)
+ return false;
+
+ foreach (ITest child in test.Tests)
+ {
+ if (Match(child) || MatchDescendant(child))
+ return true;
+ }
+
+ return false;
+ }
+
+#if !NUNITLITE
+ public static TestFilter FromXml(string xmlText)
+ {
+ XmlDocument doc = new XmlDocument();
+ doc.LoadXml(xmlText);
+ XmlNode topNode = doc.FirstChild;
+
+ if (topNode.Name != "filter")
+ throw new Exception("Expected filter element at top level");
+
+ // Initially, an empty filter
+ TestFilter result = TestFilter.Empty;
+ bool isEmptyResult = true;
+
+ XmlNodeList testNodes = topNode.SelectNodes("tests/test");
+ XmlNodeList includeNodes = topNode.SelectNodes("include/category");
+ XmlNodeList excludeNodes = topNode.SelectNodes("exclude/category");
+
+ if (testNodes.Count > 0)
+ {
+ SimpleNameFilter nameFilter = new SimpleNameFilter();
+ foreach (XmlNode testNode in topNode.SelectNodes("tests/test"))
+ nameFilter.Add(testNode.InnerText);
+
+ result = nameFilter;
+ isEmptyResult = false;
+ }
+
+ if (includeNodes.Count > 0)
+ {
+ //CategoryFilter includeFilter = new CategoryFilter();
+ //foreach (XmlNode includeNode in includeNodes)
+ // includeFilter.AddCategory(includeNode.InnerText);
+
+ // Temporarily just look at the first element
+ XmlNode includeNode = includeNodes[0];
+ TestFilter includeFilter = new CategoryExpression(includeNode.InnerText).Filter;
+
+ if (isEmptyResult)
+ result = includeFilter;
+ else
+ result = new AndFilter(result, includeFilter);
+ isEmptyResult = false;
+ }
+
+ if (excludeNodes.Count > 0)
+ {
+ CategoryFilter categoryFilter = new CategoryFilter();
+ foreach (XmlNode excludeNode in excludeNodes)
+ categoryFilter.AddCategory(excludeNode.InnerText);
+ TestFilter excludeFilter = new NotFilter(categoryFilter);
+
+ if (isEmptyResult)
+ result = excludeFilter;
+ else
+ result = new AndFilter(result, excludeFilter);
+ isEmptyResult = false;
+ }
+
+ return result;
+ }
+#endif
+
+ /// <summary>
+ /// Nested class provides an empty filter - one that always
+ /// returns true when called, unless the test is marked explicit.
+ /// </summary>
+ [Serializable]
+ private class EmptyFilter : TestFilter
+ {
+ public override bool Match( ITest test )
+ {
+ return test.RunState != RunState.Explicit;
+ }
+
+ public override bool Pass( ITest test )
+ {
+ return test.RunState != RunState.Explicit;
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/TestFixtureBuilder.cs b/NUnitLite-0.9.0/src/framework/Internal/TestFixtureBuilder.cs
new file mode 100755
index 0000000..66a17c8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/TestFixtureBuilder.cs
@@ -0,0 +1,93 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+#if NUNITLITE
+using NUnit.Framework.Builders;
+#endif
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// TestFixtureBuilder contains static methods for building
+ /// TestFixtures from types. It uses builtin SuiteBuilders
+ /// and any installed extensions to do it.
+ /// </summary>
+ public class TestFixtureBuilder
+ {
+#if NUNITLITE
+ private static Extensibility.ISuiteBuilder builder = new NUnitTestFixtureBuilder();
+#else
+ private static Extensibility.ISuiteBuilder builder = CoreExtensions.Host.SuiteBuilders;
+#endif
+
+ /// <summary>
+ /// Determines whether this instance [can build from] the specified type.
+ /// </summary>
+ /// <param name="type">The type.</param>
+ /// <returns>
+ /// <c>true</c> if this instance [can build from] the specified type; otherwise, <c>false</c>.
+ /// </returns>
+ public static bool CanBuildFrom( Type type )
+ {
+ return builder.CanBuildFrom(type);
+ }
+
+ /// <summary>
+ /// Build a test fixture from a given type.
+ /// </summary>
+ /// <param name="type">The type to be used for the fixture</param>
+ /// <returns>A TestSuite if the fixture can be built, null if not</returns>
+ public static Test BuildFrom( Type type )
+ {
+ Test suite = builder.BuildFrom( type );
+
+#if !NUNITLITE
+ if ( suite != null )
+ suite = CoreExtensions.Host.TestDecorators.Decorate( suite, type );
+#endif
+
+ return suite;
+ }
+
+ /// <summary>
+ /// Build a fixture from an object.
+ /// </summary>
+ /// <param name="fixture">The object to be used for the fixture</param>
+ /// <returns>A TestSuite if fixture type can be built, null if not</returns>
+ public static Test BuildFrom( object fixture )
+ {
+ Test suite = BuildFrom( fixture.GetType() );
+ if( suite != null)
+ suite.Fixture = fixture;
+ return suite;
+ }
+
+ /// <summary>
+ /// Private constructor to prevent instantiation
+ /// </summary>
+ private TestFixtureBuilder() { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/TestListener.cs b/NUnitLite-0.9.0/src/framework/Internal/TestListener.cs
new file mode 100755
index 0000000..14ee082
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/TestListener.cs
@@ -0,0 +1,66 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// TestListener provides an implementation of ITestListener that
+ /// does nothing. It is used only throught its NULL property.
+ /// </summary>
+ public class TestListener : ITestListener
+ {
+ /// <summary>
+ /// Called when a test has just started
+ /// </summary>
+ /// <param name="test">The test that is starting</param>
+ public void TestStarted(ITest test){}
+
+ /// <summary>
+ /// Called when a test case has finished
+ /// </summary>
+ /// <param name="result">The result of the test</param>
+ public void TestFinished(ITestResult result){}
+
+ /// <summary>
+ /// Called when the test creates text output.
+ /// </summary>
+ /// <param name="testOutput">A console message</param>
+ public void TestOutput(TestOutput testOutput) {}
+
+ /// <summary>
+ /// Construct a new TestListener - private so it may not be used.
+ /// </summary>
+ private TestListener() { }
+
+ /// <summary>
+ /// Get a listener that does nothing
+ /// </summary>
+ public static ITestListener NULL
+ {
+ get { return new TestListener();}
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedFixtureSuite.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedFixtureSuite.cs
new file mode 100755
index 0000000..d925799
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedFixtureSuite.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// ParameterizedFixtureSuite serves as a container for the set of test
+ /// fixtures created from a given Type using various parameters.
+ /// </summary>
+ public class ParameterizedFixtureSuite : TestSuite
+ {
+ private Type type;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ParameterizedFixtureSuite"/> class.
+ /// </summary>
+ /// <param name="type">The type.</param>
+ public ParameterizedFixtureSuite(Type type) : base(type.Namespace, TypeHelper.GetDisplayName(type))
+ {
+ this.type = type;
+ }
+
+ /// <summary>
+ /// Gets the Type represented by this suite.
+ /// </summary>
+ /// <value>A Sysetm.Type.</value>
+ public Type ParameterizedType
+ {
+ get { return type; }
+ }
+
+ /// <summary>
+ /// Gets a string representing the type of test
+ /// </summary>
+ /// <value></value>
+ public override string TestType
+ {
+ get
+ {
+#if CLR_2_0 || CLR_4_0
+ if (this.ParameterizedType.ContainsGenericParameters)
+ return "GenericFixture";
+#endif
+
+ return "ParameterizedFixture";
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedMethodSuite.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedMethodSuite.cs
new file mode 100755
index 0000000..444fbe3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/ParameterizedMethodSuite.cs
@@ -0,0 +1,95 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Reflection;
+using NUnit.Framework.Internal.Commands;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// ParameterizedMethodSuite holds a collection of individual
+ /// TestMethods with their arguments applied.
+ /// </summary>
+ public class ParameterizedMethodSuite : TestSuite
+ {
+ private MethodInfo _method;
+ private bool _isTheory;
+
+ /// <summary>
+ /// Construct from a MethodInfo
+ /// </summary>
+ /// <param name="method"></param>
+ public ParameterizedMethodSuite(MethodInfo method)
+ : base(method.ReflectedType.FullName, method.Name)
+ {
+ _method = method;
+ _isTheory = method.IsDefined(typeof(TheoryAttribute), true);
+ this.maintainTestOrder = true;
+ }
+
+ /// <summary>
+ /// Gets the MethodInfo for which this suite is being built.
+ /// </summary>
+ public MethodInfo Method
+ {
+ get { return _method; }
+ }
+
+ /// <summary>
+ /// Gets a string representing the type of test
+ /// </summary>
+ /// <value></value>
+ public override string TestType
+ {
+ get
+ {
+ if (_isTheory)
+ return "Theory";
+
+#if CLR_2_0 || CLR_4_0
+ if (this.Method.ContainsGenericParameters)
+ return "GenericMethod";
+#endif
+
+ return "ParameterizedMethod";
+ }
+ }
+
+ /// <summary>
+ /// Gets the command to be executed after all the child
+ /// tests are run. Overridden in ParameterizedMethodSuite
+ /// to set the result to failure if all the child tests
+ /// were inconclusive.
+ /// </summary>
+ /// <returns></returns>
+ public override TestCommand GetOneTimeTearDownCommand()
+ {
+ TestCommand command = base.GetOneTimeTearDownCommand();
+
+ if (_isTheory)
+ command = new TheoryResultCommand(command);
+
+ return command;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/Test.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/Test.cs
new file mode 100755
index 0000000..9915fa8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/Test.cs
@@ -0,0 +1,415 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Internal.WorkItems;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The Test abstract class represents a test within the framework.
+ /// </summary>
+ public abstract class Test : ITest, IComparable
+ {
+ #region Fields
+
+ /// <summary>
+ /// Static value to seed ids. It's started at 1000 so any
+ /// uninitialized ids will stand out.
+ /// </summary>
+ private static int nextID = 1000;
+
+ private int id;
+ private string name;
+ private string fullName;
+ private int seed;
+
+ /// <summary>
+ /// Indicates whether the test should be executed
+ /// </summary>
+ private RunState runState;
+
+ /// <summary>
+ /// Test suite containing this test, or null
+ /// </summary>
+ private ITest parent;
+
+ /// <summary>
+ /// A dictionary of properties, used to add information
+ /// to tests without requiring the class to change.
+ /// </summary>
+ private PropertyBag properties;
+
+ /// <summary>
+ /// The System.Type of the fixture for this test, if there is one
+ /// </summary>
+ private Type fixtureType;
+
+ /// <summary>
+ /// The fixture object, if it has been created
+ /// </summary>
+ private object fixture;
+
+ /// <summary>
+ /// The SetUp methods.
+ /// </summary>
+ protected MethodInfo[] setUpMethods;
+
+ /// <summary>
+ /// The teardown methods
+ /// </summary>
+ protected MethodInfo[] tearDownMethods;
+
+ #endregion
+
+ #region Construction
+
+ /// <summary>
+ /// Constructs a test given its name
+ /// </summary>
+ /// <param name="name">The name of the test</param>
+ protected Test( string name )
+ {
+ this.fullName = name;
+ this.name = name;
+ this.id = unchecked(nextID++);
+
+ this.runState = RunState.Runnable;
+ }
+
+ /// <summary>
+ /// Constructs a test given the path through the
+ /// test hierarchy to its parent and a name.
+ /// </summary>
+ /// <param name="pathName">The parent tests full name</param>
+ /// <param name="name">The name of the test</param>
+ protected Test( string pathName, string name )
+ {
+ this.fullName = pathName == null || pathName == string.Empty
+ ? name : pathName + "." + name;
+ this.name = name;
+ this.id = unchecked(nextID++);
+
+ this.runState = RunState.Runnable;
+ }
+
+ /// <summary>
+ /// TODO: Documentation needed for constructor
+ /// </summary>
+ /// <param name="fixtureType"></param>
+ protected Test(Type fixtureType) : this(fixtureType.FullName)
+ {
+ this.fixtureType = fixtureType;
+ }
+
+ #endregion
+
+ #region ITest Members
+
+ /// <summary>
+ /// Gets or sets the id of the test
+ /// </summary>
+ /// <value></value>
+ public int Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the name of the test
+ /// </summary>
+ public string Name
+ {
+ get { return name; }
+ set { name = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the fully qualified name of the test
+ /// </summary>
+ /// <value></value>
+ public string FullName
+ {
+ get { return fullName; }
+ set { fullName = value; }
+ }
+
+ /// <summary>
+ /// Gets the Type of the fixture used in running this test
+ /// or null if no fixture type is associated with it.
+ /// </summary>
+ public Type FixtureType
+ {
+ get { return fixtureType; }
+ }
+
+ /// <summary>
+ /// Whether or not the test should be run
+ /// </summary>
+ public RunState RunState
+ {
+ get { return runState; }
+ set { runState = value; }
+ }
+
+ /// <summary>
+ /// Gets the name used for the top-level element in the
+ /// XML representation of this test
+ /// </summary>
+ public abstract string XmlElementName
+ {
+ get;
+ }
+
+ /// <summary>
+ /// Gets a string representing the type of test. Used as an attribute
+ /// value in the XML representation of a test and has no other
+ /// function in the framework.
+ /// </summary>
+ public virtual string TestType
+ {
+ get { return this.GetType().Name; }
+ }
+
+ /// <summary>
+ /// Gets a count of test cases represented by
+ /// or contained under this test.
+ /// </summary>
+ public virtual int TestCaseCount
+ {
+ get { return 1; }
+ }
+
+ /// <summary>
+ /// Gets the properties for this test
+ /// </summary>
+ public IPropertyBag Properties
+ {
+ get
+ {
+ if ( properties == null )
+ properties = new PropertyBag();
+
+ return properties;
+ }
+ }
+
+ /// <summary>
+ /// Gets a bool indicating whether the current test
+ /// has any descendant tests.
+ /// </summary>
+ public abstract bool HasChildren { get; }
+
+ /// <summary>
+ /// Gets the parent as a Test object.
+ /// Used by the core to set the parent.
+ /// </summary>
+ public ITest Parent
+ {
+ get { return parent; }
+ set { parent = value; }
+ }
+
+ /// <summary>
+ /// Gets or Sets the Int value representing the seed for the RandomGenerator
+ /// </summary>
+ /// <value></value>
+ public int Seed
+ {
+ get { return seed; }
+ set { seed = value; }
+ }
+
+ /// <summary>
+ /// Gets this test's child tests
+ /// </summary>
+ /// <value>A list of child tests</value>
+
+#if CLR_2_0 || CLR_4_0
+ public abstract System.Collections.Generic.IList<ITest> Tests { get; }
+#else
+ public abstract System.Collections.IList Tests { get; }
+#endif
+
+ #endregion
+
+ #region IXmlNodeBuilder Members
+
+ /// <summary>
+ /// Returns the Xml representation of the test
+ /// </summary>
+ /// <param name="recursive">If true, include child tests recursively</param>
+ /// <returns></returns>
+ public XmlNode ToXml(bool recursive)
+ {
+ XmlNode topNode = XmlNode.CreateTopLevelElement("dummy");
+
+ XmlNode thisNode = AddToXml(topNode, recursive);
+
+ return thisNode;
+ }
+
+ /// <summary>
+ /// Returns an XmlNode representing the current result after
+ /// adding it as a child of the supplied parent node.
+ /// </summary>
+ /// <param name="parentNode">The parent node.</param>
+ /// <param name="recursive">If true, descendant results are included</param>
+ /// <returns></returns>
+ public abstract XmlNode AddToXml(XmlNode parentNode, bool recursive);
+
+ #endregion
+
+ #region IComparable Members
+
+ /// <summary>
+ /// Compares this test to another test for sorting purposes
+ /// </summary>
+ /// <param name="obj">The other test</param>
+ /// <returns>Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test</returns>
+ public int CompareTo(object obj)
+ {
+ Test other = obj as Test;
+
+ if (other == null)
+ return -1;
+
+ return this.FullName.CompareTo(other.FullName);
+ }
+
+ #endregion
+
+ #region Other Public Methods
+
+ /// <summary>
+ /// Creates a TestResult for this test.
+ /// </summary>
+ /// <returns>A TestResult suitable for this type of test.</returns>
+ public abstract TestResult MakeTestResult();
+
+ ///// <summary>
+ ///// Gets a count of test cases that would be run using
+ ///// the specified filter.
+ ///// </summary>
+ ///// <param name="filter"></param>
+ ///// <returns></returns>
+ //public virtual int CountTestCases(TestFilter filter)
+ //{
+ // if (filter.Pass(this))
+ // return 1;
+
+ // return 0;
+ //}
+
+ /// <summary>
+ /// Modify a newly constructed test by applying any of NUnit's common
+ /// attributes, based on a supplied ICustomAttributeProvider, which is
+ /// usually the reflection element from which the test was constructed,
+ /// but may not be in some instances. The attributes retrieved are
+ /// saved for use in subsequent operations.
+ /// </summary>
+ /// <param name="provider">An object implementing ICustomAttributeProvider</param>
+ public void ApplyAttributesToTest(ICustomAttributeProvider provider)
+ {
+ foreach (IApplyToTest iApply in provider.GetCustomAttributes(typeof(IApplyToTest), true))
+ iApply.ApplyToTest(this);
+ }
+
+ #endregion
+
+ #region Protected Methods
+
+ /// <summary>
+ /// Add standard attributes and members to a test node.
+ /// </summary>
+ /// <param name="thisNode"></param>
+ /// <param name="recursive"></param>
+ protected void PopulateTestNode(XmlNode thisNode, bool recursive)
+ {
+ thisNode.AddAttribute("id", this.Id.ToString());
+ thisNode.AddAttribute("name", this.Name);
+ thisNode.AddAttribute("fullname", this.FullName);
+
+ if (Properties.Count > 0)
+ Properties.AddToXml(thisNode, recursive);
+ }
+
+ #endregion
+
+ #region Internal Properties
+
+ /// <summary>
+ /// Gets or sets a fixture object for running this test.
+ /// Provided for use by LegacySuiteBuilder.
+ /// </summary>
+ internal object Fixture
+ {
+ get { return fixture; }
+ set { fixture = value; }
+ }
+
+ /// <summary>
+ /// Gets the set up methods.
+ /// </summary>
+ /// <returns></returns>
+ internal virtual MethodInfo[] SetUpMethods
+ {
+ get
+ {
+ if (setUpMethods == null && this.Parent != null)
+ {
+ TestSuite suite = this.Parent as TestSuite;
+ if (suite != null)
+ setUpMethods = suite.SetUpMethods;
+ }
+
+ return setUpMethods;
+ }
+ }
+
+ /// <summary>
+ /// Gets the tear down methods.
+ /// </summary>
+ /// <returns></returns>
+ internal virtual MethodInfo[] TearDownMethods
+ {
+ get
+ {
+ if (tearDownMethods == null && this.Parent != null)
+ {
+ TestSuite suite = this.Parent as TestSuite;
+ if (suite != null)
+ tearDownMethods = suite.TearDownMethods;
+ }
+
+ return tearDownMethods;
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/TestAssembly.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestAssembly.cs
new file mode 100755
index 0000000..b50ec7d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestAssembly.cs
@@ -0,0 +1,57 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.IO;
+using System.Reflection;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// TestAssembly is a TestSuite that represents the execution
+ /// of tests in a managed assembly.
+ /// </summary>
+ public class TestAssembly : TestSuite
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestAssembly"/> class.
+ /// </summary>
+ /// <param name="assembly">The assembly containing the tests.</param>
+ /// <param name="path">The path used to load the assembly.</param>
+ public TestAssembly(Assembly assembly, string path) : base(path)
+ {
+ this.Name = Path.GetFileName(path);
+ }
+
+ /// <summary>
+ /// Gets the name used for the top-level element in the
+ /// XML representation of this test
+ /// </summary>
+ public override string TestType
+ {
+ get
+ {
+ return "Assembly";
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/TestFixture.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestFixture.cs
new file mode 100755
index 0000000..d5c6d73
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestFixture.cs
@@ -0,0 +1,60 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// TestFixture is a surrogate for a user test fixture class,
+ /// containing one or more tests.
+ /// </summary>
+ public class TestFixture : TestSuite
+ {
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestFixture"/> class.
+ /// </summary>
+ /// <param name="fixtureType">Type of the fixture.</param>
+ public TestFixture(Type fixtureType)
+ : this(fixtureType, null) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestFixture"/> class.
+ /// </summary>
+ /// <param name="fixtureType">Type of the fixture.</param>
+ /// <param name="arguments">The arguments.</param>
+ public TestFixture(Type fixtureType, object[] arguments)
+ : base(fixtureType, arguments)
+ {
+ this.setUpMethods = Reflect.GetMethodsWithAttribute(FixtureType, typeof(SetUpAttribute), true);
+ this.tearDownMethods = Reflect.GetMethodsWithAttribute(FixtureType, typeof(TearDownAttribute), true);
+ }
+
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/TestMethod.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestMethod.cs
new file mode 100755
index 0000000..89a3f14
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestMethod.cs
@@ -0,0 +1,252 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Internal.WorkItems;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The TestMethod class represents a Test implemented as a method.
+ /// Because of how exceptions are handled internally, this class
+ /// must incorporate processing of expected exceptions. A change to
+ /// the Test interface might make it easier to process exceptions
+ /// in an object that aggregates a TestMethod in the future.
+ /// </summary>
+ public class TestMethod : Test
+ {
+ #region Fields
+
+ /// <summary>
+ /// The test method
+ /// </summary>
+ internal MethodInfo method;
+
+ /// <summary>
+ /// A list of all decorators applied to the test by attributes or parameterset arguments
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ private List<ICommandDecorator> decorators = new List<ICommandDecorator>();
+#else
+ private System.Collections.ArrayList decorators = new System.Collections.ArrayList();
+#endif
+
+ /// <summary>
+ /// The ParameterSet used to create this test method
+ /// </summary>
+ internal ParameterSet parms;
+
+ #endregion
+
+ #region Constructor
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestMethod"/> class.
+ /// </summary>
+ /// <param name="method">The method to be used as a test.</param>
+ /// <param name="parentSuite">The suite or fixture to which the new test will be added</param>
+ public TestMethod(MethodInfo method, Test parentSuite)
+ : base( method.ReflectedType )
+ {
+ this.Name = method.Name;
+ this.FullName += "." + this.Name;
+
+ // Disambiguate call to base class methods
+ // TODO: This should not be here - it's a presentation issue
+ if( method.DeclaringType != method.ReflectedType)
+ this.Name = method.DeclaringType.Name + "." + method.Name;
+
+ // Needed to give proper fullname to test in a parameterized fixture.
+ // Without this, the arguments to the fixture are not included.
+ string prefix = method.ReflectedType.FullName;
+ if (parentSuite != null)
+ {
+ prefix = parentSuite.FullName;
+ this.FullName = prefix + "." + this.Name;
+ }
+
+ this.method = method;
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the method.
+ /// </summary>
+ /// <value>The method that performs the test.</value>
+ public MethodInfo Method
+ {
+ get { return method; }
+ }
+
+ /// <summary>
+ /// Gets a list of custom decorators for this test.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public IList<ICommandDecorator> CustomDecorators
+#else
+ public System.Collections.IList CustomDecorators
+#endif
+ {
+ get { return decorators; }
+ }
+
+ internal bool HasExpectedResult
+ {
+ get { return parms != null && parms.HasExpectedResult; }
+ }
+
+ internal object ExpectedResult
+ {
+ get { return parms != null ? parms.ExpectedResult : null; }
+ }
+
+ internal object[] Arguments
+ {
+ get { return parms != null ? parms.Arguments : null; }
+ }
+
+ internal bool IsAsync
+ {
+ get
+ {
+#if NET_4_5
+ return method.IsDefined(typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute), false);
+#else
+ return false;
+#endif
+ }
+ }
+
+ #endregion
+
+ #region Test Overrides
+
+ /// <summary>
+ /// Overridden to return a TestCaseResult.
+ /// </summary>
+ /// <returns>A TestResult for this test.</returns>
+ public override TestResult MakeTestResult()
+ {
+ return new TestCaseResult(this);
+ }
+
+ /// <summary>
+ /// Gets a bool indicating whether the current test
+ /// has any descendant tests.
+ /// </summary>
+ public override bool HasChildren
+ {
+ get { return false; }
+ }
+
+ /// <summary>
+ /// Returns an XmlNode representing the current result after
+ /// adding it as a child of the supplied parent node.
+ /// </summary>
+ /// <param name="parentNode">The parent node.</param>
+ /// <param name="recursive">If true, descendant results are included</param>
+ /// <returns></returns>
+ public override XmlNode AddToXml(XmlNode parentNode, bool recursive)
+ {
+ XmlNode thisNode = parentNode.AddElement(XmlElementName);
+
+ PopulateTestNode(thisNode, recursive);
+
+ return thisNode;
+ }
+
+ /// <summary>
+ /// Gets this test's child tests
+ /// </summary>
+ /// <value>A list of child tests</value>
+#if CLR_2_0 || CLR_4_0
+ public override IList<ITest> Tests
+#else
+ public override System.Collections.IList Tests
+#endif
+ {
+ get { return new ITest[0]; }
+ }
+
+ /// <summary>
+ /// Gets the name used for the top-level element in the
+ /// XML representation of this test
+ /// </summary>
+ public override string XmlElementName
+ {
+ get { return "test-case"; }
+ }
+
+ /// <summary>
+ /// Creates a test command for use in running this test.
+ /// </summary>
+ /// <returns></returns>
+ public virtual TestCommand GetTestCommand()
+ {
+ TestCommand command = new TestMethodCommand(this);
+
+ command = ApplyDecoratorsToCommand(command);
+
+ IApplyToContext[] changes = (IApplyToContext[])this.Method.GetCustomAttributes(typeof(IApplyToContext), true);
+ if (changes.Length > 0)
+ command = new ApplyChangesToContextCommand(command, changes);
+
+ return command;
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private TestCommand ApplyDecoratorsToCommand(TestCommand command)
+ {
+ CommandDecoratorList decorators = new CommandDecoratorList();
+
+ // Add Standard stuff
+ decorators.Add(new SetUpTearDownDecorator());
+
+ // Add Decorators supplied by attributes and parameter sets
+ foreach (ICommandDecorator decorator in CustomDecorators)
+ decorators.Add(decorator);
+
+ decorators.OrderByStage();
+
+ foreach (ICommandDecorator decorator in decorators)
+ {
+ command = decorator.Decorate(command);
+ }
+
+ return command;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/Tests/TestSuite.cs b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestSuite.cs
new file mode 100755
index 0000000..0736299
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/Tests/TestSuite.cs
@@ -0,0 +1,301 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#else
+using System.Collections;
+#endif
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Internal.WorkItems;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// TestSuite represents a composite test, which contains other tests.
+ /// </summary>
+ public class TestSuite : Test
+ {
+ #region Fields
+
+ /// <summary>
+ /// Our collection of child tests
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ private List<ITest> tests = new List<ITest>();
+#else
+ private ArrayList tests = new ArrayList();
+#endif
+
+ /// <summary>
+ /// Set to true to suppress sorting this suite's contents
+ /// </summary>
+ protected bool maintainTestOrder;
+
+ /// <summary>
+ /// Argument list for use in creating the fixture.
+ /// </summary>
+ internal object[] arguments;
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestSuite"/> class.
+ /// </summary>
+ /// <param name="name">The name of the suite.</param>
+ public TestSuite( string name )
+ : base( name ) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestSuite"/> class.
+ /// </summary>
+ /// <param name="parentSuiteName">Name of the parent suite.</param>
+ /// <param name="name">The name of the suite.</param>
+ public TestSuite( string parentSuiteName, string name )
+ : base( parentSuiteName, name ) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestSuite"/> class.
+ /// </summary>
+ /// <param name="fixtureType">Type of the fixture.</param>
+ public TestSuite(Type fixtureType)
+ : this(fixtureType, null) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestSuite"/> class.
+ /// </summary>
+ /// <param name="fixtureType">Type of the fixture.</param>
+ /// <param name="arguments">The arguments.</param>
+ public TestSuite(Type fixtureType, object[] arguments)
+ : base(fixtureType)
+ {
+ string name = TypeHelper.GetDisplayName(fixtureType, arguments);
+ this.Name = name;
+
+ this.FullName = name;
+ string nspace = fixtureType.Namespace;
+ if (nspace != null && nspace != "")
+ this.FullName = nspace + "." + name;
+ this.arguments = arguments;
+ }
+
+ #endregion
+
+ #region Public Methods
+
+ /// <summary>
+ /// Sorts tests under this suite.
+ /// </summary>
+ public void Sort()
+ {
+ if (!maintainTestOrder)
+ {
+ this.tests.Sort();
+
+ foreach (Test test in Tests)
+ {
+ TestSuite suite = test as TestSuite;
+ if (suite != null)
+ suite.Sort();
+ }
+ }
+ }
+
+#if false
+ /// <summary>
+ /// Sorts tests under this suite using the specified comparer.
+ /// </summary>
+ /// <param name="comparer">The comparer.</param>
+ public void Sort(IComparer comparer)
+ {
+ this.tests.Sort(comparer);
+
+ foreach( Test test in Tests )
+ {
+ TestSuite suite = test as TestSuite;
+ if ( suite != null )
+ suite.Sort(comparer);
+ }
+ }
+#endif
+
+ /// <summary>
+ /// Adds a test to the suite.
+ /// </summary>
+ /// <param name="test">The test.</param>
+ public void Add( Test test )
+ {
+// if( test.RunState == RunState.Runnable )
+// {
+// test.RunState = this.RunState;
+// test.IgnoreReason = this.IgnoreReason;
+// }
+ test.Parent = this;
+ tests.Add(test);
+ }
+
+#if !NUNITLITE
+ /// <summary>
+ /// Adds a pre-constructed test fixture to the suite.
+ /// </summary>
+ /// <param name="fixture">The fixture.</param>
+ public void Add( object fixture )
+ {
+ Test test = TestFixtureBuilder.BuildFrom( fixture );
+ if ( test != null )
+ Add( test );
+ }
+#endif
+
+ /// <summary>
+ /// Gets the command to be executed before any of
+ /// the child tests are run.
+ /// </summary>
+ /// <returns>A TestCommand</returns>
+ public virtual TestCommand GetOneTimeSetUpCommand()
+ {
+ TestCommand command = new OneTimeSetUpCommand(this);
+
+ if (this.FixtureType != null)
+ {
+ IApplyToContext[] changes = (IApplyToContext[])this.FixtureType.GetCustomAttributes(typeof(IApplyToContext), true);
+ if (changes.Length > 0)
+ command = new ApplyChangesToContextCommand(command, changes);
+ }
+
+ return command;
+ }
+
+ /// <summary>
+ /// Gets the command to be executed after all of the
+ /// child tests are run.
+ /// </summary>
+ /// <returns>A TestCommand</returns>
+ public virtual TestCommand GetOneTimeTearDownCommand()
+ {
+ TestCommand command = new OneTimeTearDownCommand(this);
+
+ return command;
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets this test's child tests
+ /// </summary>
+ /// <value>The list of child tests</value>
+#if CLR_2_0 || CLR_4_0
+ public override IList<ITest> Tests
+#else
+ public override IList Tests
+#endif
+ {
+ get { return tests; }
+ }
+
+ /// <summary>
+ /// Gets a count of test cases represented by
+ /// or contained under this test.
+ /// </summary>
+ /// <value></value>
+ public override int TestCaseCount
+ {
+ get
+ {
+ int count = 0;
+
+ foreach(Test test in Tests)
+ {
+ count += test.TestCaseCount;
+ }
+ return count;
+ }
+ }
+
+ #endregion
+
+ #region Test Overrides
+
+ /// <summary>
+ /// Overridden to return a TestSuiteResult.
+ /// </summary>
+ /// <returns>A TestResult for this test.</returns>
+ public override TestResult MakeTestResult()
+ {
+ return new TestSuiteResult(this);
+ }
+
+ /// <summary>
+ /// Gets a bool indicating whether the current test
+ /// has any descendant tests.
+ /// </summary>
+ public override bool HasChildren
+ {
+ get
+ {
+ return tests.Count > 0;
+ }
+ }
+
+ /// <summary>
+ /// Gets the name used for the top-level element in the
+ /// XML representation of this test
+ /// </summary>
+ public override string XmlElementName
+ {
+ get { return "test-suite"; }
+ }
+
+ /// <summary>
+ /// Returns an XmlNode representing the current result after
+ /// adding it as a child of the supplied parent node.
+ /// </summary>
+ /// <param name="parentNode">The parent node.</param>
+ /// <param name="recursive">If true, descendant results are included</param>
+ /// <returns></returns>
+ public override XmlNode AddToXml(XmlNode parentNode, bool recursive)
+ {
+ XmlNode thisNode = parentNode.AddElement("test-suite");
+ thisNode.AddAttribute("type", this.TestType);
+
+ PopulateTestNode(thisNode, recursive);
+ thisNode.AddAttribute("testcasecount", this.TestCaseCount.ToString());
+
+
+ if (recursive)
+ foreach (Test test in this.Tests)
+ test.AddToXml(thisNode, recursive);
+
+ return thisNode;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/TextMessageWriter.cs b/NUnitLite-0.9.0/src/framework/Internal/TextMessageWriter.cs
new file mode 100755
index 0000000..1de2ca4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/TextMessageWriter.cs
@@ -0,0 +1,489 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Globalization;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class TextMessageWriter : MessageWriter
+ {
+ #region Message Formats and Constants
+ private static readonly int DEFAULT_LINE_LENGTH = 78;
+
+ // Prefixes used in all failure messages. All must be the same
+ // length, which is held in the PrefixLength field. Should not
+ // contain any tabs or newline characters.
+ /// <summary>
+ /// Prefix used for the expected value line of a message
+ /// </summary>
+ public static readonly string Pfx_Expected = " Expected: ";
+ /// <summary>
+ /// Prefix used for the actual value line of a message
+ /// </summary>
+ public static readonly string Pfx_Actual = " But was: ";
+ /// <summary>
+ /// Length of a message prefix
+ /// </summary>
+ public static readonly int PrefixLength = Pfx_Expected.Length;
+
+ private static readonly string Fmt_Connector = " {0} ";
+ private static readonly string Fmt_Predicate = "{0} ";
+ //private static readonly string Fmt_Label = "{0}";
+ private static readonly string Fmt_Modifier = ", {0}";
+
+ private static readonly string Fmt_Null = "null";
+ private static readonly string Fmt_EmptyString = "<string.Empty>";
+ private static readonly string Fmt_EmptyCollection = "<empty>";
+
+ private static readonly string Fmt_String = "\"{0}\"";
+ private static readonly string Fmt_Char = "'{0}'";
+ private static readonly string Fmt_DateTime = "yyyy-MM-dd HH:mm:ss.fff";
+ private static readonly string Fmt_ValueType = "{0}";
+ private static readonly string Fmt_Default = "<{0}>";
+ #endregion
+
+ private int maxLineLength = DEFAULT_LINE_LENGTH;
+
+ #region Constructors
+ /// <summary>
+ /// Construct a TextMessageWriter
+ /// </summary>
+ public TextMessageWriter() { }
+
+ /// <summary>
+ /// Construct a TextMessageWriter, specifying a user message
+ /// and optional formatting arguments.
+ /// </summary>
+ /// <param name="userMessage"></param>
+ /// <param name="args"></param>
+ public TextMessageWriter(string userMessage, params object[] args)
+ {
+ if ( userMessage != null && userMessage != string.Empty)
+ this.WriteMessageLine(userMessage, args);
+ }
+ #endregion
+
+ #region Properties
+ /// <summary>
+ /// Gets or sets the maximum line length for this writer
+ /// </summary>
+ public override int MaxLineLength
+ {
+ get { return maxLineLength; }
+ set { maxLineLength = value; }
+ }
+ #endregion
+
+ #region Public Methods - High Level
+ /// <summary>
+ /// Method to write single line message with optional args, usually
+ /// written to precede the general failure message, at a givel
+ /// indentation level.
+ /// </summary>
+ /// <param name="level">The indentation level of the message</param>
+ /// <param name="message">The message to be written</param>
+ /// <param name="args">Any arguments used in formatting the message</param>
+ public override void WriteMessageLine(int level, string message, params object[] args)
+ {
+ if (message != null)
+ {
+ while (level-- >= 0) Write(" ");
+
+ if (args != null && args.Length > 0)
+ message = string.Format(message, args);
+
+ WriteLine(message);
+ }
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="constraint">The constraint that failed</param>
+ public override void DisplayDifferences(Constraint constraint)
+ {
+ WriteExpectedLine(constraint);
+ WriteActualLine(constraint);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value causing the failure</param>
+ public override void DisplayDifferences(object expected, object actual)
+ {
+ WriteExpectedLine(expected);
+ WriteActualLine(actual);
+ }
+
+ /// <summary>
+ /// Display Expected and Actual lines for given values, including
+ /// a tolerance value on the expected line.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="actual">The actual value causing the failure</param>
+ /// <param name="tolerance">The tolerance within which the test was made</param>
+ public override void DisplayDifferences(object expected, object actual, Tolerance tolerance)
+ {
+ WriteExpectedLine(expected, tolerance);
+ WriteActualLine(actual);
+ }
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ /// <param name="expected">The expected string value</param>
+ /// <param name="actual">The actual string value</param>
+ /// <param name="mismatch">The point at which the strings don't match or -1</param>
+ /// <param name="ignoreCase">If true, case is ignored in string comparisons</param>
+ /// <param name="clipping">If true, clip the strings to fit the max line length</param>
+ public override void DisplayStringDifferences(string expected, string actual, int mismatch, bool ignoreCase, bool clipping)
+ {
+ // Maximum string we can display without truncating
+ int maxDisplayLength = MaxLineLength
+ - PrefixLength // Allow for prefix
+ - 2; // 2 quotation marks
+
+ if ( clipping )
+ MsgUtils.ClipExpectedAndActual(ref expected, ref actual, maxDisplayLength, mismatch);
+
+ expected = MsgUtils.EscapeControlChars(expected);
+ actual = MsgUtils.EscapeControlChars(actual);
+
+ // The mismatch position may have changed due to clipping or white space conversion
+ mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, ignoreCase);
+
+ Write( Pfx_Expected );
+ WriteExpectedValue( expected );
+ if ( ignoreCase )
+ WriteModifier( "ignoring case" );
+ WriteLine();
+ WriteActualLine( actual );
+ //DisplayDifferences(expected, actual);
+ if (mismatch >= 0)
+ WriteCaretLine(mismatch);
+ }
+ #endregion
+
+ #region Public Methods - Low Level
+ /// <summary>
+ /// Writes the text for a connector.
+ /// </summary>
+ /// <param name="connector">The connector.</param>
+ public override void WriteConnector(string connector)
+ {
+ Write(Fmt_Connector, connector);
+ }
+
+ /// <summary>
+ /// Writes the text for a predicate.
+ /// </summary>
+ /// <param name="predicate">The predicate.</param>
+ public override void WritePredicate(string predicate)
+ {
+ Write(Fmt_Predicate, predicate);
+ }
+
+ //public override void WriteLabel(string label)
+ //{
+ // Write(Fmt_Label, label);
+ //}
+
+ /// <summary>
+ /// Write the text for a modifier.
+ /// </summary>
+ /// <param name="modifier">The modifier.</param>
+ public override void WriteModifier(string modifier)
+ {
+ Write(Fmt_Modifier, modifier);
+ }
+
+
+ /// <summary>
+ /// Writes the text for an expected value.
+ /// </summary>
+ /// <param name="expected">The expected value.</param>
+ public override void WriteExpectedValue(object expected)
+ {
+ WriteValue(expected);
+ }
+
+ /// <summary>
+ /// Writes the text for an actual value.
+ /// </summary>
+ /// <param name="actual">The actual value.</param>
+ public override void WriteActualValue(object actual)
+ {
+ WriteValue(actual);
+ }
+
+ /// <summary>
+ /// Writes the text for a generalized value.
+ /// </summary>
+ /// <param name="val">The value.</param>
+ public override void WriteValue(object val)
+ {
+ if (val == null)
+ Write(Fmt_Null);
+ else if (val.GetType().IsArray)
+ WriteArray((Array)val);
+ else if (val is string)
+ WriteString((string)val);
+ else if (val is IEnumerable)
+ WriteCollectionElements((IEnumerable)val, 0, 10);
+ else if (val is char)
+ WriteChar((char)val);
+ else if (val is double)
+ WriteDouble((double)val);
+ else if (val is float)
+ WriteFloat((float)val);
+ else if (val is decimal)
+ WriteDecimal((decimal)val);
+ else if (val is DateTime)
+ WriteDateTime((DateTime)val);
+ else if (val.GetType().IsValueType)
+ Write(Fmt_ValueType, val);
+ else
+ Write(Fmt_Default, val);
+ }
+
+ /// <summary>
+ /// Writes the text for a collection value,
+ /// starting at a particular point, to a max length
+ /// </summary>
+ /// <param name="collection">The collection containing elements to write.</param>
+ /// <param name="start">The starting point of the elements to write</param>
+ /// <param name="max">The maximum number of elements to write</param>
+ public override void WriteCollectionElements(IEnumerable collection, int start, int max)
+ {
+ int count = 0;
+ int index = 0;
+
+ foreach (object obj in collection)
+ {
+ if ( index++ >= start)
+ {
+ if (++count > max)
+ break;
+ Write(count == 1 ? "< " : ", ");
+ WriteValue(obj);
+ }
+ }
+
+ if (count == 0)
+ {
+ Write(Fmt_EmptyCollection);
+ return;
+ }
+
+ if (count > max)
+ Write("...");
+
+ Write(" >");
+ }
+
+ private void WriteArray(Array array)
+ {
+ if ( array.Length == 0 )
+ {
+ Write( Fmt_EmptyCollection );
+ return;
+ }
+
+ int rank = array.Rank;
+ int[] products = new int[rank];
+
+ for (int product = 1, r = rank; --r >= 0; )
+ products[r] = product *= array.GetLength(r);
+
+ int count = 0;
+ foreach (object obj in array)
+ {
+ if (count > 0)
+ Write(", ");
+
+ bool startSegment = false;
+ for (int r = 0; r < rank; r++)
+ {
+ startSegment = startSegment || count % products[r] == 0;
+ if (startSegment) Write("< ");
+ }
+
+ WriteValue(obj);
+
+ ++count;
+
+ bool nextSegment = false;
+ for (int r = 0; r < rank; r++)
+ {
+ nextSegment = nextSegment || count % products[r] == 0;
+ if (nextSegment) Write(" >");
+ }
+ }
+ }
+
+ private void WriteString(string s)
+ {
+ if (s == string.Empty)
+ Write(Fmt_EmptyString);
+ else
+ Write(Fmt_String, s);
+ }
+
+ private void WriteChar(char c)
+ {
+ Write(Fmt_Char, c);
+ }
+
+ private void WriteDouble(double d)
+ {
+
+ if (double.IsNaN(d) || double.IsInfinity(d))
+ Write(d);
+ else
+ {
+ string s = d.ToString("G17", CultureInfo.InvariantCulture);
+
+ if (s.IndexOf('.') > 0)
+ Write(s + "d");
+ else
+ Write(s + ".0d");
+ }
+ }
+
+ private void WriteFloat(float f)
+ {
+ if (float.IsNaN(f) || float.IsInfinity(f))
+ Write(f);
+ else
+ {
+ string s = f.ToString("G9", CultureInfo.InvariantCulture);
+
+ if (s.IndexOf('.') > 0)
+ Write(s + "f");
+ else
+ Write(s + ".0f");
+ }
+ }
+
+ private void WriteDecimal(Decimal d)
+ {
+ Write(d.ToString("G29", CultureInfo.InvariantCulture) + "m");
+ }
+
+ private void WriteDateTime(DateTime dt)
+ {
+ Write(dt.ToString(Fmt_DateTime, CultureInfo.InvariantCulture));
+ }
+ #endregion
+
+ #region Helper Methods
+ /// <summary>
+ /// Write the generic 'Expected' line for a constraint
+ /// </summary>
+ /// <param name="constraint">The constraint that failed</param>
+ private void WriteExpectedLine(Constraint constraint)
+ {
+ Write(Pfx_Expected);
+ constraint.WriteDescriptionTo(this);
+ WriteLine();
+ }
+
+ /// <summary>
+ /// Write the generic 'Expected' line for a given value
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ private void WriteExpectedLine(object expected)
+ {
+ WriteExpectedLine(expected, null);
+ }
+
+ /// <summary>
+ /// Write the generic 'Expected' line for a given value
+ /// and tolerance.
+ /// </summary>
+ /// <param name="expected">The expected value</param>
+ /// <param name="tolerance">The tolerance within which the test was made</param>
+ private void WriteExpectedLine(object expected, Tolerance tolerance)
+ {
+ Write(Pfx_Expected);
+ WriteExpectedValue(expected);
+
+ if (tolerance != null && !tolerance.IsEmpty)
+ {
+ WriteConnector("+/-");
+ WriteExpectedValue(tolerance.Value);
+ if (tolerance.Mode != ToleranceMode.Linear)
+ Write(" {0}", tolerance.Mode);
+ }
+
+ WriteLine();
+ }
+
+ /// <summary>
+ /// Write the generic 'Actual' line for a constraint
+ /// </summary>
+ /// <param name="constraint">The constraint for which the actual value is to be written</param>
+ private void WriteActualLine(Constraint constraint)
+ {
+ Write(Pfx_Actual);
+ constraint.WriteActualValueTo(this);
+ WriteLine();
+ }
+
+ /// <summary>
+ /// Write the generic 'Actual' line for a given value
+ /// </summary>
+ /// <param name="actual">The actual value causing a failure</param>
+ private void WriteActualLine(object actual)
+ {
+ Write(Pfx_Actual);
+ WriteActualValue(actual);
+ WriteLine();
+ }
+
+ private void WriteCaretLine(int mismatch)
+ {
+ // We subtract 2 for the initial 2 blanks and add back 1 for the initial quote
+ WriteLine(" {0}^", new string('-', PrefixLength + mismatch - 2 + 1));
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/ThreadUtility.cs b/NUnitLite-0.9.0/src/framework/Internal/ThreadUtility.cs
new file mode 100755
index 0000000..f526247
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/ThreadUtility.cs
@@ -0,0 +1,74 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF && !SILVERLIGHT
+using System;
+using System.Threading;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// The ThreadUtility class encapsulates several static methods
+ /// useful when working with threads.
+ /// </summary>
+ public class ThreadUtility
+ {
+ /// <summary>
+ /// Do our best to Kill a thread
+ /// </summary>
+ /// <param name="thread">The thread to kill</param>
+ public static void Kill(Thread thread)
+ {
+ Kill(thread, null);
+ }
+
+ /// <summary>
+ /// Do our best to kill a thread, passing state info
+ /// </summary>
+ /// <param name="thread">The thread to kill</param>
+ /// <param name="stateInfo">Info for the ThreadAbortException handler</param>
+ public static void Kill(Thread thread, object stateInfo)
+ {
+ try
+ {
+ if (stateInfo == null)
+ thread.Abort();
+ else
+ thread.Abort(stateInfo);
+ }
+ catch (ThreadStateException)
+ {
+ // Although obsolete, this use of Resume() takes care of
+ // the odd case where a ThreadStateException is received
+ // so we continue to use it.
+ thread.Resume();
+ }
+
+ if ( (thread.ThreadState & ThreadState.WaitSleepJoin) != 0 )
+ thread.Interrupt();
+ }
+
+ private ThreadUtility() { }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Internal/TypeHelper.cs b/NUnitLite-0.9.0/src/framework/Internal/TypeHelper.cs
new file mode 100755
index 0000000..9a0ed06
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/TypeHelper.cs
@@ -0,0 +1,340 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using System.Text;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// TypeHelper provides static methods that operate on Types.
+ /// </summary>
+ public class TypeHelper
+ {
+ /// <summary>
+ /// Gets the display name for a Type as used by NUnit.
+ /// </summary>
+ /// <param name="type">The Type for which a display name is needed.</param>
+ /// <returns>The display name for the Type</returns>
+ public static string GetDisplayName(Type type)
+ {
+#if CLR_2_0 || CLR_4_0
+ if (type.IsGenericParameter)
+ return type.Name;
+
+ if (type.IsGenericType)
+ {
+ string name = type.FullName;
+ int index = name.IndexOf('[');
+ if (index >= 0) name = name.Substring(0, index);
+
+ index = name.LastIndexOf('.');
+ if (index >= 0) name = name.Substring(index+1);
+
+ index = name.IndexOf('`');
+ if (index >= 0) name = name.Substring(0, index);
+
+ StringBuilder sb = new StringBuilder(name);
+
+ sb.Append("<");
+ int cnt = 0;
+ foreach (Type t in type.GetGenericArguments())
+ {
+ if (cnt++ > 0) sb.Append(",");
+ sb.Append(GetDisplayName(t));
+ }
+ sb.Append(">");
+
+ return sb.ToString();
+ }
+#endif
+
+ int lastdot = type.FullName.LastIndexOf('.');
+ return lastdot >= 0
+ ? type.FullName.Substring(lastdot+1)
+ : type.FullName;
+ }
+
+ /// <summary>
+ /// Gets the display name for a Type as used by NUnit.
+ /// </summary>
+ /// <param name="type">The Type for which a display name is needed.</param>
+ /// <param name="arglist">The arglist provided.</param>
+ /// <returns>The display name for the Type</returns>
+ public static string GetDisplayName(Type type, object[] arglist)
+ {
+ string baseName = GetDisplayName(type);
+ if (arglist == null || arglist.Length == 0)
+ return baseName;
+
+ StringBuilder sb = new StringBuilder( baseName );
+
+ sb.Append("(");
+ for (int i = 0; i < arglist.Length; i++)
+ {
+ if (i > 0) sb.Append(",");
+
+ object arg = arglist[i];
+ string display = arg == null ? "null" : arg.ToString();
+
+ if (arg is double || arg is float)
+ {
+ if (display.IndexOf('.') == -1)
+ display += ".0";
+ display += arg is double ? "d" : "f";
+ }
+ else if (arg is decimal) display += "m";
+ else if (arg is long) display += "L";
+ else if (arg is ulong) display += "UL";
+ else if (arg is string) display = "\"" + display + "\"";
+
+ sb.Append(display);
+ }
+ sb.Append(")");
+
+ return sb.ToString();
+ }
+
+ /// <summary>
+ /// Returns the best fit for a common type to be used in
+ /// matching actual arguments to a methods Type parameters.
+ /// </summary>
+ /// <param name="type1">The first type.</param>
+ /// <param name="type2">The second type.</param>
+ /// <returns>Either type1 or type2, depending on which is more general.</returns>
+ public static Type BestCommonType(Type type1, Type type2)
+ {
+ if (type1 == type2) return type1;
+ if (type1 == null) return type2;
+ if (type2 == null) return type1;
+
+ if (TypeHelper.IsNumeric(type1) && TypeHelper.IsNumeric(type2))
+ {
+ if (type1 == typeof(double)) return type1;
+ if (type2 == typeof(double)) return type2;
+
+ if (type1 == typeof(float)) return type1;
+ if (type2 == typeof(float)) return type2;
+
+ if (type1 == typeof(decimal)) return type1;
+ if (type2 == typeof(decimal)) return type2;
+
+ if (type1 == typeof(UInt64)) return type1;
+ if (type2 == typeof(UInt64)) return type2;
+
+ if (type1 == typeof(Int64)) return type1;
+ if (type2 == typeof(Int64)) return type2;
+
+ if (type1 == typeof(UInt32)) return type1;
+ if (type2 == typeof(UInt32)) return type2;
+
+ if (type1 == typeof(Int32)) return type1;
+ if (type2 == typeof(Int32)) return type2;
+
+ if (type1 == typeof(UInt16)) return type1;
+ if (type2 == typeof(UInt16)) return type2;
+
+ if (type1 == typeof(Int16)) return type1;
+ if (type2 == typeof(Int16)) return type2;
+
+ if (type1 == typeof(byte)) return type1;
+ if (type2 == typeof(byte)) return type2;
+
+ if (type1 == typeof(sbyte)) return type1;
+ if (type2 == typeof(sbyte)) return type2;
+ }
+
+ return type1;
+ }
+
+ /// <summary>
+ /// Determines whether the specified type is numeric.
+ /// </summary>
+ /// <param name="type">The type to be examined.</param>
+ /// <returns>
+ /// <c>true</c> if the specified type is numeric; otherwise, <c>false</c>.
+ /// </returns>
+ public static bool IsNumeric(Type type)
+ {
+ return type == typeof(double) ||
+ type == typeof(float) ||
+ type == typeof(decimal) ||
+ type == typeof(Int64) ||
+ type == typeof(Int32) ||
+ type == typeof(Int16) ||
+ type == typeof(UInt64) ||
+ type == typeof(UInt32) ||
+ type == typeof(UInt16) ||
+ type == typeof(byte) ||
+ type == typeof(sbyte);
+ }
+
+ /// <summary>
+ /// Convert an argument list to the required paramter types.
+ /// Currently, only widening numeric conversions are performed.
+ /// </summary>
+ /// <param name="arglist">An array of args to be converted</param>
+ /// <param name="parameters">A ParamterInfo[] whose types will be used as targets</param>
+ public static void ConvertArgumentList(object[] arglist, ParameterInfo[] parameters)
+ {
+ System.Diagnostics.Debug.Assert(arglist.Length == parameters.Length);
+
+ for (int i = 0; i < parameters.Length; i++)
+ {
+ object arg = arglist[i];
+
+ if (arg != null && arg is IConvertible)
+ {
+ Type argType = arg.GetType();
+ Type targetType = parameters[i].ParameterType;
+ bool convert = false;
+
+ if (argType != targetType && !argType.IsAssignableFrom(targetType))
+ {
+ if (IsNumeric(argType) && IsNumeric(targetType))
+ {
+ if (targetType == typeof(double) || targetType == typeof(float))
+ convert = arg is int || arg is long || arg is short || arg is byte || arg is sbyte;
+ else
+ if (targetType == typeof(long))
+ convert = arg is int || arg is short || arg is byte || arg is sbyte;
+ else
+ if (targetType == typeof(short))
+ convert = arg is byte || arg is sbyte;
+ }
+ }
+
+ if (convert)
+ arglist[i] = Convert.ChangeType(arg, targetType,
+ System.Globalization.CultureInfo.InvariantCulture);
+ }
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Creates an instance of a generic Type using the supplied Type arguments
+ /// </summary>
+ /// <param name="type">The generic type to be specialized.</param>
+ /// <param name="typeArgs">The type args.</param>
+ /// <returns>An instance of the generic type.</returns>
+ public static Type MakeGenericType(Type type, Type[] typeArgs)
+ {
+ // TODO: Add error handling
+ return type.MakeGenericType(typeArgs);
+ }
+
+ /// <summary>
+ /// Determines whether this instance can deduce type args for a generic type from the supplied arguments.
+ /// </summary>
+ /// <param name="type">The type to be examined.</param>
+ /// <param name="arglist">The arglist.</param>
+ /// <param name="typeArgsOut">The type args to be used.</param>
+ /// <returns>
+ /// <c>true</c> if this the provided args give sufficient information to determine the type args to be used; otherwise, <c>false</c>.
+ /// </returns>
+ public static bool CanDeduceTypeArgsFromArgs(Type type, object[] arglist, ref Type[] typeArgsOut)
+ {
+ Type[] typeParameters = type.GetGenericArguments();
+
+ foreach (ConstructorInfo ctor in type.GetConstructors())
+ {
+ ParameterInfo[] parameters = ctor.GetParameters();
+ if (parameters.Length != arglist.Length)
+ continue;
+
+ Type[] typeArgs = new Type[typeParameters.Length];
+ for (int i = 0; i < typeArgs.Length; i++)
+ {
+ for (int j = 0; j < arglist.Length; j++)
+ {
+ if (parameters[j].ParameterType.Equals(typeParameters[i]))
+ typeArgs[i] = TypeHelper.BestCommonType(
+ typeArgs[i],
+ arglist[j].GetType());
+ }
+
+ if (typeArgs[i] == null)
+ {
+ typeArgs = null;
+ break;
+ }
+ }
+
+ if (typeArgs != null)
+ {
+ typeArgsOut = typeArgs;
+ return true;
+ }
+ }
+
+ return false;
+ }
+#endif
+
+ /// <summary>
+ /// Gets the values for an enumeration, using Enum.GetTypes
+ /// where available, otherwise through reflection.
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ public static Array GetEnumValues(Type enumType)
+ {
+#if NETCF || SILVERLIGHT
+ FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
+
+ Array enumValues = Array.CreateInstance(enumType, fields.Length);
+
+ for (int index = 0; index < fields.Length; index++)
+ enumValues.SetValue(fields[index].GetValue(enumType), index);
+
+ return enumValues;
+#else
+ return Enum.GetValues(enumType);
+#endif
+ }
+
+ /// <summary>
+ /// Gets the names defined for an enumeration, using Enum.GetNames
+ /// where available, otherwise through reflection.
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ public static string[] GetEnumNames(Type enumType)
+ {
+#if NETCF || SILVERLIGHT
+ FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
+
+ string[] names = new string[fields.Length];
+
+ for (int index = 0; index < fields.Length; index++)
+ names[index] = fields[index].Name;
+
+ return names;
+#else
+ return Enum.GetNames(enumType);
+#endif
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/WorkItems/CompositeWorkItem.cs b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/CompositeWorkItem.cs
new file mode 100755
index 0000000..0438fad
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/CompositeWorkItem.cs
@@ -0,0 +1,162 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.WorkItems
+{
+ /// <summary>
+ /// A CompositeWorkItem represents a test suite and
+ /// encapsulates the execution of the suite as well
+ /// as all its child tests.
+ /// </summary>
+ public class CompositeWorkItem : WorkItem
+ {
+ private TestSuite _suite;
+ private ITestFilter _childFilter;
+#if CLR_2_0 || CLR_4_0
+ private System.Collections.Generic.Queue<WorkItem> _children = new System.Collections.Generic.Queue<WorkItem>();
+#else
+ private System.Collections.Queue _children = new System.Collections.Queue();
+#endif
+ private TestCommand _setupCommand;
+ private TestCommand _teardownCommand;
+
+ private CountdownEvent _childTestCountdown;
+
+ /// <summary>
+ /// Construct a CompositeWorkItem for executing a test suite
+ /// using a filter to select child tests.
+ /// </summary>
+ /// <param name="suite">The TestSuite to be executed</param>
+ /// <param name="context">The execution context in which to run the suite</param>
+ /// <param name="childFilter">A filter used to select child tests</param>
+ public CompositeWorkItem(TestSuite suite, TestExecutionContext context, ITestFilter childFilter)
+ : base(suite, context)
+ {
+ _suite = suite;
+ _setupCommand = suite.GetOneTimeSetUpCommand();
+ _teardownCommand = suite.GetOneTimeTearDownCommand();
+ _childFilter = childFilter;
+ }
+
+ /// <summary>
+ /// Method that actually performs the work. Overridden
+ /// in CompositeWorkItem to do setup, run all child
+ /// items and then do teardown.
+ /// </summary>
+ protected override void PerformWork()
+ {
+ // Assume success, since the result will be inconclusive
+ // if there is no setup method to run or if the
+ // context initialization fails.
+ Result.SetResult(ResultState.Success);
+
+ PerformOneTimeSetUp();
+
+ if (Result.ResultState.Status == TestStatus.Passed && _suite.HasChildren)
+ {
+ foreach (Test test in _suite.Tests)
+ if (_childFilter.Pass(test))
+ _children.Enqueue(CreateWorkItem(test, this.Context, _childFilter));
+
+ if (_children.Count > 0)
+ {
+ RunChildren();
+ return;
+ }
+ }
+
+ // Fall through in case there were no child tests to run.
+ // Otherwise, this is done in the completion event.
+ PerformOneTimeTearDown();
+
+ WorkItemComplete();
+ }
+
+ #region Helper Methods
+
+ private void PerformOneTimeSetUp()
+ {
+ try
+ {
+ _setupCommand.Execute(Context);
+
+ // SetUp may have changed some things
+ Context.UpdateContext();
+ }
+ catch (Exception ex)
+ {
+ if (ex is NUnitException || ex is System.Reflection.TargetInvocationException)
+ ex = ex.InnerException;
+
+ Result.RecordException(ex, FailureSite.SetUp);
+ }
+ }
+
+ private void RunChildren()
+ {
+ _childTestCountdown = new CountdownEvent(_children.Count);
+
+ while (_children.Count > 0)
+ {
+ WorkItem child = (WorkItem)_children.Dequeue();
+ child.Completed += new EventHandler(OnChildCompleted);
+ child.Execute();
+ }
+ }
+
+ private void PerformOneTimeTearDown()
+ {
+ TestExecutionContext.SetCurrentContext(Context);
+ _teardownCommand.Execute(Context);
+ }
+
+ private object _completionLock = new object();
+
+ private void OnChildCompleted(object sender, EventArgs e)
+ {
+ lock (_completionLock)
+ {
+ WorkItem childTask = sender as WorkItem;
+ if (childTask != null)
+ {
+ childTask.Completed -= new EventHandler(OnChildCompleted);
+ Result.AddResult(childTask.Result);
+ _childTestCountdown.Signal();
+
+ if (_childTestCountdown.CurrentCount == 0)
+ {
+ PerformOneTimeTearDown();
+ WorkItemComplete();
+ }
+ }
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/WorkItems/CountdownEvent.cs b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/CountdownEvent.cs
new file mode 100755
index 0000000..3c7c7c7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/CountdownEvent.cs
@@ -0,0 +1,87 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !CLR_4_0 || SILVERLIGHT
+using System.Threading;
+
+namespace NUnit.Framework.Internal.WorkItems
+{
+ /// <summary>
+ /// A simplified implementation of .NET 4 CountdownEvent
+ /// for use in earlier versions of .NET. Only the methods
+ /// used by NUnit are implemented.
+ /// </summary>
+ public class CountdownEvent
+ {
+ int _initialCount;
+ int _remainingCount;
+ object _lock = new object();
+ ManualResetEvent _event = new ManualResetEvent(false);
+
+ /// <summary>
+ /// Construct a CountdownEvent
+ /// </summary>
+ /// <param name="initialCount">The initial count</param>
+ public CountdownEvent(int initialCount)
+ {
+ _initialCount = _remainingCount = initialCount;
+ }
+
+ /// <summary>
+ /// Gets the initial count established for the CountdownEvent
+ /// </summary>
+ public int InitialCount
+ {
+ get { return _initialCount; }
+ }
+
+ /// <summary>
+ /// Gets the current count remaining for the CountdownEvent
+ /// </summary>
+ public int CurrentCount
+ {
+ get { return _remainingCount; }
+ }
+
+ /// <summary>
+ /// Decrement the count by one
+ /// </summary>
+ public void Signal()
+ {
+ lock (_lock)
+ {
+ if (--_remainingCount == 0)
+ _event.Set();
+ }
+ }
+
+ /// <summary>
+ /// Block the thread until the count reaches zero
+ /// </summary>
+ public void Wait()
+ {
+ _event.WaitOne();
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Internal/WorkItems/SimpleWorkItem.cs b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/SimpleWorkItem.cs
new file mode 100755
index 0000000..4718c96
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/SimpleWorkItem.cs
@@ -0,0 +1,77 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+using NUnit.Framework.Internal.Commands;
+
+namespace NUnit.Framework.Internal.WorkItems
+{
+ /// <summary>
+ /// A SimpleWorkItem represents a single test case and is
+ /// marked as completed immediately upon execution. This
+ /// class is also used for skipped or ignored test suites.
+ /// </summary>
+ public class SimpleWorkItem : WorkItem
+ {
+ private TestCommand _command;
+
+ /// <summary>
+ /// Construct a simple work item for a test.
+ /// </summary>
+ /// <param name="test">The test to be executed</param>
+ /// <param name="context">The execution context in which the test is to be run</param>
+ public SimpleWorkItem(TestMethod test, TestExecutionContext context)
+ : base(test, context)
+ {
+ _command = test.GetTestCommand();
+ }
+
+ /// <summary>
+ /// Construct a simple work item for a test command.
+ /// </summary>
+ /// <param name="command">The command to be executed</param>
+ /// <param name="context">The execution context in which the test is to be run</param>
+ public SimpleWorkItem(TestCommand command, TestExecutionContext context)
+ : base(command.Test, context)
+ {
+ _command = command;
+ }
+
+ /// <summary>
+ /// Method that performs actually performs the work.
+ /// </summary>
+ protected override void PerformWork()
+ {
+ try
+ {
+ testResult = _command.Execute(Context);
+ }
+ finally
+ {
+ WorkItemComplete();
+ }
+ }
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItem.cs b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItem.cs
new file mode 100755
index 0000000..10ad210
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItem.cs
@@ -0,0 +1,273 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Diagnostics;
+using System.Threading;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal.WorkItems
+{
+ /// <summary>
+ /// A WorkItem may be an individual test case, a fixture or
+ /// a higher level grouping of tests. All WorkItems inherit
+ /// from the abstract WorkItem class, which uses the template
+ /// pattern to allow derived classes to perform work in
+ /// whatever way is needed.
+ /// </summary>
+ public abstract class WorkItem
+ {
+ // The test this WorkItem represents
+ private readonly Test _test;
+
+ // The TestCommand for that test
+ //private readonly TestCommand _command;
+
+ // The execution context used by this work item
+ private TestExecutionContext _context;
+
+ // The current state of the WorkItem
+ private WorkItemState _state;
+
+ /// <summary>
+ /// The result of running the test
+ /// </summary>
+ protected TestResult testResult;
+
+ #region Static Factory Method
+
+ /// <summary>
+ /// Create a WorkItem appropriate for the test to be run
+ /// </summary>
+ /// <param name="test">The test to be executed</param>
+ /// <param name="context">The execution context in which the test will be run</param>
+ /// <param name="filter">A filter for selecting chind tests</param>
+ /// <returns></returns>
+ public static WorkItem CreateWorkItem(Test test, TestExecutionContext context, ITestFilter filter)
+ {
+ if (test.RunState != RunState.Runnable && test.RunState != RunState.Explicit)
+ return new SimpleWorkItem(new SkipCommand(test), context);
+
+ TestSuite suite = test as TestSuite;
+ if (suite != null)
+ return new CompositeWorkItem(suite, context, filter);
+
+ return new SimpleWorkItem((TestMethod)test, context);
+ }
+
+ #endregion
+
+ #region Constructor
+
+ /// <summary>
+ /// Construct a WorkItem for a particular test.
+ /// </summary>
+ /// <param name="test">The test that the WorkItem will run</param>
+ /// <param name="context">The context to be used for running this test</param>
+ public WorkItem(Test test, TestExecutionContext context)
+ {
+ _test = test;
+ _context = context.Save();
+ testResult = test.MakeTestResult();
+ //_command = test.GetTestCommand();
+ _state = WorkItemState.Ready;
+ }
+
+ #endregion
+
+ #region Properties and Events
+
+ /// <summary>
+ /// Event triggered when the item is complete
+ /// </summary>
+ public event EventHandler Completed;
+
+ /// <summary>
+ /// Gets the current state of the WorkItem
+ /// </summary>
+ public WorkItemState State
+ {
+ get { return _state; }
+ }
+
+ /// <summary>
+ /// The test being executed by the work item
+ /// </summary>
+ public Test Test
+ {
+ get { return _test; }
+ }
+
+ /// <summary>
+ /// The execution context in use
+ /// </summary>
+ protected TestExecutionContext Context
+ {
+ get { return _context; }
+ }
+
+ /// <summary>
+ /// The original context supplied from the fixture
+ /// or other higher-level test
+ /// </summary>
+ protected TestExecutionContext PriorContext
+ {
+ get { return _context.prior; }
+ }
+
+ ///// <summary>
+ ///// The command used to run the test
+ ///// </summary>
+ //protected TestCommand Command
+ //{
+ // get { return _command; }
+ //}
+
+ /// <summary>
+ /// The test result
+ /// </summary>
+ public TestResult Result
+ {
+ get { return testResult; }
+ }
+
+ #endregion
+
+ #region Public Methods
+
+ /// <summary>
+ /// Execute the current work item, including any
+ /// child work items.
+ /// </summary>
+ public virtual void Execute()
+ {
+#if (CLR_2_0 || CLR_4_0) && !NETCF && !SILVERLIGHT
+ // Timeout set at a higher level
+ int timeout = _context.TestCaseTimeout;
+
+ // Timeout set on this test
+ if (Test.Properties.ContainsKey(PropertyNames.Timeout))
+ timeout = (int)Test.Properties.Get(PropertyNames.Timeout);
+
+ if (Test is TestMethod && timeout > 0)
+ RunTestWithTimeout(timeout);
+ else
+ RunTest();
+#else
+ RunTest();
+#endif
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF && !SILVERLIGHT
+ private void RunTestWithTimeout(int timeout)
+ {
+ Thread thread = new Thread(new ThreadStart(RunTest));
+
+ thread.Start();
+
+ if (timeout <= 0)
+ timeout = Timeout.Infinite;
+
+ thread.Join(timeout);
+
+ if (thread.IsAlive)
+ {
+ ThreadUtility.Kill(thread);
+
+ // NOTE: Without the use of Join, there is a race condition here.
+ // The thread sets the result to Cancelled and our code below sets
+ // it to Failure. In order for the result to be shown as a failure,
+ // we need to ensure that the following code executes after the
+ // thread has terminated. There is a risk here: the test code might
+ // refuse to terminate. However, it's more important to deal with
+ // the normal rather than a pathological case.
+ thread.Join();
+
+ Result.SetResult(ResultState.Failure,
+ string.Format("Test exceeded Timeout value of {0}ms", timeout));
+
+ WorkItemComplete();
+ }
+ }
+#endif
+
+ private void RunTest()
+ {
+ _context.CurrentTest = this.Test;
+ _context.CurrentResult = this.Result;
+ _context.Listener.TestStarted(this.Test);
+ _context.StartTime = DateTime.Now;
+
+ TestExecutionContext.SetCurrentContext(_context);
+
+#if (CLR_2_0 || CLR_4_0) && !SILVERLIGHT && !NETCF_2_0
+ long startTicks = Stopwatch.GetTimestamp();
+#endif
+
+ try
+ {
+ PerformWork();
+ }
+ finally
+ {
+#if (CLR_2_0 || CLR_4_0) && !SILVERLIGHT && !NETCF_2_0
+ long tickCount = Stopwatch.GetTimestamp() - startTicks;
+ double seconds = (double)tickCount / Stopwatch.Frequency;
+ Result.Duration = TimeSpan.FromSeconds(seconds);
+#else
+ Result.Duration = DateTime.Now - Context.StartTime;
+#endif
+
+ Result.AssertCount = _context.AssertCount;
+
+ _context.Listener.TestFinished(Result);
+
+ _context = _context.Restore();
+ _context.AssertCount += Result.AssertCount;
+ }
+ }
+
+ #endregion
+
+ #region Protected Methods
+
+ /// <summary>
+ /// Method that performs actually performs the work. It should
+ /// set the State to WorkItemState.Complete when done.
+ /// </summary>
+ protected abstract void PerformWork();
+
+ /// <summary>
+ /// Method called by the derived class when all work is complete
+ /// </summary>
+ protected void WorkItemComplete()
+ {
+ _state = WorkItemState.Complete;
+ if (Completed != null)
+ Completed(this, EventArgs.Empty);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItemState.cs b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItemState.cs
new file mode 100755
index 0000000..581006e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Internal/WorkItems/WorkItemState.cs
@@ -0,0 +1,46 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Internal.WorkItems
+{
+ /// <summary>
+ /// The current state of a work item
+ /// </summary>
+ public enum WorkItemState
+ {
+ /// <summary>
+ /// Ready to run or continue
+ /// </summary>
+ Ready,
+
+ /// <summary>
+ /// Waiting for a dependency to complete
+ /// </summary>
+ Waiting,
+
+ /// <summary>
+ /// Complete
+ /// </summary>
+ Complete
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Is.cs b/NUnitLite-0.9.0/src/framework/Is.cs
new file mode 100755
index 0000000..fe32db8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Is.cs
@@ -0,0 +1,535 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Helper class with properties and methods that supply
+ /// a number of constraints used in Asserts.
+ /// </summary>
+ public class Is
+ {
+ #region Not
+
+ /// <summary>
+ /// Returns a ConstraintExpression that negates any
+ /// following constraint.
+ /// </summary>
+ public static ConstraintExpression Not
+ {
+ get { return new ConstraintExpression().Not; }
+ }
+
+ #endregion
+
+ #region All
+
+ /// <summary>
+ /// Returns a ConstraintExpression, which will apply
+ /// the following constraint to all members of a collection,
+ /// succeeding if all of them succeed.
+ /// </summary>
+ public static ConstraintExpression All
+ {
+ get { return new ConstraintExpression().All; }
+ }
+
+ #endregion
+
+ #region Null
+
+ /// <summary>
+ /// Returns a constraint that tests for null
+ /// </summary>
+ public static NullConstraint Null
+ {
+ get { return new NullConstraint(); }
+ }
+
+ #endregion
+
+ #region True
+
+ /// <summary>
+ /// Returns a constraint that tests for True
+ /// </summary>
+ public static TrueConstraint True
+ {
+ get { return new TrueConstraint(); }
+ }
+
+ #endregion
+
+ #region False
+
+ /// <summary>
+ /// Returns a constraint that tests for False
+ /// </summary>
+ public static FalseConstraint False
+ {
+ get { return new FalseConstraint(); }
+ }
+
+ #endregion
+
+ #region Positive
+
+ /// <summary>
+ /// Returns a constraint that tests for a positive value
+ /// </summary>
+ public static GreaterThanConstraint Positive
+ {
+ get { return new GreaterThanConstraint(0); }
+ }
+
+ #endregion
+
+ #region Negative
+
+ /// <summary>
+ /// Returns a constraint that tests for a negative value
+ /// </summary>
+ public static LessThanConstraint Negative
+ {
+ get { return new LessThanConstraint(0); }
+ }
+
+ #endregion
+
+ #region NaN
+
+ /// <summary>
+ /// Returns a constraint that tests for NaN
+ /// </summary>
+ public static NaNConstraint NaN
+ {
+ get { return new NaNConstraint(); }
+ }
+
+ #endregion
+
+ #region Empty
+
+ /// <summary>
+ /// Returns a constraint that tests for empty
+ /// </summary>
+ public static EmptyConstraint Empty
+ {
+ get { return new EmptyConstraint(); }
+ }
+
+ #endregion
+
+ #region Unique
+
+ /// <summary>
+ /// Returns a constraint that tests whether a collection
+ /// contains all unique items.
+ /// </summary>
+ public static UniqueItemsConstraint Unique
+ {
+ get { return new UniqueItemsConstraint(); }
+ }
+
+ #endregion
+
+ #region BinarySerializable
+
+#if !NETCF && !SILVERLIGHT
+ /// <summary>
+ /// Returns a constraint that tests whether an object graph is serializable in binary format.
+ /// </summary>
+ public static BinarySerializableConstraint BinarySerializable
+ {
+ get { return new BinarySerializableConstraint(); }
+ }
+#endif
+
+ #endregion
+
+ #region XmlSerializable
+
+#if !SILVERLIGHT
+ /// <summary>
+ /// Returns a constraint that tests whether an object graph is serializable in xml format.
+ /// </summary>
+ public static XmlSerializableConstraint XmlSerializable
+ {
+ get { return new XmlSerializableConstraint(); }
+ }
+#endif
+
+ #endregion
+
+ #region EqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests two items for equality
+ /// </summary>
+ public static EqualConstraint EqualTo(object expected)
+ {
+ return new EqualConstraint(expected);
+ }
+
+ #endregion
+
+ #region SameAs
+
+ /// <summary>
+ /// Returns a constraint that tests that two references are the same object
+ /// </summary>
+ public static SameAsConstraint SameAs(object expected)
+ {
+ return new SameAsConstraint(expected);
+ }
+
+ #endregion
+
+ #region GreaterThan
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than the suppled argument
+ /// </summary>
+ public static GreaterThanConstraint GreaterThan(object expected)
+ {
+ return new GreaterThanConstraint(expected);
+ }
+
+ #endregion
+
+ #region GreaterThanOrEqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than or equal to the suppled argument
+ /// </summary>
+ public static GreaterThanOrEqualConstraint GreaterThanOrEqualTo(object expected)
+ {
+ return new GreaterThanOrEqualConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is greater than or equal to the suppled argument
+ /// </summary>
+ public static GreaterThanOrEqualConstraint AtLeast(object expected)
+ {
+ return new GreaterThanOrEqualConstraint(expected);
+ }
+
+ #endregion
+
+ #region LessThan
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than the suppled argument
+ /// </summary>
+ public static LessThanConstraint LessThan(object expected)
+ {
+ return new LessThanConstraint(expected);
+ }
+
+ #endregion
+
+ #region LessThanOrEqualTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than or equal to the suppled argument
+ /// </summary>
+ public static LessThanOrEqualConstraint LessThanOrEqualTo(object expected)
+ {
+ return new LessThanOrEqualConstraint(expected);
+ }
+
+ /// <summary>
+ /// Returns a constraint that tests whether the
+ /// actual value is less than or equal to the suppled argument
+ /// </summary>
+ public static LessThanOrEqualConstraint AtMost(object expected)
+ {
+ return new LessThanOrEqualConstraint(expected);
+ }
+
+ #endregion
+
+ #region TypeOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual
+ /// value is of the exact type supplied as an argument.
+ /// </summary>
+ public static ExactTypeConstraint TypeOf(Type expectedType)
+ {
+ return new ExactTypeConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual
+ /// value is of the exact type supplied as an argument.
+ /// </summary>
+ public static ExactTypeConstraint TypeOf<T>()
+ {
+ return new ExactTypeConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region InstanceOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is of the type supplied as an argument or a derived type.
+ /// </summary>
+ public static InstanceOfTypeConstraint InstanceOf(Type expectedType)
+ {
+ return new InstanceOfTypeConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is of the type supplied as an argument or a derived type.
+ /// </summary>
+ public static InstanceOfTypeConstraint InstanceOf<T>()
+ {
+ return new InstanceOfTypeConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region AssignableFrom
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public static AssignableFromConstraint AssignableFrom(Type expectedType)
+ {
+ return new AssignableFromConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public static AssignableFromConstraint AssignableFrom<T>()
+ {
+ return new AssignableFromConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region AssignableTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public static AssignableToConstraint AssignableTo(Type expectedType)
+ {
+ return new AssignableToConstraint(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is assignable from the type supplied as an argument.
+ /// </summary>
+ public static AssignableToConstraint AssignableTo<T>()
+ {
+ return new AssignableToConstraint(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region EquivalentTo
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is a collection containing the same elements as the
+ /// collection supplied as an argument.
+ /// </summary>
+ public static CollectionEquivalentConstraint EquivalentTo(IEnumerable expected)
+ {
+ return new CollectionEquivalentConstraint(expected);
+ }
+
+ #endregion
+
+ #region SubsetOf
+
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value
+ /// is a subset of the collection supplied as an argument.
+ /// </summary>
+ public static CollectionSubsetConstraint SubsetOf(IEnumerable expected)
+ {
+ return new CollectionSubsetConstraint(expected);
+ }
+
+ #endregion
+
+ #region Ordered
+
+ /// <summary>
+ /// Returns a constraint that tests whether a collection is ordered
+ /// </summary>
+ public static CollectionOrderedConstraint Ordered
+ {
+ get { return new CollectionOrderedConstraint(); }
+ }
+
+ #endregion
+
+ #region StringContaining
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value contains the substring supplied as an argument.
+ /// </summary>
+ public static SubstringConstraint StringContaining(string expected)
+ {
+ return new SubstringConstraint(expected);
+ }
+
+ #endregion
+
+ #region StringStarting
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value starts with the substring supplied as an argument.
+ /// </summary>
+ public static StartsWithConstraint StringStarting(string expected)
+ {
+ return new StartsWithConstraint(expected);
+ }
+
+ #endregion
+
+ #region StringEnding
+
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value ends with the substring supplied as an argument.
+ /// </summary>
+ public static EndsWithConstraint StringEnding(string expected)
+ {
+ return new EndsWithConstraint(expected);
+ }
+
+ #endregion
+
+ #region StringMatching
+
+#if !NETCF
+ /// <summary>
+ /// Returns a constraint that succeeds if the actual
+ /// value matches the regular expression supplied as an argument.
+ /// </summary>
+ public static RegexConstraint StringMatching(string pattern)
+ {
+ return new RegexConstraint(pattern);
+ }
+#endif
+
+ #endregion
+
+ #region SamePath
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same as an expected path after canonicalization.
+ /// </summary>
+ public static SamePathConstraint SamePath(string expected)
+ {
+ return new SamePathConstraint(expected);
+ }
+
+ #endregion
+
+ #region SubPath
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is under an expected path after canonicalization.
+ /// </summary>
+ public static SubPathConstraint SubPath(string expected)
+ {
+ return new SubPathConstraint(expected);
+ }
+
+ #endregion
+
+ #region SamePathOrUnder
+
+ /// <summary>
+ /// Returns a constraint that tests whether the path provided
+ /// is the same path or under an expected path after canonicalization.
+ /// </summary>
+ public static SamePathOrUnderConstraint SamePathOrUnder(string expected)
+ {
+ return new SamePathOrUnderConstraint(expected);
+ }
+
+ #endregion
+
+ #region InRange
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value falls
+ /// within a specified range.
+ /// </summary>
+ public static RangeConstraint<T> InRange<T>(T from, T to) where T : IComparable<T>
+ {
+ return new RangeConstraint<T>(from, to);
+ }
+#else
+ /// <summary>
+ /// Returns a constraint that tests whether the actual value falls
+ /// within a specified range.
+ /// </summary>
+ public static RangeConstraint InRange(IComparable from, IComparable to)
+ {
+ return new RangeConstraint(from, to);
+ }
+#endif
+
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Iz.cs b/NUnitLite-0.9.0/src/framework/Iz.cs
new file mode 100755
index 0000000..8041458
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Iz.cs
@@ -0,0 +1,35 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// The Iz class is a synonym for Is intended for use in VB,
+ /// which regards Is as a keyword.
+ /// </summary>
+ public class Iz : Is
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/ListMapper.cs b/NUnitLite-0.9.0/src/framework/ListMapper.cs
new file mode 100755
index 0000000..00d00f0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/ListMapper.cs
@@ -0,0 +1,69 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// ListMapper is used to transform a collection used as an actual argument
+ /// producing another collection to be used in the assertion.
+ /// </summary>
+ public class ListMapper
+ {
+ ICollection original;
+
+ /// <summary>
+ /// Construct a ListMapper based on a collection
+ /// </summary>
+ /// <param name="original">The collection to be transformed</param>
+ public ListMapper( ICollection original )
+ {
+ this.original = original;
+ }
+
+ /// <summary>
+ /// Produces a collection containing all the values of a property
+ /// </summary>
+ /// <param name="name">The collection of property values</param>
+ /// <returns></returns>
+ public ICollection Property( string name )
+ {
+ ObjectList propList = new ObjectList();
+ foreach( object item in original )
+ {
+ PropertyInfo property = item.GetType().GetProperty( name,
+ BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );
+ if ( property == null )
+ throw new ArgumentException( string.Format(
+ "{0} does not have a {1} property", item, name ) );
+
+ propList.Add( property.GetValue( item, null ) );
+ }
+
+ return propList;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/MessageMatch.cs b/NUnitLite-0.9.0/src/framework/MessageMatch.cs
new file mode 100755
index 0000000..c90a088
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/MessageMatch.cs
@@ -0,0 +1,40 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Enumeration indicating how the expected message parameter is to be used
+ /// </summary>
+ public enum MessageMatch
+ {
+ /// Expect an exact match
+ Exact,
+ /// Expect a message containing the parameter string
+ Contains,
+ /// Match the regular expression provided as a parameter
+ Regex,
+ /// Expect a message that starts with the parameter string
+ StartsWith
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/ObjectList.cs b/NUnitLite-0.9.0/src/framework/ObjectList.cs
new file mode 100755
index 0000000..3ba6f0e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/ObjectList.cs
@@ -0,0 +1,52 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit
+{
+ /// <summary>
+ /// ObjectList represents a collection of objects. It is implemented
+ /// as a List&lt;object&gt; in .NET 2.0 or higher and as an ArrayList otherwise.
+ /// ObjectList does not attempt to be a general replacement for either of
+ /// these classes but only implements what is needed within the framework.
+ /// </summary>
+#if CLR_2_0 || CLR_4_0
+ public class ObjectList : System.Collections.Generic.List<object>
+ {
+ /// <summary>
+ /// Adds a range of values to the collection.
+ /// </summary>
+ /// <param name="collection">The collection.</param>
+ public void AddRange(System.Collections.ICollection collection)
+ {
+ foreach (object item in collection)
+ Add(item);
+ }
+ }
+#else
+ public class ObjectList : System.Collections.ArrayList
+ {
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/CommandLineOptions.cs b/NUnitLite-0.9.0/src/framework/Runner/CommandLineOptions.cs
new file mode 100755
index 0000000..ddd8c7d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/CommandLineOptions.cs
@@ -0,0 +1,399 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using System.Text;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// The CommandLineOptions class parses and holds the values of
+ /// any options entered at the command line.
+ /// </summary>
+ public class CommandLineOptions
+ {
+ private string optionChars;
+ private static string NL = NUnit.Env.NewLine;
+
+ private bool wait = false;
+ private bool noheader = false;
+ private bool help = false;
+ private bool full = false;
+ private bool explore = false;
+ private bool labelTestsInOutput = false;
+
+ private string exploreFile;
+ private string resultFile;
+ private string resultFormat;
+ private string outFile;
+ private string includeCategory;
+ private string excludeCategory;
+
+ private bool error = false;
+
+ private StringList tests = new StringList();
+ private StringList invalidOptions = new StringList();
+ private StringList parameters = new StringList();
+
+ #region Properties
+
+ /// <summary>
+ /// Gets a value indicating whether the 'wait' option was used.
+ /// </summary>
+ public bool Wait
+ {
+ get { return wait; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether the 'nologo' option was used.
+ /// </summary>
+ public bool NoHeader
+ {
+ get { return noheader; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether the 'help' option was used.
+ /// </summary>
+ public bool ShowHelp
+ {
+ get { return help; }
+ }
+
+ /// <summary>
+ /// Gets a list of all tests specified on the command line
+ /// </summary>
+ public string[] Tests
+ {
+ get { return (string[])tests.ToArray(); }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether a full report should be displayed
+ /// </summary>
+ public bool Full
+ {
+ get { return full; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether tests should be listed
+ /// rather than run.
+ /// </summary>
+ public bool Explore
+ {
+ get { return explore; }
+ }
+
+ /// <summary>
+ /// Gets the name of the file to be used for listing tests
+ /// </summary>
+ public string ExploreFile
+ {
+ get { return ExpandToFullPath(exploreFile.Length < 1 ? "tests.xml" : exploreFile); }
+ }
+
+ /// <summary>
+ /// Gets the name of the file to be used for test results
+ /// </summary>
+ public string ResultFile
+ {
+ get { return ExpandToFullPath(resultFile); }
+ }
+
+ /// <summary>
+ /// Gets the format to be used for test results
+ /// </summary>
+ public string ResultFormat
+ {
+ get { return resultFormat; }
+ }
+
+ /// <summary>
+ /// Gets the full path of the file to be used for output
+ /// </summary>
+ public string OutFile
+ {
+ get
+ {
+ return ExpandToFullPath(outFile);
+ }
+ }
+
+ /// <summary>
+ /// Gets the list of categories to include
+ /// </summary>
+ public string Include
+ {
+ get
+ {
+ return includeCategory;
+ }
+ }
+
+ /// <summary>
+ /// Gets the list of categories to exclude
+ /// </summary>
+ public string Exclude
+ {
+ get
+ {
+ return excludeCategory;
+ }
+ }
+
+ /// <summary>
+ /// Gets a flag indicating whether each test should
+ /// be labeled in the output.
+ /// </summary>
+ public bool LabelTestsInOutput
+ {
+ get { return labelTestsInOutput; }
+ }
+
+ private string ExpandToFullPath(string path)
+ {
+ if (path == null) return null;
+
+#if NETCF
+ return Path.Combine(NUnit.Env.DocumentFolder, path);
+#else
+ return Path.GetFullPath(path);
+#endif
+ }
+
+ /// <summary>
+ /// Gets the test count
+ /// </summary>
+ public int TestCount
+ {
+ get { return tests.Count; }
+ }
+
+ #endregion
+
+ /// <summary>
+ /// Construct a CommandLineOptions object using default option chars
+ /// </summary>
+ public CommandLineOptions()
+ {
+ this.optionChars = System.IO.Path.DirectorySeparatorChar == '/' ? "-" : "/-";
+ }
+
+ /// <summary>
+ /// Construct a CommandLineOptions object using specified option chars
+ /// </summary>
+ /// <param name="optionChars"></param>
+ public CommandLineOptions(string optionChars)
+ {
+ this.optionChars = optionChars;
+ }
+
+ /// <summary>
+ /// Parse command arguments and initialize option settings accordingly
+ /// </summary>
+ /// <param name="args">The argument list</param>
+ public void Parse(params string[] args)
+ {
+ foreach( string arg in args )
+ {
+ if (optionChars.IndexOf(arg[0]) >= 0 )
+ ProcessOption(arg);
+ else
+ ProcessParameter(arg);
+ }
+ }
+
+ /// <summary>
+ /// Gets the parameters provided on the commandline
+ /// </summary>
+ public string[] Parameters
+ {
+ get { return (string[])parameters.ToArray(); }
+ }
+
+ private void ProcessOption(string opt)
+ {
+ int pos = opt.IndexOfAny( new char[] { ':', '=' } );
+ string val = string.Empty;
+
+ if (pos >= 0)
+ {
+ val = opt.Substring(pos + 1);
+ opt = opt.Substring(0, pos);
+ }
+
+ switch (opt.Substring(1))
+ {
+ case "wait":
+ wait = true;
+ break;
+ case "noheader":
+ case "noh":
+ noheader = true;
+ break;
+ case "help":
+ case "h":
+ help = true;
+ break;
+ case "test":
+ tests.Add(val);
+ break;
+ case "full":
+ full = true;
+ break;
+ case "explore":
+ explore = true;
+ exploreFile = val;
+ break;
+ case "result":
+ resultFile = val;
+ break;
+ case "format":
+ resultFormat = val;
+ if (resultFormat != "nunit3" && resultFormat != "nunit2")
+ error = true;
+ break;
+ case "out":
+ outFile = val;
+ break;
+ case "labels":
+ labelTestsInOutput = true;
+ break;
+ case "include":
+ includeCategory = val;
+ break;
+ case "exclude":
+ excludeCategory = val;
+ break;
+ default:
+ error = true;
+ invalidOptions.Add(opt);
+ break;
+ }
+ }
+
+ private void ProcessParameter(string param)
+ {
+ parameters.Add(param);
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether there was an error in parsing the options.
+ /// </summary>
+ /// <value><c>true</c> if error; otherwise, <c>false</c>.</value>
+ public bool Error
+ {
+ get { return error; }
+ }
+
+ /// <summary>
+ /// Gets the error message.
+ /// </summary>
+ /// <value>The error message.</value>
+ public string ErrorMessage
+ {
+ get
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (string opt in invalidOptions)
+ sb.Append( "Invalid option: " + opt + NL );
+ if (resultFormat != null && resultFormat != "nunit3" && resultFormat != "nunit2")
+ sb.Append("Invalid result format: " + resultFormat + NL);
+ return sb.ToString();
+ }
+ }
+
+ /// <summary>
+ /// Gets the help text.
+ /// </summary>
+ /// <value>The help text.</value>
+ public string HelpText
+ {
+ get
+ {
+ StringBuilder sb = new StringBuilder();
+
+#if PocketPC || WindowsCE || NETCF || SILVERLIGHT
+ string name = "NUnitLite";
+#else
+ string name = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;
+#endif
+
+ sb.Append("Usage: " + name + " [assemblies] [options]" + NL + NL);
+ sb.Append("Runs a set of NUnitLite tests from the console." + NL + NL);
+ sb.Append("You may specify one or more test assemblies by name, without a path or" + NL);
+ sb.Append("extension. They must be in the same in the same directory as the exe" + NL);
+ sb.Append("or on the probing path. If no assemblies are provided, tests in the" + NL);
+ sb.Append("executing assembly itself are run." + NL + NL);
+ sb.Append("Options:" + NL);
+ sb.Append(" -test:testname Provides the name of a test to run. This option may be" + NL);
+ sb.Append(" repeated. If no test names are given, all tests are run." + NL + NL);
+ sb.Append(" -out:FILE File to which output is redirected. If this option is not" + NL);
+ sb.Append(" used, output is to the Console, which means it is lost" + NL);
+ sb.Append(" on devices without a Console." + NL + NL);
+ sb.Append(" -full Prints full report of all test results." + NL + NL);
+ sb.Append(" -result:FILE File to which the xml test result is written." + NL + NL);
+ sb.Append(" -format:FORMAT Format in which the result is to be written. FORMAT must be" + NL);
+ sb.Append(" either nunit3 or nunit2. The default is nunit3." + NL + NL);
+ sb.Append(" -explore:FILE If provided, this option indicates that the tests" + NL);
+ sb.Append(" should be listed rather than executed. They are listed" + NL);
+ sb.Append(" to the specified file in XML format." + NL);
+ sb.Append(" -help,-h Displays this help" + NL + NL);
+ sb.Append(" -noheader,-noh Suppresses display of the initial message" + NL + NL);
+ sb.Append(" -labels Displays the name of each test when it starts" + NL + NL);
+ sb.Append(" -wait Waits for a key press before exiting" + NL + NL);
+
+ sb.Append("Notes:" + NL);
+ sb.Append(" * File names may be listed by themselves, with a relative path or " + NL);
+ sb.Append(" using an absolute path. Any relative path is based on the current " + NL);
+ sb.Append(" directory or on the Documents folder if running on a under the " +NL);
+ sb.Append(" compact framework." + NL + NL);
+ if (System.IO.Path.DirectorySeparatorChar != '/')
+ sb.Append(" * On Windows, options may be prefixed by a '/' character if desired" + NL + NL);
+ sb.Append(" * Options that take values may use an equal sign or a colon" + NL);
+ sb.Append(" to separate the option from its value." + NL + NL);
+
+ return sb.ToString();
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ class StringList : List<string> { }
+#else
+ class StringList : ArrayList
+ {
+ public new string[] ToArray()
+ {
+ return (string[])ToArray(typeof(string));
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/ConsoleWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/ConsoleWriter.cs
new file mode 100755
index 0000000..0d2038d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/ConsoleWriter.cs
@@ -0,0 +1,113 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// Provide an alternative to Console.Out for
+ /// version 1.0 of the compact framework.
+ /// </summary>
+ public class ConsoleWriter : TextWriter
+ {
+ private static TextWriter writer;
+
+ /// <summary>
+ /// Gets the underlying TextWriter, creating it if it does not already exist.
+ /// </summary>
+ /// <value>The underlying TextWriter.</value>
+ public static TextWriter Out
+ {
+ get
+ {
+ if ( writer == null )
+ writer = new ConsoleWriter();
+
+ return writer;
+ }
+ }
+
+ /// <summary>
+ /// Writes a character to the text stream.
+ /// </summary>
+ /// <param name="value">The character to write to the text stream.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void Write(char value)
+ {
+ Console.Write(value);
+ }
+
+ /// <summary>
+ /// Writes a string to the text stream.
+ /// </summary>
+ /// <param name="value">The string to write.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void Write(string value)
+ {
+ Console.Write(value);
+ }
+
+ /// <summary>
+ /// Writes a string followed by a line terminator to the text stream.
+ /// </summary>
+ /// <param name="value">The string to write. If <paramref name="value"/> is null, only the line termination characters are written.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void WriteLine(string value)
+ {
+ Console.WriteLine(value);
+ }
+
+ /// <summary>
+ /// When overridden in a derived class, returns the <see cref="T:System.Text.Encoding"/> in which the output is written.
+ /// </summary>
+ /// <value></value>
+ /// <returns>
+ /// The Encoding in which the output is written.
+ /// </returns>
+ public override System.Text.Encoding Encoding
+ {
+#if SILVERLIGHT
+ get { return System.Text.Encoding.UTF8; }
+#else
+ get { return System.Text.Encoding.Default; }
+#endif
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/DebugWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/DebugWriter.cs
new file mode 100755
index 0000000..b6d9909
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/DebugWriter.cs
@@ -0,0 +1,113 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !SILVERLIGHT
+using System;
+using System.Diagnostics;
+using System.IO;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// DebugWriter is a TextWriter that sends it's
+ /// output to Debug. We don't use Trace because
+ /// writing to it is not supported in CF.
+ /// </summary>
+ public class DebugWriter : TextWriter
+ {
+ private static TextWriter writer;
+
+ /// <summary>
+ /// Singleon instance of a DebugWriter.
+ /// </summary>
+ /// <value>The DebugWriter singleton.</value>
+ public static TextWriter Out
+ {
+ get
+ {
+ if (writer == null)
+ writer = new DebugWriter();
+
+ return writer;
+ }
+ }
+
+ /// <summary>
+ /// Writes a character to the text stream.
+ /// </summary>
+ /// <param name="value">The character to write to the text stream.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void Write(char value)
+ {
+ Debug.Write(value);
+ }
+
+ /// <summary>
+ /// Writes a string to the text stream.
+ /// </summary>
+ /// <param name="value">The string to write.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void Write(string value)
+ {
+ Debug.Write(value);
+ }
+
+ /// <summary>
+ /// Writes a string followed by a line terminator to the text stream.
+ /// </summary>
+ /// <param name="value">The string to write. If <paramref name="value"/> is null, only the line termination characters are written.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void WriteLine(string value)
+ {
+ Debug.WriteLine(value);
+ }
+
+ /// <summary>
+ /// When overridden in a derived class, returns the <see cref="T:System.Text.Encoding"/> in which the output is written.
+ /// </summary>
+ /// <value></value>
+ /// <returns>
+ /// The Encoding in which the output is written.
+ /// </returns>
+ public override System.Text.Encoding Encoding
+ {
+ get { return System.Text.Encoding.Default; }
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit2XmlOutputWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit2XmlOutputWriter.cs
new file mode 100755
index 0000000..edc0e39
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit2XmlOutputWriter.cs
@@ -0,0 +1,376 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Globalization;
+using System.Reflection;
+using System.Xml;
+using System.IO;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#else
+using System.Collections.Specialized;
+#endif
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// NUnit2XmlOutputWriter is able to create an xml file representing
+ /// the result of a test run in NUnit 2.x format.
+ /// </summary>
+ public class NUnit2XmlOutputWriter : OutputWriter
+ {
+ private XmlWriter xmlWriter;
+
+#if CLR_2_0 || CLR_4_0
+ private static Dictionary<string, string> resultStates = new Dictionary<string, string>();
+#else
+ private static StringDictionary resultStates = new StringDictionary();
+#endif
+
+ static NUnit2XmlOutputWriter()
+ {
+ resultStates["Passed"] = "Success";
+ resultStates["Failed"] = "Failure";
+ resultStates["Failed:Error"] = "Error";
+ resultStates["Failed:Cancelled"] = "Cancelled";
+ resultStates["Inconclusive"] = "Inconclusive";
+ resultStates["Skipped"] = "Skipped";
+ resultStates["Skipped:Ignored"] = "Ignored";
+ resultStates["Skipped:Invalid"] = "NotRunnable";
+ }
+
+ /// <summary>
+ /// Writes the result of a test run to a specified TextWriter.
+ /// </summary>
+ /// <param name="result">The test result for the run</param>
+ /// <param name="writer">The TextWriter to which the xml will be written</param>
+ public override void WriteResultFile(ITestResult result, TextWriter writer)
+ {
+ // NOTE: Under .NET 1.1, XmlTextWriter does not implement IDisposable,
+ // but does implement Close(). Hence we cannot use a 'using' clause.
+ //using (XmlTextWriter xmlWriter = new XmlTextWriter(writer))
+#if SILVERLIGHT
+ XmlWriter xmlWriter = XmlWriter.Create(writer);
+#else
+ XmlTextWriter xmlWriter = new XmlTextWriter(writer);
+ xmlWriter.Formatting = Formatting.Indented;
+#endif
+
+ try
+ {
+ WriteXmlOutput(result, xmlWriter);
+ }
+ finally
+ {
+ writer.Close();
+ }
+ }
+
+ private void WriteXmlOutput(ITestResult result, XmlWriter xmlWriter)
+ {
+ this.xmlWriter = xmlWriter;
+
+ InitializeXmlFile(result);
+ WriteResultElement(result);
+ TerminateXmlFile();
+ }
+
+ private void InitializeXmlFile(ITestResult result)
+ {
+ ResultSummary summaryResults = new ResultSummary(result);
+
+ xmlWriter.WriteStartDocument(false);
+ xmlWriter.WriteComment("This file represents the results of running a test suite");
+
+ xmlWriter.WriteStartElement("test-results");
+
+ xmlWriter.WriteAttributeString("name", result.FullName);
+ xmlWriter.WriteAttributeString("total", summaryResults.TestCount.ToString());
+ xmlWriter.WriteAttributeString("errors", summaryResults.ErrorCount.ToString());
+ xmlWriter.WriteAttributeString("failures", summaryResults.FailureCount.ToString());
+ xmlWriter.WriteAttributeString("not-run", summaryResults.NotRunCount.ToString());
+ xmlWriter.WriteAttributeString("inconclusive", summaryResults.InconclusiveCount.ToString());
+ xmlWriter.WriteAttributeString("ignored", summaryResults.IgnoreCount.ToString());
+ xmlWriter.WriteAttributeString("skipped", summaryResults.SkipCount.ToString());
+ xmlWriter.WriteAttributeString("invalid", summaryResults.InvalidCount.ToString());
+
+ DateTime now = DateTime.Now;
+ xmlWriter.WriteAttributeString("date", XmlConvert.ToString(now, "yyyy-MM-dd"));
+ xmlWriter.WriteAttributeString("time", XmlConvert.ToString(now, "HH:mm:ss"));
+ WriteEnvironment();
+ WriteCultureInfo();
+ }
+
+ private void WriteCultureInfo()
+ {
+ xmlWriter.WriteStartElement("culture-info");
+ xmlWriter.WriteAttributeString("current-culture",
+ CultureInfo.CurrentCulture.ToString());
+ xmlWriter.WriteAttributeString("current-uiculture",
+ CultureInfo.CurrentUICulture.ToString());
+ xmlWriter.WriteEndElement();
+ }
+
+ private void WriteEnvironment()
+ {
+ xmlWriter.WriteStartElement("environment");
+ AssemblyName assemblyName = AssemblyHelper.GetAssemblyName(Assembly.GetExecutingAssembly());
+ xmlWriter.WriteAttributeString("nunit-version",
+ assemblyName.Version.ToString());
+ xmlWriter.WriteAttributeString("clr-version",
+ Environment.Version.ToString());
+ xmlWriter.WriteAttributeString("os-version",
+ Environment.OSVersion.ToString());
+ xmlWriter.WriteAttributeString("platform",
+ Environment.OSVersion.Platform.ToString());
+#if !NETCF
+ xmlWriter.WriteAttributeString("cwd",
+ Environment.CurrentDirectory);
+#if !SILVERLIGHT
+ xmlWriter.WriteAttributeString("machine-name",
+ Environment.MachineName);
+ xmlWriter.WriteAttributeString("user",
+ Environment.UserName);
+ xmlWriter.WriteAttributeString("user-domain",
+ Environment.UserDomainName);
+#endif
+#endif
+ xmlWriter.WriteEndElement();
+ }
+
+ private void WriteResultElement(ITestResult result)
+ {
+ StartTestElement(result);
+
+ WriteCategories(result);
+ WriteProperties(result);
+
+ switch (result.ResultState.Status)
+ {
+ case TestStatus.Skipped:
+ WriteReasonElement(result.Message);
+ break;
+ case TestStatus.Failed:
+ WriteFailureElement(result.Message, result.StackTrace);
+ break;
+ }
+
+ if (result.Test is TestSuite)
+ WriteChildResults(result);
+
+ xmlWriter.WriteEndElement(); // test element
+ }
+
+ private void TerminateXmlFile()
+ {
+ xmlWriter.WriteEndElement(); // test-results
+ xmlWriter.WriteEndDocument();
+ xmlWriter.Flush();
+ xmlWriter.Close();
+ }
+
+
+ #region Element Creation Helpers
+
+ private void StartTestElement(ITestResult result)
+ {
+ ITest test = result.Test;
+ TestSuite suite = test as TestSuite;
+
+ if (suite != null)
+ {
+ xmlWriter.WriteStartElement("test-suite");
+ xmlWriter.WriteAttributeString("type", suite.TestType);
+ xmlWriter.WriteAttributeString("name", suite.TestType == "Assembly"
+ ? result.Test.FullName
+ : result.Test.Name);
+ }
+ else
+ {
+ xmlWriter.WriteStartElement("test-case");
+ xmlWriter.WriteAttributeString("name", result.Name);
+ }
+
+ if (test.Properties.ContainsKey(PropertyNames.Description))
+ {
+ string description = (string)test.Properties.Get(PropertyNames.Description);
+ xmlWriter.WriteAttributeString("description", description);
+ }
+
+ TestStatus status = result.ResultState.Status;
+ string translatedResult = resultStates[result.ResultState.ToString()];
+
+ if (status != TestStatus.Skipped)
+ {
+ xmlWriter.WriteAttributeString("executed", "True");
+ xmlWriter.WriteAttributeString("result", translatedResult);
+ xmlWriter.WriteAttributeString("success", status == TestStatus.Passed ? "True" : "False");
+ xmlWriter.WriteAttributeString("time", result.Duration.TotalSeconds.ToString());
+ xmlWriter.WriteAttributeString("asserts", result.AssertCount.ToString());
+ }
+ else
+ {
+ xmlWriter.WriteAttributeString("executed", "False");
+ xmlWriter.WriteAttributeString("result", translatedResult);
+ }
+ }
+
+ private void WriteCategories(ITestResult result)
+ {
+ IPropertyBag properties = result.Test.Properties;
+
+ if (properties.ContainsKey(PropertyNames.Category))
+ {
+ xmlWriter.WriteStartElement("categories");
+
+ foreach (string category in properties[PropertyNames.Category])
+ {
+ xmlWriter.WriteStartElement("category");
+ xmlWriter.WriteAttributeString("name", category);
+ xmlWriter.WriteEndElement();
+ }
+
+ xmlWriter.WriteEndElement();
+ }
+ }
+
+ private void WriteProperties(ITestResult result)
+ {
+ IPropertyBag properties = result.Test.Properties;
+ int nprops = 0;
+
+ foreach (string key in properties.Keys)
+ {
+ if (key != PropertyNames.Category)
+ {
+ if (nprops++ == 0)
+ xmlWriter.WriteStartElement("properties");
+
+ foreach (object prop in properties[key])
+ {
+ xmlWriter.WriteStartElement("property");
+ xmlWriter.WriteAttributeString("name", key);
+ xmlWriter.WriteAttributeString("value", prop.ToString());
+ xmlWriter.WriteEndElement();
+ }
+ }
+ }
+
+ if (nprops > 0)
+ xmlWriter.WriteEndElement();
+ }
+
+ private void WriteReasonElement(string message)
+ {
+ xmlWriter.WriteStartElement("reason");
+ xmlWriter.WriteStartElement("message");
+ xmlWriter.WriteCData(message);
+ xmlWriter.WriteEndElement();
+ xmlWriter.WriteEndElement();
+ }
+
+ private void WriteFailureElement(string message, string stackTrace)
+ {
+ xmlWriter.WriteStartElement("failure");
+ xmlWriter.WriteStartElement("message");
+ WriteCData(message);
+ xmlWriter.WriteEndElement();
+ xmlWriter.WriteStartElement("stack-trace");
+ if (stackTrace != null)
+ WriteCData(stackTrace);
+ xmlWriter.WriteEndElement();
+ xmlWriter.WriteEndElement();
+ }
+
+ private void WriteChildResults(ITestResult result)
+ {
+ xmlWriter.WriteStartElement("results");
+
+ foreach (ITestResult childResult in result.Children)
+ WriteResultElement(childResult);
+
+ xmlWriter.WriteEndElement();
+ }
+
+ #endregion
+
+ #region Output Helpers
+ ///// <summary>
+ ///// Makes string safe for xml parsing, replacing control chars with '?'
+ ///// </summary>
+ ///// <param name="encodedString">string to make safe</param>
+ ///// <returns>xml safe string</returns>
+ //private static string CharacterSafeString(string encodedString)
+ //{
+ // /*The default code page for the system will be used.
+ // Since all code pages use the same lower 128 bytes, this should be sufficient
+ // for finding uprintable control characters that make the xslt processor error.
+ // We use characters encoded by the default code page to avoid mistaking bytes as
+ // individual characters on non-latin code pages.*/
+ // char[] encodedChars = System.Text.Encoding.Default.GetChars(System.Text.Encoding.Default.GetBytes(encodedString));
+
+ // System.Collections.ArrayList pos = new System.Collections.ArrayList();
+ // for (int x = 0; x < encodedChars.Length; x++)
+ // {
+ // char currentChar = encodedChars[x];
+ // //unprintable characters are below 0x20 in Unicode tables
+ // //some control characters are acceptable. (carriage return 0x0D, line feed 0x0A, horizontal tab 0x09)
+ // if (currentChar < 32 && (currentChar != 9 && currentChar != 10 && currentChar != 13))
+ // {
+ // //save the array index for later replacement.
+ // pos.Add(x);
+ // }
+ // }
+ // foreach (int index in pos)
+ // {
+ // encodedChars[index] = '?';//replace unprintable control characters with ?(3F)
+ // }
+ // return System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(encodedChars));
+ //}
+
+ private void WriteCData(string text)
+ {
+ int start = 0;
+ while (true)
+ {
+ int illegal = text.IndexOf("]]>", start);
+ if (illegal < 0)
+ break;
+ xmlWriter.WriteCData(text.Substring(start, illegal - start + 2));
+ start = illegal + 2;
+ if (start >= text.Length)
+ return;
+ }
+
+ if (start > 0)
+ xmlWriter.WriteCData(text.Substring(start));
+ else
+ xmlWriter.WriteCData(text);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit3XmlOutputWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit3XmlOutputWriter.cs
new file mode 100755
index 0000000..d3b300a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/NUnit3XmlOutputWriter.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Xml;
+using System.IO;
+using NUnit.Framework.Api;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// NUnit3XmlOutputWriter is responsible for writing the results
+ /// of a test to a file in NUnit 3.0 format.
+ /// </summary>
+ public class NUnit3XmlOutputWriter : OutputWriter
+ {
+ /// <summary>
+ /// Writes the test result to the specified TextWriter
+ /// </summary>
+ /// <param name="result">The result to be written to a file</param>
+ /// <param name="writer">A TextWriter to which the result is written</param>
+ public override void WriteResultFile(ITestResult result, TextWriter writer)
+ {
+ // NOTE: Under .NET 1.1, XmlTextWriter does not implement IDisposable,
+ // but does implement Close(). Hence we cannot use a 'using' clause.
+#if CLR_2_0 || CLR_4_0
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ XmlWriter xmlWriter = XmlWriter.Create(writer, settings);
+#else
+ XmlTextWriter xmlWriter = new XmlTextWriter(writer);
+ xmlWriter.Formatting = Formatting.Indented;
+#endif
+
+ try
+ {
+ xmlWriter.WriteStartDocument(false);
+ result.ToXml(true).WriteTo(xmlWriter);
+ }
+ finally
+ {
+ xmlWriter.Close();
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/OutputWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/OutputWriter.cs
new file mode 100755
index 0000000..3f4d5c3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/OutputWriters/OutputWriter.cs
@@ -0,0 +1,57 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.IO;
+using System.Text;
+using NUnit.Framework.Api;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// OutputWriter is an abstract class used to write test
+ /// results to a file in various formats. Specific
+ /// OutputWriters are derived from this class.
+ /// </summary>
+ public abstract class OutputWriter
+ {
+ /// <summary>
+ /// Writes a test result to a file
+ /// </summary>
+ /// <param name="result">The result to be written</param>
+ /// <param name="outputPath">Path to the file to which the result is written</param>
+ public void WriteResultFile(ITestResult result, string outputPath)
+ {
+ using (StreamWriter writer = new StreamWriter(outputPath, false, Encoding.UTF8))
+ {
+ WriteResultFile(result, writer);
+ }
+ }
+
+ /// <summary>
+ /// Abstract method that writes a test result to a TextWriter
+ /// </summary>
+ /// <param name="result">The result to be written</param>
+ /// <param name="writer">A TextWriter to which the result is written</param>
+ public abstract void WriteResultFile(ITestResult result, TextWriter writer);
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/ResultReporter.cs b/NUnitLite-0.9.0/src/framework/Runner/ResultReporter.cs
new file mode 100755
index 0000000..1a3b2b6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/ResultReporter.cs
@@ -0,0 +1,196 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.IO;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// ResultReporter writes the NUnitLite results to a TextWriter.
+ /// </summary>
+ public class ResultReporter
+ {
+ private TextWriter writer;
+ private ITestResult result;
+ private ResultSummary summary;
+ private int reportCount = 0;
+
+ /// <summary>
+ /// Constructs an instance of ResultReporter
+ /// </summary>
+ /// <param name="result">The top-level result being reported</param>
+ /// <param name="writer">A TextWriter to which the report is written</param>
+ public ResultReporter(ITestResult result, TextWriter writer)
+ {
+ this.result = result;
+ this.writer = writer;
+
+ this.summary = new ResultSummary(this.result);
+ }
+
+ /// <summary>
+ /// Gets the ResultSummary created by the ResultReporter
+ /// </summary>
+ public ResultSummary Summary
+ {
+ get { return summary; }
+ }
+
+ /// <summary>
+ /// Produces the standard output reports.
+ /// </summary>
+ public void ReportResults()
+ {
+ PrintSummaryReport();
+
+ if (summary.FailureCount > 0 || summary.ErrorCount > 0)
+ PrintErrorReport();
+
+ if (summary.NotRunCount > 0)
+ PrintNotRunReport();
+
+ //if (commandLineOptions.Full)
+ // PrintFullReport(result);
+ }
+
+ /// <summary>
+ /// Prints the Summary Report
+ /// </summary>
+ public void PrintSummaryReport()
+ {
+ writer.WriteLine(
+ "Tests run: {0}, Passed: {1}, Errors: {2}, Failures: {3}, Inconclusive: {4}",
+ summary.TestCount, summary.PassCount, summary.ErrorCount, summary.FailureCount, summary.InconclusiveCount);
+ writer.WriteLine(
+ " Not run: {0}, Invalid: {1}, Ignored: {2}, Skipped: {3}",
+ summary.NotRunCount, summary.InvalidCount, summary.IgnoreCount, summary.SkipCount);
+ writer.WriteLine("Elapsed time: {0}", result.Duration);
+ }
+
+ /// <summary>
+ /// Prints the Error Report
+ /// </summary>
+ public void PrintErrorReport()
+ {
+ reportCount = 0;
+ writer.WriteLine();
+ writer.WriteLine("Errors and Failures:");
+ PrintErrorResults(this.result);
+ }
+
+ /// <summary>
+ /// Prints the Not Run Report
+ /// </summary>
+ public void PrintNotRunReport()
+ {
+ reportCount = 0;
+ writer.WriteLine();
+ writer.WriteLine("Tests Not Run:");
+ PrintNotRunResults(this.result);
+ }
+
+ /// <summary>
+ /// Prints a full report of all results
+ /// </summary>
+ public void PrintFullReport()
+ {
+ writer.WriteLine();
+ writer.WriteLine("All Test Results:");
+ PrintAllResults(this.result, " ");
+ }
+
+ #region Helper Methods
+
+ private void PrintErrorResults(ITestResult result)
+ {
+ if (result.ResultState.Status == TestStatus.Failed)
+ if (!result.HasChildren || result.FailureSite == FailureSite.SetUp || result.FailureSite == FailureSite.TearDown)
+ WriteSingleResult(result);
+
+ if (result.HasChildren)
+ foreach (ITestResult childResult in result.Children)
+ PrintErrorResults(childResult);
+ }
+
+ private void PrintNotRunResults(ITestResult result)
+ {
+ if (result.HasChildren)
+ foreach (ITestResult childResult in result.Children)
+ PrintNotRunResults(childResult);
+ else if (result.ResultState.Status == TestStatus.Skipped)
+ WriteSingleResult(result);
+ }
+
+ private void PrintTestProperties(ITest test)
+ {
+ foreach (PropertyEntry entry in test.Properties)
+ writer.WriteLine(" {0}: {1}", entry.Name, entry.Value);
+ }
+
+ private void PrintAllResults(ITestResult result, string indent)
+ {
+ string status = null;
+ switch (result.ResultState.Status)
+ {
+ case TestStatus.Failed:
+ status = "FAIL";
+ break;
+ case TestStatus.Skipped:
+ status = "SKIP";
+ break;
+ case TestStatus.Inconclusive:
+ status = "INC ";
+ break;
+ case TestStatus.Passed:
+ status = "OK ";
+ break;
+ }
+
+ writer.Write(status);
+ writer.Write(indent);
+ writer.WriteLine(result.Name);
+
+ if (result.HasChildren)
+ foreach (ITestResult childResult in result.Children)
+ PrintAllResults(childResult, indent + " ");
+ }
+
+ private void WriteSingleResult(ITestResult result)
+ {
+ writer.WriteLine();
+ writer.WriteLine("{0}) {1} ({2})", ++reportCount, result.Name, result.FullName);
+
+ if (result.Message != null && result.Message != string.Empty)
+ writer.WriteLine(" {0}", result.Message);
+
+ if (result.StackTrace != null && result.StackTrace != string.Empty)
+ writer.WriteLine(result.ResultState == ResultState.Failure
+ ? StackFilter.Filter(result.StackTrace)
+ : result.StackTrace + NUnit.Env.NewLine);
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/ResultSummary.cs b/NUnitLite-0.9.0/src/framework/Runner/ResultSummary.cs
new file mode 100755
index 0000000..8848377
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/ResultSummary.cs
@@ -0,0 +1,175 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// Helper class used to summarize the result of a test run
+ /// </summary>
+ public class ResultSummary
+ {
+ private int testCount;
+ private int passCount;
+ private int errorCount;
+ private int failureCount;
+ private int notRunCount;
+ private int inconclusiveCount;
+ private int ignoreCount;
+ private int skipCount;
+ private int invalidCount;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ResultSummary"/> class.
+ /// </summary>
+ /// <param name="result">The result.</param>
+ public ResultSummary(ITestResult result)
+ {
+ Visit(result);
+ }
+
+ /// <summary>
+ /// Gets the test count.
+ /// </summary>
+ /// <value>The test count.</value>
+ public int TestCount
+ {
+ get { return testCount; }
+ }
+
+ /// <summary>
+ /// Gets the count of passed tests
+ /// </summary>
+ public int PassCount
+ {
+ get { return passCount; }
+ }
+
+ /// <summary>
+ /// Gets the error count.
+ /// </summary>
+ /// <value>The error count.</value>
+ public int ErrorCount
+ {
+ get { return errorCount; }
+ }
+
+ /// <summary>
+ /// Gets the failure count.
+ /// </summary>
+ /// <value>The failure count.</value>
+ public int FailureCount
+ {
+ get { return failureCount; }
+ }
+
+ /// <summary>
+ /// Gets the not run count.
+ /// </summary>
+ /// <value>The not run count.</value>
+ public int NotRunCount
+ {
+ get { return notRunCount; }
+ }
+
+ /// <summary>
+ /// Gets the ignore count
+ /// </summary>
+ public int IgnoreCount
+ {
+ get { return ignoreCount; }
+ }
+
+ /// <summary>
+ /// Gets the skip count
+ /// </summary>
+ public int SkipCount
+ {
+ get { return skipCount; }
+ }
+
+ /// <summary>
+ /// Gets the invalid count
+ /// </summary>
+ public int InvalidCount
+ {
+ get { return invalidCount; }
+ }
+
+ /// <summary>
+ /// Gets the count of inconclusive results
+ /// </summary>
+ public int InconclusiveCount
+ {
+ get { return inconclusiveCount; }
+ }
+
+ private void Visit(ITestResult result)
+ {
+ if (result.HasChildren)
+ {
+ if (result.ResultState.Status == TestStatus.Failed)
+ if (result.FailureSite == FailureSite.SetUp || result.FailureSite == FailureSite.TearDown)
+ if (result.ResultState == ResultState.Failure)
+ failureCount++;
+ else
+ errorCount++;
+
+ foreach (ITestResult r in result.Children)
+ Visit(r);
+ }
+ else
+ {
+ testCount++;
+
+ switch (result.ResultState.Status)
+ {
+ case TestStatus.Passed:
+ passCount++;
+ break;
+ case TestStatus.Skipped:
+ if (result.ResultState == ResultState.Ignored)
+ ignoreCount++;
+ else if (result.ResultState == ResultState.Skipped)
+ skipCount++;
+ else if (result.ResultState == ResultState.NotRunnable)
+ invalidCount++;
+ notRunCount++;
+ break;
+ case TestStatus.Failed:
+ if (result.ResultState == ResultState.Failure)
+ failureCount++;
+ else
+ errorCount++;
+ break;
+ case TestStatus.Inconclusive:
+ inconclusiveCount++;
+ break;
+ }
+
+ return;
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..4a74714
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,80 @@
+#pragma checksum "D:\Dev\NUnit\nunitlite\silverlight\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "6F6202F16BB641581768BCB53F5200C8"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17626
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.xaml.cs b/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.xaml.cs
new file mode 100755
index 0000000..161bdff
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TestPage.xaml.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Windows;
+using System.Windows.Controls;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Runner.Silverlight
+{
+ /// <summary>
+ /// TestPage is the display page for the test results
+ /// </summary>
+ public partial class TestPage : UserControl
+ {
+ private Assembly callingAssembly;
+ private ITestAssemblyRunner runner;
+ private TextWriter writer;
+
+ public TestPage()
+ {
+ InitializeComponent();
+
+ this.runner = new NUnitLiteTestAssemblyRunner(new NUnitLiteTestAssemblyBuilder());
+ this.callingAssembly = Assembly.GetCallingAssembly();
+ this.writer = new TextBlockWriter(this.ScratchArea);
+ }
+
+ private void UserControl_Loaded(object sender, RoutedEventArgs e)
+ {
+ TextUI.WriteHeader(this.writer);
+ TextUI.WriteRuntimeEnvironment(this.writer);
+
+ if (!LoadTestAssembly())
+ writer.WriteLine("No tests found in assembly {0}", GetAssemblyName(callingAssembly));
+ else
+ Dispatcher.BeginInvoke(() => ExecuteTests());
+ }
+
+ #region Helper Methods
+
+ private bool LoadTestAssembly()
+ {
+ return runner.Load(callingAssembly, new Dictionary<string, string>());
+ }
+
+ private string GetAssemblyName(Assembly assembly)
+ {
+ return new AssemblyName(assembly.FullName).Name;
+ }
+
+ private void ExecuteTests()
+ {
+ ITestResult result = runner.Run(TestListener.NULL, TestFilter.Empty);
+ ResultReporter reporter = new ResultReporter(result, writer);
+
+ reporter.ReportResults();
+
+ ResultSummary summary = reporter.Summary;
+
+ this.Total.Text = summary.TestCount.ToString();
+ this.Failures.Text = summary.FailureCount.ToString();
+ this.Errors.Text = summary.ErrorCount.ToString();
+ this.NotRun.Text = summary.NotRunCount.ToString();
+ this.Passed.Text = summary.PassCount.ToString();
+ this.Inconclusive.Text = summary.InconclusiveCount.ToString();
+
+ this.Notice.Visibility = Visibility.Collapsed;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TextBlockWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TextBlockWriter.cs
new file mode 100755
index 0000000..740294f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/Silverlight/TextBlockWriter.cs
@@ -0,0 +1,106 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if SILVERLIGHT
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Windows.Controls;
+using System.Windows.Documents;
+
+namespace NUnitLite.Runner.Silverlight
+{
+ /// <summary>
+ /// TextBlockWriter is a TextWriter that sends it's
+ /// output to a Silverlight TextBlock.
+ /// </summary>
+ public class TextBlockWriter : TextWriter
+ {
+ private TextBlock textBlock;
+
+ public TextBlockWriter(TextBlock textBlock)
+ {
+ this.textBlock = textBlock;
+ }
+
+ /// <summary>
+ /// Writes a character to the text stream.
+ /// </summary>
+ /// <param name="value">The character to write to the text stream.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void Write(char value)
+ {
+ textBlock.Text += value;
+ }
+
+ /// <summary>
+ /// Writes a string to the text stream.
+ /// </summary>
+ /// <param name="value">The string to write.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void Write(string value)
+ {
+ textBlock.Text += value;
+ }
+
+ /// <summary>
+ /// Writes a string followed by a line terminator to the text stream.
+ /// </summary>
+ /// <param name="value">The string to write. If <paramref name="value"/> is null, only the line termination characters are written.</param>
+ /// <exception cref="T:System.ObjectDisposedException">
+ /// The <see cref="T:System.IO.TextWriter"/> is closed.
+ /// </exception>
+ /// <exception cref="T:System.IO.IOException">
+ /// An I/O error occurs.
+ /// </exception>
+ public override void WriteLine(string value)
+ {
+ textBlock.Inlines.Add(value);
+ textBlock.Inlines.Add(new LineBreak());
+ Debug.WriteLine(value);
+ }
+
+ /// <summary>
+ /// When overridden in a derived class, returns the <see cref="T:System.Text.Encoding"/> in which the output is written.
+ /// </summary>
+ /// <value></value>
+ /// <returns>
+ /// The Encoding in which the output is written.
+ /// </returns>
+ public override System.Text.Encoding Encoding
+ {
+ get { return System.Text.Encoding.UTF8; }
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/framework/Runner/TcpWriter.cs b/NUnitLite-0.9.0/src/framework/Runner/TcpWriter.cs
new file mode 100755
index 0000000..2279f57
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/TcpWriter.cs
@@ -0,0 +1,73 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using System.Net.Sockets;
+using System.Text;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// Redirects output to a Tcp connection
+ /// </summary>
+ class TcpWriter : TextWriter
+ {
+ private string hostName;
+ private int port;
+
+ private TcpClient client;
+ private NetworkStream stream;
+ private StreamWriter writer;
+
+ public TcpWriter(string hostName, int port)
+ {
+ this.hostName = hostName;
+ this.port = port;
+ this.client = new TcpClient(hostName, port);
+ this.stream = client.GetStream();
+ this.writer = new StreamWriter(stream);
+ }
+
+ public override void Write(char value)
+ {
+ writer.Write(value);
+ }
+
+ public override void Write(string value)
+ {
+ writer.Write(value);
+ }
+
+ public override void WriteLine(string value)
+ {
+ writer.WriteLine(value);
+ writer.Flush();
+ }
+
+ public override System.Text.Encoding Encoding
+ {
+ get { return System.Text.Encoding.Default; }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Runner/TextUI.cs b/NUnitLite-0.9.0/src/framework/Runner/TextUI.cs
new file mode 100755
index 0000000..ad7a6a5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Runner/TextUI.cs
@@ -0,0 +1,357 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Internal.Filters;
+using System.Diagnostics;
+
+namespace NUnitLite.Runner
+{
+ /// <summary>
+ /// TextUI is a general purpose class that runs tests and
+ /// outputs to a TextWriter.
+ ///
+ /// Call it from your Main like this:
+ /// new TextUI(textWriter).Execute(args);
+ /// OR
+ /// new TextUI().Execute(args);
+ /// The provided TextWriter is used by default, unless the
+ /// arguments to Execute override it using -out. The second
+ /// form uses the Console, provided it exists on the platform.
+ ///
+ /// NOTE: When running on a platform without a Console, such
+ /// as Windows Phone, the results will simply not appear if
+ /// you fail to specify a file in the call itself or as an option.
+ /// </summary>
+ public class TextUI : ITestListener
+ {
+ private CommandLineOptions commandLineOptions;
+
+ private NUnit.ObjectList assemblies = new NUnit.ObjectList();
+
+ private TextWriter writer;
+
+ private ITestListener listener;
+
+ private ITestAssemblyRunner runner;
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TextUI"/> class.
+ /// </summary>
+ public TextUI() : this(ConsoleWriter.Out, TestListener.NULL) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TextUI"/> class.
+ /// </summary>
+ /// <param name="writer">The TextWriter to use.</param>
+ public TextUI(TextWriter writer) : this(writer, TestListener.NULL) { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TextUI"/> class.
+ /// </summary>
+ /// <param name="writer">The TextWriter to use.</param>
+ /// <param name="listener">The Test listener to use.</param>
+ public TextUI(TextWriter writer, ITestListener listener)
+ {
+ // Set the default writer - may be overridden by the args specified
+ this.writer = writer;
+ this.runner = new NUnitLiteTestAssemblyRunner(new NUnitLiteTestAssemblyBuilder());
+ this.listener = listener;
+ }
+
+ #endregion
+
+ #region Public Methods
+
+ /// <summary>
+ /// Execute a test run based on the aruments passed
+ /// from Main.
+ /// </summary>
+ /// <param name="args">An array of arguments</param>
+ public void Execute(string[] args)
+ {
+ // NOTE: Execute must be directly called from the
+ // test assembly in order for the mechanism to work.
+ Assembly callingAssembly = Assembly.GetCallingAssembly();
+
+ this.commandLineOptions = new CommandLineOptions();
+ commandLineOptions.Parse(args);
+
+ if (commandLineOptions.OutFile != null)
+ this.writer = new StreamWriter(commandLineOptions.OutFile);
+
+ if (!commandLineOptions.NoHeader)
+ WriteHeader(this.writer);
+
+ if (commandLineOptions.ShowHelp)
+ writer.Write(commandLineOptions.HelpText);
+ else if (commandLineOptions.Error)
+ {
+ writer.WriteLine(commandLineOptions.ErrorMessage);
+ writer.WriteLine(commandLineOptions.HelpText);
+ }
+ else
+ {
+ WriteRuntimeEnvironment(this.writer);
+
+ if (commandLineOptions.Wait && commandLineOptions.OutFile != null)
+ writer.WriteLine("Ignoring /wait option - only valid for Console");
+
+#if SILVERLIGHT
+ IDictionary loadOptions = new System.Collections.Generic.Dictionary<string, string>();
+#else
+ IDictionary loadOptions = new Hashtable();
+#endif
+ //if (options.Load.Count > 0)
+ // loadOptions["LOAD"] = options.Load;
+
+ //IDictionary runOptions = new Hashtable();
+ //if (commandLineOptions.TestCount > 0)
+ // runOptions["RUN"] = commandLineOptions.Tests;
+
+ ITestFilter filter = commandLineOptions.TestCount > 0
+ ? new SimpleNameFilter(commandLineOptions.Tests)
+ : TestFilter.Empty;
+
+ try
+ {
+ foreach (string name in commandLineOptions.Parameters)
+ assemblies.Add(Assembly.Load(name));
+
+ if (assemblies.Count == 0)
+ assemblies.Add(callingAssembly);
+
+ // TODO: For now, ignore all but first assembly
+ Assembly assembly = assemblies[0] as Assembly;
+
+ if (!runner.Load(assembly, loadOptions))
+ {
+ AssemblyName assemblyName = AssemblyHelper.GetAssemblyName(assembly);
+ Console.WriteLine("No tests found in assembly {0}", assemblyName.Name);
+ return;
+ }
+
+ if (commandLineOptions.Explore)
+ ExploreTests();
+ else
+ {
+ if (commandLineOptions.Include != null && commandLineOptions.Include != string.Empty)
+ {
+ TestFilter includeFilter = new SimpleCategoryExpression(commandLineOptions.Include).Filter;
+
+ if (filter.IsEmpty)
+ filter = includeFilter;
+ else
+ filter = new AndFilter(filter, includeFilter);
+ }
+
+ if (commandLineOptions.Exclude != null && commandLineOptions.Exclude != string.Empty)
+ {
+ TestFilter excludeFilter = new NotFilter(new SimpleCategoryExpression(commandLineOptions.Exclude).Filter);
+
+ if (filter.IsEmpty)
+ filter = excludeFilter;
+ else if (filter is AndFilter)
+ ((AndFilter)filter).Add(excludeFilter);
+ else
+ filter = new AndFilter(filter, excludeFilter);
+ }
+ RunTests(filter);
+ }
+ }
+ catch (FileNotFoundException ex)
+ {
+ writer.WriteLine(ex.Message);
+ }
+ catch (Exception ex)
+ {
+ writer.WriteLine(ex.ToString());
+ }
+ finally
+ {
+ if (commandLineOptions.OutFile == null)
+ {
+ if (commandLineOptions.Wait)
+ {
+ Console.WriteLine("Press Enter key to continue . . .");
+ Console.ReadLine();
+ }
+ }
+ else
+ {
+ writer.Close();
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Write the standard header information to a TextWriter.
+ /// </summary>
+ /// <param name="writer">The TextWriter to use</param>
+ public static void WriteHeader(TextWriter writer)
+ {
+ Assembly executingAssembly = Assembly.GetExecutingAssembly();
+#if NUNITLITE
+ string title = "NUnitLite";
+#else
+ string title = "NUNit Framework";
+#endif
+ AssemblyName assemblyName = AssemblyHelper.GetAssemblyName(executingAssembly);
+ System.Version version = assemblyName.Version;
+ string copyright = "Copyright (C) 2012, Charlie Poole";
+ string build = "";
+
+ object[] attrs = executingAssembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+ if (attrs.Length > 0)
+ {
+ AssemblyTitleAttribute titleAttr = (AssemblyTitleAttribute)attrs[0];
+ title = titleAttr.Title;
+ }
+
+ attrs = executingAssembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+ if (attrs.Length > 0)
+ {
+ AssemblyCopyrightAttribute copyrightAttr = (AssemblyCopyrightAttribute)attrs[0];
+ copyright = copyrightAttr.Copyright;
+ }
+
+ attrs = executingAssembly.GetCustomAttributes(typeof(AssemblyConfigurationAttribute), false);
+ if (attrs.Length > 0)
+ {
+ AssemblyConfigurationAttribute configAttr = (AssemblyConfigurationAttribute)attrs[0];
+ if (configAttr.Configuration.Length > 0)
+ build = string.Format("({0})", configAttr.Configuration);
+ }
+
+ writer.WriteLine(String.Format("{0} {1} {2}", title, version.ToString(3), build));
+ writer.WriteLine(copyright);
+ writer.WriteLine();
+ }
+
+ /// <summary>
+ /// Write information about the current runtime environment
+ /// </summary>
+ /// <param name="writer">The TextWriter to be used</param>
+ public static void WriteRuntimeEnvironment(TextWriter writer)
+ {
+ string clrPlatform = Type.GetType("Mono.Runtime", false) == null ? ".NET" : "Mono";
+
+ writer.WriteLine("Runtime Environment -");
+ writer.WriteLine(" OS Version: {0}", Environment.OSVersion);
+ writer.WriteLine(" {0} Version: {1}", clrPlatform, Environment.Version);
+ writer.WriteLine();
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private void RunTests(ITestFilter filter)
+ {
+ ITestResult result = runner.Run(this, filter);
+ new ResultReporter(result, writer).ReportResults();
+ string resultFile = commandLineOptions.ResultFile;
+ string resultFormat = commandLineOptions.ResultFormat;
+
+ if (resultFile != null || commandLineOptions.ResultFormat != null)
+ {
+ if (resultFile == null)
+ resultFile = "TestResult.xml";
+
+ if (resultFormat == "nunit2")
+ new NUnit2XmlOutputWriter().WriteResultFile(result, resultFile);
+ else
+ new NUnit3XmlOutputWriter().WriteResultFile(result, resultFile);
+
+ Console.WriteLine();
+ Console.WriteLine("Results saved as {0}.", resultFile);
+ }
+ }
+
+ private void ExploreTests()
+ {
+ XmlNode testNode = runner.LoadedTest.ToXml(true);
+
+ string listFile = commandLineOptions.ExploreFile;
+ TextWriter textWriter = listFile != null && listFile.Length > 0
+ ? new StreamWriter(listFile)
+ : Console.Out;
+
+#if CLR_2_0 || CLR_4_0
+ System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
+ settings.Indent = true;
+ settings.Encoding = System.Text.Encoding.UTF8;
+ System.Xml.XmlWriter testWriter = System.Xml.XmlWriter.Create(textWriter, settings);
+#else
+ System.Xml.XmlTextWriter testWriter = new System.Xml.XmlTextWriter(textWriter);
+ testWriter.Formatting = System.Xml.Formatting.Indented;
+#endif
+
+ testNode.WriteTo(testWriter);
+ testWriter.Close();
+
+ Console.WriteLine();
+ Console.WriteLine("Test info saved as {0}.", listFile);
+ }
+
+ #endregion
+
+ #region ITestListener Members
+
+ /// <summary>
+ /// A test has just started
+ /// </summary>
+ /// <param name="test">The test</param>
+ public void TestStarted(ITest test)
+ {
+ if (commandLineOptions.LabelTestsInOutput)
+ writer.WriteLine("***** {0}", test.Name);
+ }
+
+ /// <summary>
+ /// A test has just finished
+ /// </summary>
+ /// <param name="result">The result of the test</param>
+ public void TestFinished(ITestResult result)
+ {
+ }
+
+ /// <summary>
+ /// A test has produced some text output
+ /// </summary>
+ /// <param name="testOutput">A TestOutput object holding the text that was written</param>
+ public void TestOutput(TestOutput testOutput)
+ {
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/SpecialValue.cs b/NUnitLite-0.9.0/src/framework/SpecialValue.cs
new file mode 100755
index 0000000..15eb1c6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/SpecialValue.cs
@@ -0,0 +1,40 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// The SpecialValue enum is used to represent TestCase arguments
+ /// that cannot be used as arguments to an Attribute.
+ /// </summary>
+ public enum SpecialValue
+ {
+ /// <summary>
+ /// Null represents a null value, which cannot be used as an
+ /// argument to an attribute under .NET 1.x
+ /// </summary>
+ Null
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/TestCaseData.cs b/NUnitLite-0.9.0/src/framework/TestCaseData.cs
new file mode 100755
index 0000000..dd14de6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/TestCaseData.cs
@@ -0,0 +1,389 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Collections.Specialized;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+// TODO: Remove conditional code
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public class TestCaseData : ITestCaseData
+ {
+
+ #region Instance Fields
+
+ /// <summary>
+ /// The argument list to be provided to the test
+ /// </summary>
+ private object[] arguments;
+
+ /// <summary>
+ /// The expected result to be returned
+ /// </summary>
+ private object expectedResult;
+
+ /// <summary>
+ /// Data about any expected exception.
+ /// </summary>
+ private ExpectedExceptionData exceptionData;
+
+ /// <summary>
+ /// A dictionary of properties, used to add information
+ /// to tests without requiring the class to change.
+ /// </summary>
+ private IPropertyBag properties;
+
+ #endregion
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+ /// </summary>
+ /// <param name="args">The arguments.</param>
+ public TestCaseData(params object[] args)
+ {
+ this.RunState = RunState.Runnable;
+
+ if (args == null)
+ this.arguments = new object[] { null };
+ else
+ this.arguments = args;
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+ /// </summary>
+ /// <param name="arg">The argument.</param>
+ public TestCaseData(object arg)
+ {
+ this.RunState = RunState.Runnable;
+ this.arguments = new object[] { arg };
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+ /// </summary>
+ /// <param name="arg1">The first argument.</param>
+ /// <param name="arg2">The second argument.</param>
+ public TestCaseData(object arg1, object arg2)
+ {
+ this.RunState = RunState.Runnable;
+ this.arguments = new object[] { arg1, arg2 };
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+ /// </summary>
+ /// <param name="arg1">The first argument.</param>
+ /// <param name="arg2">The second argument.</param>
+ /// <param name="arg3">The third argument.</param>
+ public TestCaseData(object arg1, object arg2, object arg3)
+ {
+ this.RunState = RunState.Runnable;
+ this.arguments = new object[] { arg1, arg2, arg3 };
+ }
+
+ #endregion
+
+ #region ITestCaseData Members
+
+ /// <summary>
+ /// Gets the argument list to be provided to the test
+ /// </summary>
+ public object[] Arguments
+ {
+ get { return arguments; }
+ }
+
+ /// <summary>
+ /// Gets the expected result
+ /// </summary>
+ public object ExpectedResult
+ {
+ get { return expectedResult; }
+ set
+ {
+ expectedResult = value;
+ HasExpectedResult = true;
+ }
+ }
+
+ private bool hasExpectedResult;
+ /// <summary>
+ /// Returns true if the expected result has been set
+ /// </summary>
+ public bool HasExpectedResult
+ {
+ get { return hasExpectedResult; }
+ set { hasExpectedResult = value; }
+ }
+
+ /// <summary>
+ /// Gets data about any expected exception.
+ /// </summary>
+ public ExpectedExceptionData ExceptionData
+ {
+ get { return exceptionData; }
+ }
+
+ private string testName;
+ /// <summary>
+ /// Gets the name to be used for the test
+ /// </summary>
+ public string TestName
+ {
+ get { return testName; }
+ set { testName = value; }
+ }
+
+ private RunState runState;
+ /// <summary>
+ /// Gets the RunState for this test case.
+ /// </summary>
+ public RunState RunState
+ {
+ get { return runState; }
+ set { runState = value; }
+ }
+
+ /// <summary>
+ /// Gets the property dictionary for this test
+ /// </summary>
+ public IPropertyBag Properties
+ {
+ get
+ {
+ if (properties == null)
+ properties = new NUnit.Framework.Internal.PropertyBag();
+
+ return properties;
+ }
+ }
+
+ #endregion
+
+ #region Public Properties - NUnit 2.6 Compatibility
+
+ /// <summary>
+ /// Gets the expected result.
+ /// </summary>
+ public object Result
+ {
+ get { return expectedResult; }
+ }
+
+ /// <summary>
+ /// The type of exception expected
+ /// </summary>
+ public Type ExpectedException
+ {
+ get { return exceptionData.ExpectedExceptionType; }
+ }
+
+ /// <summary>
+ /// The full name of the expected exception type
+ /// </summary>
+ public string ExpectedExceptionName
+ {
+ get { return exceptionData.ExpectedExceptionName; }
+ }
+
+ /// <summary>
+ /// The message to expect on any exception
+ /// </summary>
+ public string ExpectedExceptionMessage
+ {
+ get { return exceptionData.ExpectedMessage; }
+ }
+
+ /// <summary>
+ /// The type of match to be made on the message
+ /// </summary>
+ public MessageMatch MatchType
+ {
+ get { return exceptionData.MatchType; }
+ }
+
+ #endregion
+
+ #region Fluent Instance Modifiers
+
+ /// <summary>
+ /// Sets the expected result for the test
+ /// </summary>
+ /// <param name="result">The expected result</param>
+ /// <returns>A modified TestCaseData</returns>
+ public TestCaseData Returns(object result)
+ {
+ this.ExpectedResult = result;
+ return this;
+ }
+
+ /// <summary>
+ /// Sets the expected exception type for the test
+ /// </summary>
+ /// <param name="exceptionType">Type of the expected exception.</param>
+ /// <returns>The modified TestCaseData instance</returns>
+ public TestCaseData Throws(Type exceptionType)
+ {
+ //this.expectedExceptionType = exceptionType;
+ exceptionData.ExpectedExceptionName = exceptionType.FullName;
+ return this;
+ }
+
+ /// <summary>
+ /// Sets the expected exception type for the test
+ /// </summary>
+ /// <param name="exceptionName">FullName of the expected exception.</param>
+ /// <returns>The modified TestCaseData instance</returns>
+ public TestCaseData Throws(string exceptionName)
+ {
+ exceptionData.ExpectedExceptionName = exceptionName;
+ return this;
+ }
+
+ /// <summary>
+ /// Sets the name of the test case
+ /// </summary>
+ /// <returns>The modified TestCaseData instance</returns>
+ public TestCaseData SetName(string name)
+ {
+ this.TestName = name;
+ return this;
+ }
+
+ /// <summary>
+ /// Sets the description for the test case
+ /// being constructed.
+ /// </summary>
+ /// <param name="description">The description.</param>
+ /// <returns>The modified TestCaseData instance.</returns>
+ public TestCaseData SetDescription(string description)
+ {
+ this.Properties.Set(PropertyNames.Description, description);
+ return this;
+ }
+
+ /// <summary>
+ /// Applies a category to the test
+ /// </summary>
+ /// <param name="category"></param>
+ /// <returns></returns>
+ public TestCaseData SetCategory(string category)
+ {
+ this.Properties.Add(PropertyNames.Category, category);
+ return this;
+ }
+
+ /// <summary>
+ /// Applies a named property to the test
+ /// </summary>
+ /// <param name="propName"></param>
+ /// <param name="propValue"></param>
+ /// <returns></returns>
+ public TestCaseData SetProperty(string propName, string propValue)
+ {
+ this.Properties.Add(propName, propValue);
+ return this;
+ }
+
+ /// <summary>
+ /// Applies a named property to the test
+ /// </summary>
+ /// <param name="propName"></param>
+ /// <param name="propValue"></param>
+ /// <returns></returns>
+ public TestCaseData SetProperty(string propName, int propValue)
+ {
+ this.Properties.Add(propName, propValue);
+ return this;
+ }
+
+ /// <summary>
+ /// Applies a named property to the test
+ /// </summary>
+ /// <param name="propName"></param>
+ /// <param name="propValue"></param>
+ /// <returns></returns>
+ public TestCaseData SetProperty(string propName, double propValue)
+ {
+ this.Properties.Add(propName, propValue);
+ return this;
+ }
+
+ /// <summary>
+ /// Ignores this TestCase.
+ /// </summary>
+ /// <returns></returns>
+ public TestCaseData Ignore()
+ {
+ this.RunState = RunState.Ignored;
+ return this;
+ }
+
+ /// <summary>
+ /// Marks the test case as explicit.
+ /// </summary>
+ public TestCaseData Explicit() {
+ this.RunState = RunState.Explicit;
+ return this;
+ }
+
+ /// <summary>
+ /// Marks the test case as explicit, specifying the reason.
+ /// </summary>
+ public TestCaseData Explicit(string reason)
+ {
+ this.RunState = RunState.Explicit;
+ this.Properties.Set(PropertyNames.SkipReason, reason);
+ return this;
+ }
+
+ /// <summary>
+ /// Ignores this TestCase, specifying the reason.
+ /// </summary>
+ /// <param name="reason">The reason.</param>
+ /// <returns></returns>
+ public TestCaseData Ignore(string reason)
+ {
+ this.RunState = RunState.Ignored;
+ this.Properties.Set(PropertyNames.SkipReason, reason);
+ return this;
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/TestContext.cs b/NUnitLite-0.9.0/src/framework/TestContext.cs
new file mode 100755
index 0000000..582e3a5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/TestContext.cs
@@ -0,0 +1,257 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Provide the context information of the current test.
+ /// This is an adapter for the internal ExecutionContext
+ /// class, hiding the internals from the user test.
+ /// </summary>
+ public class TestContext
+ {
+ private TestExecutionContext ec;
+ private TestAdapter test;
+ private ResultAdapter result;
+
+ #region Constructor
+
+ /// <summary>
+ /// Construct a TestContext for an ExecutionContext
+ /// </summary>
+ /// <param name="ec">The ExecutionContext to adapt</param>
+ public TestContext(TestExecutionContext ec)
+ {
+ this.ec = ec;
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// 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.
+ /// </summary>
+ public static TestContext CurrentContext
+ {
+ get { return new TestContext(TestExecutionContext.CurrentContext); }
+ }
+
+ /// <summary>
+ /// Get a representation of the current test.
+ /// </summary>
+ public TestAdapter Test
+ {
+ get
+ {
+ if (test == null)
+ test = new TestAdapter(ec.CurrentTest);
+
+ return test;
+ }
+ }
+
+ /// <summary>
+ /// Gets a Representation of the TestResult for the current test.
+ /// </summary>
+ public ResultAdapter Result
+ {
+ get
+ {
+ if (result == null)
+ result = new ResultAdapter(ec.CurrentResult);
+
+ return result;
+ }
+ }
+
+#if !NETCF
+ /// <summary>
+ /// Gets the directory containing the current test assembly.
+ /// </summary>
+ public string TestDirectory
+ {
+ get
+ {
+ return AssemblyHelper.GetDirectoryName(ec.CurrentTest.FixtureType.Assembly);
+ }
+ }
+#endif
+
+ /// <summary>
+ /// Gets the directory to be used for outputing files created
+ /// by this test run.
+ /// </summary>
+ public string WorkDirectory
+ {
+ get
+ {
+ return ec.WorkDirectory;
+ }
+ }
+
+ public RandomGenerator Random
+ {
+ get
+ {
+ return ec.Random;
+ }
+ }
+
+ #endregion
+
+ #region Nested TestAdapter Class
+
+ /// <summary>
+ /// TestAdapter adapts a Test for consumption by
+ /// the user test code.
+ /// </summary>
+ public class TestAdapter
+ {
+ private Test test;
+
+ #region Constructor
+
+ /// <summary>
+ /// Construct a TestAdapter for a Test
+ /// </summary>
+ /// <param name="test">The Test to be adapted</param>
+ public TestAdapter(Test test)
+ {
+ this.test = test;
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the unique Id of a test
+ /// </summary>
+ public int ID
+ {
+ get { return test.Id; }
+ }
+
+ /// <summary>
+ /// The name of the test, which may or may not be
+ /// the same as the method name.
+ /// </summary>
+ public string Name
+ {
+ get
+ {
+ return test.Name;
+ }
+ }
+
+ /// <summary>
+ /// The name of the method representing the test.
+ /// </summary>
+ public string MethodName
+ {
+ get
+ {
+ return test is TestMethod
+ ? ((TestMethod)test).Method.Name
+ : null;
+ }
+ }
+
+ /// <summary>
+ /// The FullName of the test
+ /// </summary>
+ public string FullName
+ {
+ get
+ {
+ return test.FullName;
+ }
+ }
+
+ /// <summary>
+ /// The properties of the test.
+ /// </summary>
+ public IPropertyBag Properties
+ {
+ get
+ {
+ return test.Properties;
+ }
+ }
+
+ #endregion
+ }
+
+ #endregion
+
+ #region Nested ResultAdapter Class
+
+ /// <summary>
+ /// ResultAdapter adapts a TestResult for consumption by
+ /// the user test code.
+ /// </summary>
+ public class ResultAdapter
+ {
+ private TestResult result;
+
+ #region Constructor
+
+ /// <summary>
+ /// Construct a ResultAdapter for a TestResult
+ /// </summary>
+ /// <param name="result">The TestResult to be adapted</param>
+ public ResultAdapter(TestResult result)
+ {
+ this.result = result;
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets a ResultState representing the outcome of the test.
+ /// </summary>
+ public ResultState Outcome
+ {
+ get
+ {
+ return result.ResultState;
+ }
+ }
+
+ #endregion
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/Throws.cs b/NUnitLite-0.9.0/src/framework/Throws.cs
new file mode 100755
index 0000000..eee90b3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/Throws.cs
@@ -0,0 +1,153 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+ /// <summary>
+ /// Helper class with properties and methods that supply
+ /// constraints that operate on exceptions.
+ /// </summary>
+ public class Throws
+ {
+ #region Exception
+
+ /// <summary>
+ /// Creates a constraint specifying an expected exception
+ /// </summary>
+ public static ResolvableConstraintExpression Exception
+ {
+ get { return new ConstraintExpression().Append(new ThrowsOperator()); }
+ }
+
+ #endregion
+
+ #region InnerException
+
+ /// <summary>
+ /// Creates a constraint specifying an exception with a given InnerException
+ /// </summary>
+ public static ResolvableConstraintExpression InnerException
+ {
+ get { return Exception.InnerException; }
+ }
+
+ #endregion
+
+ #region TargetInvocationException
+
+ /// <summary>
+ /// Creates a constraint specifying an expected TargetInvocationException
+ /// </summary>
+ public static ExactTypeConstraint TargetInvocationException
+ {
+ get { return TypeOf(typeof(System.Reflection.TargetInvocationException)); }
+ }
+
+ #endregion
+
+ #region ArgumentException
+
+ /// <summary>
+ /// Creates a constraint specifying an expected TargetInvocationException
+ /// </summary>
+ public static ExactTypeConstraint ArgumentException
+ {
+ get { return TypeOf(typeof(System.ArgumentException)); }
+ }
+
+ #endregion
+
+ #region InvalidOperationException
+
+ /// <summary>
+ /// Creates a constraint specifying an expected TargetInvocationException
+ /// </summary>
+ public static ExactTypeConstraint InvalidOperationException
+ {
+ get { return TypeOf(typeof(System.InvalidOperationException)); }
+ }
+
+ #endregion
+
+ #region Nothing
+
+ /// <summary>
+ /// Creates a constraint specifying that no exception is thrown
+ /// </summary>
+ public static ThrowsNothingConstraint Nothing
+ {
+ get { return new ThrowsNothingConstraint(); }
+ }
+
+ #endregion
+
+ #region TypeOf
+
+ /// <summary>
+ /// Creates a constraint specifying the exact type of exception expected
+ /// </summary>
+ public static ExactTypeConstraint TypeOf(Type expectedType)
+ {
+ return Exception.TypeOf(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Creates a constraint specifying the exact type of exception expected
+ /// </summary>
+ public static ExactTypeConstraint TypeOf<T>()
+ {
+ return TypeOf(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ #region InstanceOf
+
+ /// <summary>
+ /// Creates a constraint specifying the type of exception expected
+ /// </summary>
+ public static InstanceOfTypeConstraint InstanceOf(Type expectedType)
+ {
+ return Exception.InstanceOf(expectedType);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ /// <summary>
+ /// Creates a constraint specifying the type of exception expected
+ /// </summary>
+ public static InstanceOfTypeConstraint InstanceOf<T>()
+ {
+ return InstanceOf(typeof(T));
+ }
+#endif
+
+ #endregion
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/nunit.snk b/NUnitLite-0.9.0/src/framework/nunit.snk
new file mode 100755
index 0000000..733af42
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunit.snk
Binary files differ
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-2.0.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-2.0.csproj
new file mode 100755
index 0000000..0e460da
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-2.0.csproj
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{C24A3FC4-2541-4E9C-BADD-564777610B75}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <IntermediateOutputPath>obj\$(Configuration)\net-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <DefineConstants>TRACE;DEBUG;NET_2_0,CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Debug\net-2.0\nunitlite.xml</DocumentationFile>
+ <OutputPath>..\..\bin\Debug\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <DefineConstants>TRACE;NET_2_0,CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Release\net-2.0\nunitlite.xml</DocumentationFile>
+ <OutputPath>..\..\bin\Release\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>nunit.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Attributes\TimeoutAttribute.cs" />
+ <Compile Include="Constraints\DelayedConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Attributes\DatapointsAttribute.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Attributes\DatapointSourceAttribute.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\ThreadUtility.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\TcpWriter.cs" />
+ <Compile Include="Runner\TextUI.cs" />
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunit.snk" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-3.5.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-3.5.csproj
new file mode 100755
index 0000000..9cce871
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-3.5.csproj
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{43B24DC5-16D6-45EF-93F1-B021B785A892}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_3_5, CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Debug\net-3.5\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;NET_3_5, CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Release\net-3.5\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>nunit.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\TimeoutAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\DelayedConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\ThreadUtility.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\TcpWriter.cs" />
+ <Compile Include="Runner\TextUI.cs" />
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunit.snk" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-4.0.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-4.0.csproj
new file mode 100755
index 0000000..cd8a1ae
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-4.0.csproj
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{1567BCCE-7BE9-4815-84D7-7F794DB39081}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_4_0, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Debug\net-4.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;NET_4_0, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Release\net-4.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>nunit.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\TimeoutAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\DelayedConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\ThreadUtility.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\TcpWriter.cs" />
+ <Compile Include="Runner\TextUI.cs" />
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunit.snk" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-4.5.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-4.5.csproj
new file mode 100755
index 0000000..234af0d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-4.5.csproj
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{D12F0F7B-8DE3-43EC-BA49-41052D065A9B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_4_5, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Debug\net-4.5\nunitlite.xml</DocumentationFile>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;NET_4_5, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DocumentationFile>..\..\bin\Release\net-4.5\nunitlite.xml</DocumentationFile>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>nunit.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\TimeoutAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\DelayedConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\AsyncInvocationRegion.cs" />
+ <Compile Include="Internal\AsyncSynchronizationContext.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\ThreadUtility.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\TcpWriter.cs" />
+ <Compile Include="Runner\TextUI.cs" />
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunit.snk" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-netcf-2.0.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-netcf-2.0.csproj
new file mode 100755
index 0000000..b0201ab
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-netcf-2.0.csproj
@@ -0,0 +1,335 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{BED999D7-F594-4CE4-A037-E40E2B9C1288}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>WindowsCE</PlatformFamilyName>
+ <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
+ <OSVersion>5.0</OSVersion>
+ <DeployDirSuffix>NUnitLite</DeployDirSuffix>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <NativePlatformName>Windows CE</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-2.0</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ <DocumentationFile>..\..\bin\Debug\netcf-2.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-2.0</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ <DocumentationFile>..\..\bin\Release\netcf-2.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\TcpWriter.cs" />
+ <Compile Include="Runner\TextUI.cs" />
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-netcf-3.5.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-netcf-3.5.csproj
new file mode 100755
index 0000000..9296987
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-netcf-3.5.csproj
@@ -0,0 +1,338 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>WindowsCE</PlatformFamilyName>
+ <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
+ <OSVersion>5.0</OSVersion>
+ <DeployDirSuffix>nunitlite_netcf_3._5</DeployDirSuffix>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <NativePlatformName>Windows CE</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ <DocumentationFile>..\..\bin\Debug\netcf-3.5\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ <DocumentationFile>..\..\bin\Release\netcf-3.5\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\TcpWriter.cs" />
+ <Compile Include="Runner\TextUI.cs" />
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-sl-3.0.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-sl-3.0.csproj
new file mode 100755
index 0000000..180d3a2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-sl-3.0.csproj
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{02B02379-2596-4E45-8B10-835D62EA2D9E}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <SignManifests>false</SignManifests>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-3.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\bin\Debug\sl-3.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\bin\Release\sl-3.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System.Windows" />
+ <Reference Include="system" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Compatibility\SerializableAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\Silverlight\TestPage.xaml.cs">
+ <DependentUpon>TestPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Runner\Silverlight\TextBlockWriter.cs" />
+ <Compile Include="Runner\TextUI.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <Page Include="Runner\Silverlight\TestPage.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-sl-4.0.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-sl-4.0.csproj
new file mode 100755
index 0000000..0a2306f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-sl-4.0.csproj
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{41326141-EB24-4984-9D9B-5CFAA55946BA}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <IntermediateOutputPath>obj\$(Configuration)\sl-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\bin\Debug\sl-4.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\bin\Release\sl-4.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>nunit.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Windows" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\TimeoutAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Compatibility\SerializableAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\Silverlight\TestPage.xaml.cs">
+ <DependentUpon>TestPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\Silverlight\TextBlockWriter.cs" />
+ <Compile Include="Runner\TextUI.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunit.snk" />
+ </ItemGroup>
+ <ItemGroup>
+ <Page Include="Runner\Silverlight\TestPage.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite-sl-5.0.csproj b/NUnitLite-0.9.0/src/framework/nunitlite-sl-5.0.csproj
new file mode 100755
index 0000000..b8ad4eb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite-sl-5.0.csproj
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework</RootNamespace>
+ <AssemblyName>nunitlite</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-5.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_5_0;CLR_4_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\bin\Debug\sl-5.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_5_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <DocumentationFile>..\..\bin\Release\sl-5.0\nunitlite.xml</DocumentationFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System.Windows" />
+ <Reference Include="system" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ExpectedExceptionData.cs" />
+ <Compile Include="Api\FailureSite.cs" />
+ <Compile Include="Api\IParameterDataSource.cs" />
+ <Compile Include="Api\IPropertyBag.cs" />
+ <Compile Include="Api\ITest.cs" />
+ <Compile Include="Api\ITestAssemblyBuilder.cs" />
+ <Compile Include="Api\ITestAssemblyRunner.cs" />
+ <Compile Include="Api\ITestCaseData.cs" />
+ <Compile Include="Api\ITestCaseSource.cs" />
+ <Compile Include="Api\ITestFilter.cs" />
+ <Compile Include="Api\ITestListener.cs" />
+ <Compile Include="Api\ITestResult.cs" />
+ <Compile Include="Api\IXmlNodeBuilder.cs" />
+ <Compile Include="Api\PropertyEntry.cs" />
+ <Compile Include="Api\ResultState.cs" />
+ <Compile Include="Api\RunState.cs" />
+ <Compile Include="Api\TestOutput.cs" />
+ <Compile Include="Api\TestStatus.cs" />
+ <Compile Include="Api\XmlNode.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assert.cs" />
+ <Compile Include="AssertionHelper.cs" />
+ <Compile Include="Assume.cs" />
+ <Compile Include="Attributes\CategoryAttribute.cs" />
+ <Compile Include="Attributes\CombinatorialAttribute.cs" />
+ <Compile Include="Attributes\CultureAttribute.cs" />
+ <Compile Include="Attributes\DataAttribute.cs" />
+ <Compile Include="Attributes\DatapointAttribute.cs" />
+ <Compile Include="Attributes\DatapointsAttribute.cs" />
+ <Compile Include="Attributes\DatapointSourceAttribute.cs" />
+ <Compile Include="Attributes\DescriptionAttribute.cs" />
+ <Compile Include="Attributes\ExpectedExceptionAttribute.cs" />
+ <Compile Include="Attributes\ExplicitAttribute.cs" />
+ <Compile Include="Attributes\IgnoreAttribute.cs" />
+ <Compile Include="Attributes\IncludeExcludeAttribute.cs" />
+ <Compile Include="Attributes\MaxTimeAttribute.cs" />
+ <Compile Include="Attributes\NUnitAttribute.cs" />
+ <Compile Include="Attributes\PairwiseAttribute.cs" />
+ <Compile Include="Attributes\PlatformAttribute.cs" />
+ <Compile Include="Attributes\PropertyAttribute.cs" />
+ <Compile Include="Attributes\RandomAttribute.cs" />
+ <Compile Include="Attributes\RangeAttribute.cs" />
+ <Compile Include="Attributes\RepeatAttribute.cs" />
+ <Compile Include="Attributes\SequentialAttribute.cs" />
+ <Compile Include="Attributes\SetCultureAttribute.cs" />
+ <Compile Include="Attributes\SetUICultureAttribute.cs" />
+ <Compile Include="Attributes\SetUpAttribute.cs" />
+ <Compile Include="Attributes\TearDownAttribute.cs" />
+ <Compile Include="Attributes\TestAttribute.cs" />
+ <Compile Include="Attributes\TestCaseAttribute.cs" />
+ <Compile Include="Attributes\TestCaseSourceAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureSetUpAttribute.cs" />
+ <Compile Include="Attributes\TestFixtureTearDownAttribute.cs" />
+ <Compile Include="Attributes\TheoryAttribute.cs" />
+ <Compile Include="Attributes\TimeoutAttribute.cs" />
+ <Compile Include="Attributes\ValuesAttribute.cs" />
+ <Compile Include="Attributes\ValueSourceAttribute.cs" />
+ <Compile Include="Compatibility\SerializableAttribute.cs" />
+ <Compile Include="Constraints\AllItemsConstraint.cs" />
+ <Compile Include="Constraints\AndConstraint.cs" />
+ <Compile Include="Constraints\AssignableFromConstraint.cs" />
+ <Compile Include="Constraints\AssignableToConstraint.cs" />
+ <Compile Include="Constraints\AttributeConstraint.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraint.cs" />
+ <Compile Include="Constraints\BasicConstraint.cs" />
+ <Compile Include="Constraints\BinaryConstraint.cs" />
+ <Compile Include="Constraints\BinarySerializableConstraint.cs" />
+ <Compile Include="Constraints\CollectionConstraint.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraint.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraint.cs" />
+ <Compile Include="Constraints\CollectionItemsEqualConstraint.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraint.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraint.cs" />
+ <Compile Include="Constraints\CollectionTally.cs" />
+ <Compile Include="Constraints\ComparisonAdapter.cs" />
+ <Compile Include="Constraints\ComparisonConstraint.cs" />
+ <Compile Include="Constraints\Constraint.cs" />
+ <Compile Include="Constraints\ConstraintBuilder.cs" />
+ <Compile Include="Constraints\ConstraintExpression.cs" />
+ <Compile Include="Constraints\ConstraintExpressionBase.cs" />
+ <Compile Include="Constraints\ConstraintFactory.cs" />
+ <Compile Include="Constraints\ContainsConstraint.cs" />
+ <Compile Include="Constraints\EmptyCollectionConstraint.cs" />
+ <Compile Include="Constraints\EmptyConstraint.cs" />
+ <Compile Include="Constraints\EmptyDirectoryConstraint.cs" />
+ <Compile Include="Constraints\EmptyStringConstraint.cs" />
+ <Compile Include="Constraints\EndsWithConstraint.cs" />
+ <Compile Include="Constraints\EqualConstraint.cs" />
+ <Compile Include="Constraints\EqualityAdapter.cs" />
+ <Compile Include="Constraints\ExactCountConstraint.cs" />
+ <Compile Include="Constraints\ExactTypeConstraint.cs" />
+ <Compile Include="Constraints\ExceptionTypeConstraint.cs" />
+ <Compile Include="Constraints\FailurePoint.cs" />
+ <Compile Include="Constraints\FalseConstraint.cs" />
+ <Compile Include="Constraints\FloatingPointNumerics.cs" />
+ <Compile Include="Constraints\GreaterThanConstraint.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraint.cs" />
+ <Compile Include="Constraints\IResolveConstraint.cs" />
+ <Compile Include="Constraints\LessThanConstraint.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraint.cs" />
+ <Compile Include="Constraints\MessageWriter.cs" />
+ <Compile Include="Constraints\MsgUtils.cs" />
+ <Compile Include="Constraints\NaNConstraint.cs" />
+ <Compile Include="Constraints\NoItemConstraint.cs" />
+ <Compile Include="Constraints\NotConstraint.cs" />
+ <Compile Include="Constraints\NullConstraint.cs" />
+ <Compile Include="Constraints\NullOrEmptyStringConstraint.cs" />
+ <Compile Include="Constraints\Numerics.cs" />
+ <Compile Include="Constraints\NUnitComparer.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparer.cs" />
+ <Compile Include="Constraints\Operators\AllOperator.cs" />
+ <Compile Include="Constraints\Operators\AndOperator.cs" />
+ <Compile Include="Constraints\Operators\AttributeOperator.cs" />
+ <Compile Include="Constraints\Operators\BinaryOperator.cs" />
+ <Compile Include="Constraints\Operators\CollectionOperator.cs" />
+ <Compile Include="Constraints\Operators\ConstraintOperator.cs" />
+ <Compile Include="Constraints\Operators\ExactCountOperator.cs" />
+ <Compile Include="Constraints\Operators\NoneOperator.cs" />
+ <Compile Include="Constraints\Operators\NotOperator.cs" />
+ <Compile Include="Constraints\Operators\OrOperator.cs" />
+ <Compile Include="Constraints\Operators\PrefixOperator.cs" />
+ <Compile Include="Constraints\Operators\PropOperator.cs" />
+ <Compile Include="Constraints\Operators\SelfResolvingOperator.cs" />
+ <Compile Include="Constraints\Operators\SomeOperator.cs" />
+ <Compile Include="Constraints\Operators\ThrowsOperator.cs" />
+ <Compile Include="Constraints\Operators\WithOperator.cs" />
+ <Compile Include="Constraints\OrConstraint.cs" />
+ <Compile Include="Constraints\PathConstraint.cs" />
+ <Compile Include="Constraints\PredicateConstraint.cs" />
+ <Compile Include="Constraints\PrefixConstraint.cs" />
+ <Compile Include="Constraints\PropertyConstraint.cs" />
+ <Compile Include="Constraints\PropertyExistsConstraint.cs" />
+ <Compile Include="Constraints\RangeConstraint.cs" />
+ <Compile Include="Constraints\RegexConstraint.cs" />
+ <Compile Include="Constraints\ResolvableConstraintExpression.cs" />
+ <Compile Include="Constraints\ReusableConstraint.cs" />
+ <Compile Include="Constraints\SameAsConstraint.cs" />
+ <Compile Include="Constraints\SamePathConstraint.cs" />
+ <Compile Include="Constraints\SamePathOrUnderConstraint.cs" />
+ <Compile Include="Constraints\SomeItemsConstraint.cs" />
+ <Compile Include="Constraints\StartsWithConstraint.cs" />
+ <Compile Include="Constraints\StringConstraint.cs" />
+ <Compile Include="Constraints\SubPathConstraint.cs" />
+ <Compile Include="Constraints\SubstringConstraint.cs" />
+ <Compile Include="Constraints\ThrowsConstraint.cs" />
+ <Compile Include="Constraints\ThrowsNothingConstraint.cs" />
+ <Compile Include="Constraints\Tolerance.cs" />
+ <Compile Include="Constraints\ToleranceMode.cs" />
+ <Compile Include="Constraints\TrueConstraint.cs" />
+ <Compile Include="Constraints\TypeConstraint.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraint.cs" />
+ <Compile Include="Constraints\XmlSerializableConstraint.cs" />
+ <Compile Include="Contains.cs" />
+ <Compile Include="Env.cs" />
+ <Compile Include="Exceptions\AssertionException.cs" />
+ <Compile Include="Exceptions\IgnoreException.cs" />
+ <Compile Include="Exceptions\InconclusiveException.cs" />
+ <Compile Include="Exceptions\SuccessException.cs" />
+ <Compile Include="Extensibility\IParameterDataProvider.cs" />
+ <Compile Include="Extensibility\ISuiteBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+ <Compile Include="Extensibility\ITestCaseProvider.cs" />
+ <Compile Include="GlobalSettings.cs" />
+ <Compile Include="Guard.cs" />
+ <Compile Include="Has.cs" />
+ <Compile Include="IExpectException.cs" />
+ <Compile Include="Internal\AssemblyHelper.cs" />
+ <Compile Include="Internal\Builders\CombinatorialStrategy.cs" />
+ <Compile Include="Internal\Builders\CombinatorialTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\CombiningStrategy.cs" />
+ <Compile Include="Internal\Builders\DataAttributeTestCaseProvider.cs" />
+ <Compile Include="Internal\Builders\DatapointProvider.cs" />
+ <Compile Include="Internal\Builders\NUnitTestCaseBuilder.cs" />
+ <Compile Include="Internal\Builders\NUnitTestFixtureBuilder.cs" />
+ <Compile Include="Internal\Builders\PairwiseStrategy.cs" />
+ <Compile Include="Internal\Builders\ParameterDataProvider.cs" />
+ <Compile Include="Internal\Builders\ProviderCache.cs" />
+ <Compile Include="Internal\Builders\SequentialStrategy.cs" />
+ <Compile Include="Internal\Commands\ApplyChangesToContextCommand.cs" />
+ <Compile Include="Internal\Commands\CommandDecoratorList.cs" />
+ <Compile Include="Internal\Commands\CommandStage.cs" />
+ <Compile Include="Internal\Commands\DelegatingTestCommand.cs" />
+ <Compile Include="Internal\Commands\ExpectedExceptionCommand.cs" />
+ <Compile Include="Internal\Commands\ICommandDecorator.cs" />
+ <Compile Include="Internal\Commands\MaxTimeCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeSetUpCommand.cs" />
+ <Compile Include="Internal\Commands\OneTimeTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\RepeatedTestCommand.cs" />
+ <Compile Include="Internal\Commands\SetUpTearDownCommand.cs" />
+ <Compile Include="Internal\Commands\SkipCommand.cs" />
+ <Compile Include="Internal\Commands\TestCommand.cs" />
+ <Compile Include="Internal\Commands\TestMethodCommand.cs" />
+ <Compile Include="Internal\Commands\TheoryResultCommand.cs" />
+ <Compile Include="Internal\CultureDetector.cs" />
+ <Compile Include="Internal\ExceptionHelper.cs" />
+ <Compile Include="Internal\Extensibility\ParameterDataProviders.cs" />
+ <Compile Include="Internal\Extensibility\TestCaseProviders.cs" />
+ <Compile Include="Internal\Filters\AndFilter.cs" />
+ <Compile Include="Internal\Filters\CategoryExpression.cs" />
+ <Compile Include="Internal\Filters\CategoryFilter.cs" />
+ <Compile Include="Internal\Filters\NotFilter.cs" />
+ <Compile Include="Internal\Filters\OrFilter.cs" />
+ <Compile Include="Internal\Filters\SimpleCategoryExpression.cs" />
+ <Compile Include="Internal\Filters\SimpleNameFilter.cs" />
+ <Compile Include="Internal\IApplyToContext.cs" />
+ <Compile Include="Internal\IApplyToTest.cs" />
+ <Compile Include="Internal\InvalidTestFixtureException.cs" />
+ <Compile Include="Internal\MethodHelper.cs" />
+ <Compile Include="Internal\NUnitException.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyBuilder.cs" />
+ <Compile Include="Internal\NUnitLiteTestAssemblyRunner.cs" />
+ <Compile Include="Internal\OSPlatform.cs" />
+ <Compile Include="Internal\ParameterSet.cs" />
+ <Compile Include="Internal\PlatformHelper.cs" />
+ <Compile Include="Internal\PropertyBag.cs" />
+ <Compile Include="Internal\PropertyNames.cs" />
+ <Compile Include="Internal\RandomGenerator.cs" />
+ <Compile Include="Internal\Randomizer.cs" />
+ <Compile Include="Internal\Reflect.cs" />
+ <Compile Include="Internal\Results\TestCaseResult.cs" />
+ <Compile Include="Internal\Results\TestResult.cs" />
+ <Compile Include="Internal\Results\TestSuiteResult.cs" />
+ <Compile Include="Internal\RuntimeFramework.cs" />
+ <Compile Include="Internal\StackFilter.cs" />
+ <Compile Include="Internal\StringUtil.cs" />
+ <Compile Include="Internal\TestExecutionContext.cs" />
+ <Compile Include="Internal\TestFilter.cs" />
+ <Compile Include="Internal\TestFixtureBuilder.cs" />
+ <Compile Include="Internal\TestListener.cs" />
+ <Compile Include="Internal\Tests\ParameterizedFixtureSuite.cs" />
+ <Compile Include="Internal\Tests\ParameterizedMethodSuite.cs" />
+ <Compile Include="Internal\Tests\Test.cs" />
+ <Compile Include="Internal\Tests\TestAssembly.cs" />
+ <Compile Include="Internal\Tests\TestFixture.cs" />
+ <Compile Include="Internal\Tests\TestMethod.cs" />
+ <Compile Include="Internal\Tests\TestSuite.cs" />
+ <Compile Include="Internal\TextMessageWriter.cs" />
+ <Compile Include="Internal\ThreadUtility.cs" />
+ <Compile Include="Internal\TypeHelper.cs" />
+ <Compile Include="Internal\WorkItems\CompositeWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\CountdownEvent.cs" />
+ <Compile Include="Internal\WorkItems\SimpleWorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItem.cs" />
+ <Compile Include="Internal\WorkItems\WorkItemState.cs" />
+ <Compile Include="Is.cs" />
+ <Compile Include="Iz.cs" />
+ <Compile Include="ListMapper.cs" />
+ <Compile Include="MessageMatch.cs" />
+ <Compile Include="ObjectList.cs" />
+ <Compile Include="Runner\CommandLineOptions.cs" />
+ <Compile Include="Runner\ConsoleWriter.cs" />
+ <Compile Include="Runner\DebugWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit2XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\NUnit3XmlOutputWriter.cs" />
+ <Compile Include="Runner\OutputWriters\OutputWriter.cs" />
+ <Compile Include="Runner\ResultReporter.cs" />
+ <Compile Include="Runner\ResultSummary.cs" />
+ <Compile Include="Runner\Silverlight\TestPage.xaml.cs">
+ <DependentUpon>TestPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Runner\Silverlight\TextBlockWriter.cs" />
+ <Compile Include="Runner\TextUI.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="SpecialValue.cs" />
+ <Compile Include="TestCaseData.cs" />
+ <Compile Include="TestContext.cs" />
+ <Compile Include="Throws.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <Page Include="Runner\Silverlight\TestPage.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunitlite.framework.build" />
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/framework/nunitlite.framework.build b/NUnitLite-0.9.0/src/framework/nunitlite.framework.build
new file mode 100755
index 0000000..84b28dd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/nunitlite.framework.build
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<project name="NUnitLiteFramework" default="build" basedir=".">
+
+ <property name="msbuild.project" value="nunitlite-${msbuild.proj.suffix}.csproj"/>
+
+ <include buildfile="../../nunitlite.projects.common"/>
+
+ <target name="nant-clean">
+
+ <delete file="${current.build.dir}/nunitlite.dll"/>
+ <delete file="${current.build.dir}/nunitlite.pdb"/>
+ <delete file="${current.build.dir}/nunitlite.xml"/>
+
+ </target>
+
+ <target name="nant-build">
+
+ <csc target="library"
+ output="${current.build.dir}/nunitlite.dll"
+ doc="${current.build.dir}/nunitlite.xml"
+ debug="${build.debug}"
+ define="${build.defines};NUNITLITE">
+ <sources basedir="${project.src.dir}/framework">
+ <patternset refid="source-files"/>
+ </sources>
+ <references>
+ <include name="mscorlib.dll"/>
+ <include name="System.dll"/>
+ <include name="System.Xml.dll"/>
+ <include name="System.Windows.dll" if="${runtime.platform == 'silverlight'}"/>
+ </references>
+ </csc>
+
+ </target>
+
+ <patternset id="source-files">
+ <include name="*.cs"/>
+
+ <include name="Api/*.cs"/>
+ <exclude name="Api/ITestCaseSourceProvider.cs"/>
+
+ <include name="Attributes/*.cs"/>
+ <exclude name="Attributes/SetCultureAttribute.cs" if="${runtime.platform == 'netcf'}"/>
+ <exclude name="Attributes/SetUICultureAttribute.cs" if="${runtime.platform == 'netcf'}"/>
+
+ <include name="Compatibility/*.cs" if="${runtime.platform == 'silverlight'}"/>
+ <include name="Compatibility/*.cs" if="${runtime.config == 'netcf-1.0'}"/>
+
+ <include name="Constraints/**/*.cs"/>
+ <exclude name="Constraints/BinarySerializableConstraint.cs" if="${runtime.platform == 'silverlight'}"/>
+ <exclude name="Constraints/BinarySerializableConstraint.cs" if="${runtime.platform == 'netcf'}"/>
+ <exclude name="Constraints/DelayedConstraint.cs" if="${runtime.platform == 'netcf'}"/>
+ <exclude name="Constraints/XmlSerializableConstraint.cs" if="${runtime.platform == 'silverlight'}"/>
+ <exclude name="Constraints/XmlSerializableConstraint.cs" if="${runtime.config == 'netcf-1.0'}"/>
+
+ <include name="Exceptions/*.cs"/>
+ <include name="Extensibility/*.cs"/>
+
+ <include name="Internal/**/*.cs"/>
+ <exclude name="Internal/AsyncSynchronizationContext.cs" unless="${runtime.config == 'net-4.5'}"/>
+ <exclude name="Internal/AsyncInvocationRegion.cs" unless="${runtime.config == 'net-4.5'}"/>
+ <exclude name="Internal/XmlHelper.cs"/>
+
+ <include name="Runner/**/*.cs"/>
+ <exclude name="Runner/TcpWriter.cs"/>
+ <exclude name="Runner/Silverlight/*.cs" unless="${runtime.platform == 'silverlight'}"/>
+ </patternset>
+
+</project>
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..067f59d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,79 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..73c6501
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.i.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.i.cs
new file mode 100755
index 0000000..73c6501
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-4.0/Runner/Silverlight/TestPage.g.i.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..73c6501
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.i.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.i.cs
new file mode 100755
index 0000000..73c6501
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/Runner/Silverlight/TestPage.g.i.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..f1a92d2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "404BC7861A8670733F37E5708303C6F6"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.5420
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-4.0/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-4.0/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..73c6501
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-4.0/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/Runner/Silverlight/TestPage.g.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/Runner/Silverlight/TestPage.g.cs
new file mode 100755
index 0000000..73c6501
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/Runner/Silverlight/TestPage.g.cs
@@ -0,0 +1,80 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\framework\Runner\Silverlight\TestPage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "D1DD5835B95B554DBE59625C339B3531"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Runner.Silverlight {
+
+
+ public partial class TestPage : System.Windows.Controls.UserControl {
+
+ internal System.Windows.Controls.Grid LayoutRoot;
+
+ internal System.Windows.Controls.TextBlock Total;
+
+ internal System.Windows.Controls.TextBlock Passed;
+
+ internal System.Windows.Controls.TextBlock Failures;
+
+ internal System.Windows.Controls.TextBlock Errors;
+
+ internal System.Windows.Controls.TextBlock Inconclusive;
+
+ internal System.Windows.Controls.TextBlock NotRun;
+
+ internal System.Windows.Controls.TextBlock ScratchArea;
+
+ internal System.Windows.Controls.TextBlock Notice;
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite;component/Runner/Silverlight/TestPage.xaml", System.UriKind.Relative));
+ this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
+ this.Total = ((System.Windows.Controls.TextBlock)(this.FindName("Total")));
+ this.Passed = ((System.Windows.Controls.TextBlock)(this.FindName("Passed")));
+ this.Failures = ((System.Windows.Controls.TextBlock)(this.FindName("Failures")));
+ this.Errors = ((System.Windows.Controls.TextBlock)(this.FindName("Errors")));
+ this.Inconclusive = ((System.Windows.Controls.TextBlock)(this.FindName("Inconclusive")));
+ this.NotRun = ((System.Windows.Controls.TextBlock)(this.FindName("NotRun")));
+ this.ScratchArea = ((System.Windows.Controls.TextBlock)(this.FindName("ScratchArea")));
+ this.Notice = ((System.Windows.Controls.TextBlock)(this.FindName("Notice")));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/framework/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/MockAssembly.cs b/NUnitLite-0.9.0/src/mock-assembly/MockAssembly.cs
new file mode 100755
index 0000000..11b2840
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/MockAssembly.cs
@@ -0,0 +1,300 @@
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org.
+// ****************************************************************
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Tests
+{
+ namespace Assemblies
+ {
+ /// <summary>
+ /// Constant definitions for the mock-assembly dll.
+ /// </summary>
+ public class MockAssembly
+ {
+ public static int Classes = 9;
+ public static int NamespaceSuites = 6; // assembly, NUnit, Tests, Assemblies, Singletons, TestAssembly
+
+ public static int Tests = MockTestFixture.Tests
+ + Singletons.OneTestCase.Tests
+ + TestAssembly.MockTestFixture.Tests
+ + IgnoredFixture.Tests
+ + ExplicitFixture.Tests
+ + BadFixture.Tests
+ + FixtureWithTestCases.Tests
+ + ParameterizedFixture.Tests
+ + GenericFixtureConstants.Tests;
+
+ public static int Suites = MockTestFixture.Suites
+ + Singletons.OneTestCase.Suites
+ + TestAssembly.MockTestFixture.Suites
+ + IgnoredFixture.Suites
+ + ExplicitFixture.Suites
+ + BadFixture.Suites
+ + FixtureWithTestCases.Suites
+ + ParameterizedFixture.Suites
+ + GenericFixtureConstants.Suites
+ + NamespaceSuites;
+
+ public static readonly int Nodes = Tests + Suites;
+
+ public static int ExplicitFixtures = 1;
+ public static int SuitesRun = Suites - ExplicitFixtures;
+
+ public static int Ignored = MockTestFixture.Ignored + IgnoredFixture.Tests;
+ public static int Explicit = MockTestFixture.Explicit + ExplicitFixture.Tests;
+ public static int NotRunnable = MockTestFixture.NotRunnable + BadFixture.Tests;
+ public static int NotRun = Ignored + Explicit + NotRunnable;
+ public static int TestsRun = Tests - NotRun;
+ public static int ResultCount = Tests - Explicit;
+
+ public static int Errors = MockTestFixture.Errors;
+ public static int Failures = MockTestFixture.Failures;
+ public static int ErrorsAndFailures = Errors + Failures;
+
+ public static int Categories = MockTestFixture.Categories;
+
+#if !NETCF
+ public static string AssemblyPath = AssemblyHelper.GetAssemblyPath(typeof(MockAssembly).Assembly);
+#endif
+ }
+
+ //public class MockSuite
+ //{
+ // [Suite]
+ // public static TestSuite Suite
+ // {
+ // get
+ // {
+ // return new TestSuite( "MockSuite" );
+ // }
+ // }
+ //}
+
+ [TestFixture(Description="Fake Test Fixture")]
+ [Category("FixtureCategory")]
+ public class MockTestFixture
+ {
+ public const int Tests = 11;
+ public const int Suites = 1;
+
+ public const int Ignored = 1;
+ public const int Explicit = 1;
+ public const int NotRunnable = 2;
+ public const int NotRun = Ignored + Explicit + NotRunnable;
+ public const int TestsRun = Tests - NotRun;
+ public const int ResultCount = Tests - Explicit;
+
+ public const int Failures = 1;
+ public const int Errors = 1;
+ public const int ErrorsAndFailures = Errors + Failures;
+ public const int Inconclusive = 1;
+
+ public const int Categories = 5;
+ public const int MockCategoryTests = 2;
+
+ [Test(Description="Mock Test #1")]
+ public void MockTest1()
+ {}
+
+ [Test]
+ [Category("MockCategory")]
+ [Property("Severity","Critical")]
+ [Description("This is a really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really long description")]
+ public void MockTest2()
+ {}
+
+ [Test]
+ [Category("MockCategory")]
+ [Category("AnotherCategory")]
+ public void MockTest3()
+ { Assert.Pass("Succeeded!"); }
+
+ [Test]
+ protected static void MockTest5()
+ {}
+
+ [Test]
+ public void FailingTest()
+ {
+ Assert.Fail("Intentional failure");
+ }
+
+ [Test, Property("TargetMethod", "SomeClassName"), Property("Size", 5), /*Property("TargetType", typeof( System.Threading.Thread ))*/]
+ public void TestWithManyProperties()
+ {}
+
+ [Test]
+ [Ignore("ignoring this test method for now")]
+ [Category("Foo")]
+ public void MockTest4()
+ {}
+
+ [Test, Explicit]
+ [Category( "Special" )]
+ public void ExplicitlyRunTest()
+ {}
+
+ [Test]
+ public void NotRunnableTest( int a, int b)
+ {
+ }
+
+ [Test]
+ public void InconclusiveTest()
+ {
+ Assert.Inconclusive("No valid data");
+ }
+
+ [Test]
+ public void TestWithException()
+ {
+ MethodThrowsException();
+ }
+
+ private void MethodThrowsException()
+ {
+ throw new Exception("Intentional Exception");
+ }
+ }
+ }
+
+ namespace Singletons
+ {
+ [TestFixture]
+ public class OneTestCase
+ {
+ public static readonly int Tests = 1;
+ public static readonly int Suites = 1;
+
+ [Test]
+ public virtual void TestCase()
+ {}
+ }
+ }
+
+ namespace TestAssembly
+ {
+ [TestFixture]
+ public class MockTestFixture
+ {
+ public static readonly int Tests = 1;
+ public static readonly int Suites = 1;
+
+ [Test]
+ public void MyTest()
+ {
+ }
+ }
+ }
+
+ [TestFixture, Ignore]
+ public class IgnoredFixture
+ {
+ public static readonly int Tests = 3;
+ public static readonly int Suites = 1;
+
+ [Test]
+ public void Test1() { }
+
+ [Test]
+ public void Test2() { }
+
+ [Test]
+ public void Test3() { }
+ }
+
+ [TestFixture,Explicit]
+ public class ExplicitFixture
+ {
+ public static readonly int Tests = 2;
+ public static readonly int Suites = 1;
+ public static readonly int Nodes = Tests + Suites;
+
+ [Test]
+ public void Test1() { }
+
+ [Test]
+ public void Test2() { }
+ }
+
+ [TestFixture]
+ public class BadFixture
+ {
+ public static readonly int Tests = 1;
+ public static readonly int Suites = 1;
+
+ public BadFixture(int val) { }
+
+ [Test]
+ public void SomeTest() { }
+ }
+
+ [TestFixture]
+ public class FixtureWithTestCases
+ {
+ public static readonly int Tests = 4;
+ public static readonly int Suites = 3;
+
+ [TestCase(2, 2, ExpectedResult=4)]
+ [TestCase(9, 11, ExpectedResult=20)]
+ public int MethodWithParameters(int x, int y)
+ {
+ return x+y;
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestCase(2, 4)]
+ [TestCase(9.2, 11.7)]
+ public void GenericMethod<T>(T x, T y)
+ {
+ }
+#endif
+ }
+
+ [TestFixture(5)]
+ [TestFixture(42)]
+ public class ParameterizedFixture
+ {
+ public static readonly int Tests = 4;
+ public static readonly int Suites = 3;
+
+ public ParameterizedFixture(int num) { }
+
+ [Test]
+ public void Test1() { }
+
+ [Test]
+ public void Test2() { }
+ }
+
+ public class GenericFixtureConstants
+ {
+#if CLR_2_0 || CLR_4_0
+ public static readonly int Tests = 4;
+ public static readonly int Suites = 3;
+#else
+ public static readonly int Tests = 0;
+ public static readonly int Suites = 0;
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestFixture(5)]
+ [TestFixture(11.5)]
+ public class GenericFixture<T>
+ {
+ public GenericFixture(T num){ }
+
+ [Test]
+ public void Test1() { }
+
+ [Test]
+ public void Test2() { }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/mock-assembly/Properties/AssemblyInfo.cs b/NUnitLite-0.9.0/src/mock-assembly/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..bd542a5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+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("mock-assembly")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("mock-assembly")]
+[assembly: AssemblyCopyright("Copyright © 2012")]
+[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("e33f0417-0b18-4d8c-9142-6ac47cd6c29a")]
+
+// 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")]
+#if !PocketPC && !WindowsCE && !NETCF
+[assembly: AssemblyFileVersion("1.0.0.0")]
+#endif
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-2.0.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-2.0.csproj
new file mode 100755
index 0000000..41d6d11
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-2.0.csproj
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <OutputPath>..\..\bin\Debug\net-2.0\</OutputPath>
+ <Optimize>false</Optimize>
+ <DefineConstants>TRACE;DEBUG;CLR_2_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <DefineConstants>TRACE;CLR_2_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <OutputPath>..\..\bin\Release\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-2.0.csproj">
+ <Project>{C24A3FC4-2541-4E9C-BADD-564777610B75}</Project>
+ <Name>nunitlite-2.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-3.5.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-3.5.csproj
new file mode 100755
index 0000000..321f0ca
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-3.5.csproj
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;CLR_2_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;CLR_2_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-3.5.csproj">
+ <Project>{43B24DC5-16D6-45EF-93F1-B021B785A892}</Project>
+ <Name>nunitlite-3.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.0.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.0.csproj
new file mode 100755
index 0000000..d6118f9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.0.csproj
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;CLR_4_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;CLR_4_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-4.0.csproj">
+ <Project>{1567BCCE-7BE9-4815-84D7-7F794DB39081}</Project>
+ <Name>nunitlite-4.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.5.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.5.csproj
new file mode 100755
index 0000000..ee4b2a1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-4.5.csproj
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{A57FFBD8-684A-4868-A4E1-A5D28EC6EA3B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;CLR_4_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;CLR_4_0</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-4.5.csproj">
+ <Project>{d12f0f7b-8de3-43ec-ba49-41052d065a9b}</Project>
+ <Name>nunitlite-4.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-2.0.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-2.0.csproj
new file mode 100755
index 0000000..6c05f85
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-2.0.csproj
@@ -0,0 +1,79 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{33EA4538-3452-42ED-92A9-4CC3B25032AD}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly_netcf_2._0</RootNamespace>
+ <AssemblyName>mock-assembly-netcf-2.0</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>PocketPC</PlatformFamilyName>
+ <PlatformID>3C41C503-53EF-4c2a-8DD4-A8217CAD115E</PlatformID>
+ <OSVersion>4.20</OSVersion>
+ <DeployDirSuffix>mock_assembly_netcf_2._0</DeployDirSuffix>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <NativePlatformName>Pocket PC 2003</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-2.0</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-2.0</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-netcf-2.0.csproj">
+ <Project>{BED999D7-F594-4CE4-A037-E40E2B9C1288}</Project>
+ <Name>nunitlite-netcf-2.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-3.5.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-3.5.csproj
new file mode 100755
index 0000000..8070850
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-netcf-3.5.csproj
@@ -0,0 +1,82 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{B0C85907-1103-44F4-ACFF-6A1B9170C0B1}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly_netcf_3._5</RootNamespace>
+ <AssemblyName>mock-assembly-netcf-3.5</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>PocketPC</PlatformFamilyName>
+ <PlatformID>4118C335-430C-497f-BE48-11C3316B135E</PlatformID>
+ <OSVersion>5.1</OSVersion>
+ <DeployDirSuffix>mock_assembly_netcf_3._5</DeployDirSuffix>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <NativePlatformName>Windows Mobile 5.0 Pocket PC SDK</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-netcf-3.5.csproj">
+ <Project>{5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}</Project>
+ <Name>nunitlite-netcf-3.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-3.0.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-3.0.csproj
new file mode 100755
index 0000000..c3abba8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-3.0.csproj
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{BB355D2C-FB4F-4526-9B40-7944C40FDFDA}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <SignManifests>false</SignManifests>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-3.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-3.0.csproj">
+ <Project>{02B02379-2596-4E45-8B10-835D62EA2D9E}</Project>
+ <Name>nunitlite-sl-3.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-4.0.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-4.0.csproj
new file mode 100755
index 0000000..2857954
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-4.0.csproj
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{3C1249FC-B5DF-4E3A-ADDD-817526254876}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <IntermediateOutputPath>obj\$(Configuration)\sl-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-4.0.csproj">
+ <Project>{41326141-EB24-4984-9D9B-5CFAA55946BA}</Project>
+ <Name>nunitlite-sl-4.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-5.0.csproj b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-5.0.csproj
new file mode 100755
index 0000000..2a4b022
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly-sl-5.0.csproj
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{3C19A734-11BB-48FD-81D0-042B6A8D4CFC}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>mock_assembly</RootNamespace>
+ <AssemblyName>mock-assembly</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-5.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_5_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_5_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="MockAssembly.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-5.0.csproj">
+ <Project>{5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}</Project>
+ <Name>nunitlite-sl-5.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/mock-assembly/mock-assembly.build b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly.build
new file mode 100755
index 0000000..bc8550b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/mock-assembly.build
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<project name="MockAssembly" default="build" basedir=".">
+
+ <property name="msbuild.project" value="mock-assembly-${msbuild.proj.suffix}.csproj"/>
+
+ <include buildfile="../../nunitlite.projects.common"/>
+
+ <target name="nant-clean">
+
+ <delete file="${current.build.dir}/mock-assembly.dll"/>
+ <delete file="${current.build.dir}/mock-assembly.pdb"/>
+
+ </target>
+
+ <target name="nant-build">
+
+ <csc target="library"
+ output="${current.build.dir}/mock-assembly.dll"
+ debug="${build.debug}"
+ define="${build.defines};NUNITLITE">
+ <sources basedir=".">
+ <include name="**/*.cs"/>
+ </sources>
+ <references basedir="${current.build.dir}">
+ <include name="mscorlib.dll"/>
+ <include name="nunitlite.dll"/>
+ </references>
+ </csc>
+
+ </target>
+
+</project>
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/mock-assembly/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/testdata/AssemblyInfo.cs b/NUnitLite-0.9.0/src/testdata/AssemblyInfo.cs
new file mode 100755
index 0000000..fd9e52a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AssemblyInfo.cs
@@ -0,0 +1,44 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+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("NUnitLite Test Data")]
+[assembly: AssemblyDescription("Data for the tests of the NUnitLite testing framework")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NUnitLite")]
+[assembly: AssemblyCopyright("Copyright © 2007-2012, Charlie Poole")]
+[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)]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+#if !PocketPC && !WindowsCE && !NETCF
+[assembly: AssemblyFileVersion("1.0.0.0")]
+#endif
+
+// Under Silverlight, it's only possible to reflect
+// over members that would be accessible normally.
+#if SILVERLIGHT
+[assembly: InternalsVisibleTo("nunitlite")]
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/AssertCountFixture.cs b/NUnitLite-0.9.0/src/testdata/AssertCountFixture.cs
new file mode 100755
index 0000000..2b20764
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AssertCountFixture.cs
@@ -0,0 +1,51 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework;
+
+namespace NUnit.TestData
+{
+ [TestFixture]
+ public class AssertCountFixture
+ {
+ public static readonly int ExpectedAssertCount = 5;
+
+ [Test]
+ public void BooleanAssert()
+ {
+ Assert.That(2 + 2 == 4);
+ }
+ [Test]
+ public void ConstraintAssert()
+ {
+ Assert.That(2 + 2, Is.EqualTo(4));
+ }
+ [Test]
+ public void ThreeAsserts()
+ {
+ Assert.That(2 + 2 == 4);
+ Assert.That(2 + 2, Is.EqualTo(4));
+ Assert.That(2 + 2, Is.EqualTo(5));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/AssertFailFixture.cs b/NUnitLite-0.9.0/src/testdata/AssertFailFixture.cs
new file mode 100755
index 0000000..6b3b893
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AssertFailFixture.cs
@@ -0,0 +1,50 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.AssertFailFixture
+{
+ [TestFixture]
+ public class AssertFailFixture
+ {
+ [Test]
+ public void CallAssertFail()
+ {
+ Assert.Fail();
+ }
+
+ [Test]
+ public void CallAssertFailWithMessage()
+ {
+ Assert.Fail("MESSAGE");
+ }
+
+ [Test]
+ public void CallAssertFailWithMessageAndArgs()
+ {
+ Assert.Fail("MESSAGE: {0}+{1}={2}", 2, 2, 4);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/AssertIgnoreData.cs b/NUnitLite-0.9.0/src/testdata/AssertIgnoreData.cs
new file mode 100755
index 0000000..fc3ff0c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AssertIgnoreData.cs
@@ -0,0 +1,84 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.AssertIgnoreData
+{
+ [TestFixture]
+ public class IgnoredTestCaseFixture
+ {
+ [Test]
+ public void CallsIgnore()
+ {
+ Assert.Ignore("Ignore me");
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void CallsIgnoreWithExpectedException()
+ {
+ Assert.Ignore("Ignore me");
+ }
+ }
+
+ [TestFixture]
+ public class IgnoredTestSuiteFixture
+ {
+ [TestFixtureSetUp]
+ public void FixtureSetUp()
+ {
+ Assert.Ignore("Ignore this fixture");
+ }
+
+ [Test]
+ public void ATest()
+ {
+ }
+
+ [Test]
+ public void AnotherTest()
+ {
+ }
+ }
+
+ [TestFixture]
+ public class IgnoreInSetUpFixture
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ Assert.Ignore( "Ignore this test" );
+ }
+
+ [Test]
+ public void Test1()
+ {
+ }
+
+ [Test]
+ public void Test2()
+ {
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/AsyncDummyFixture.cs b/NUnitLite-0.9.0/src/testdata/AsyncDummyFixture.cs
new file mode 100755
index 0000000..c1f8e5f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AsyncDummyFixture.cs
@@ -0,0 +1,92 @@
+#if NET_4_5
+using System.Threading.Tasks;
+using NUnit.Framework;
+using System;
+
+namespace NUnit.TestData
+{
+ public class AsyncDummyFixture
+ {
+ [Test]
+ public async void AsyncVoid()
+ {
+ await Task.Delay(0); // To avoid warning message
+ }
+
+ [Test]
+ public async Task AsyncTask()
+ {
+ await Task.Yield();
+ }
+
+ [Test]
+ public async Task<int> AsyncGenericTask()
+ {
+ return await Task.FromResult(1);
+ }
+
+ [Test]
+ public Task NonAsyncTask()
+ {
+ return Task.Delay(0);
+ }
+
+ [Test]
+ public Task<int> NonAsyncGenericTask()
+ {
+ return Task.FromResult(1);
+ }
+
+ [TestCase(4)]
+ public async void AsyncVoidTestCase(int x)
+ {
+ await Task.Delay(0);
+ }
+
+ [TestCase(ExpectedResult = 1)]
+ public async void AsyncVoidTestCaseWithExpectedResult()
+ {
+ await Task.Run(() => 1);
+ }
+
+ [TestCase(4)]
+ public async Task AsyncTaskTestCase(int x)
+ {
+ await Task.Delay(0);
+ }
+
+ [TestCase(ExpectedResult = 1)]
+ public async Task AsyncTaskTestCaseWithExpectedResult()
+ {
+ await Task.Run(() => 1);
+ }
+
+ [TestCase(4)]
+ public async Task<int> AsyncGenericTaskTestCase()
+ {
+ return await Task.Run(() => 1);
+ }
+
+ [TestCase(ExpectedResult = 1)]
+ public async Task<int> AsyncGenericTaskTestCaseWithExpectedResult()
+ {
+ return await Task.Run(() => 1);
+ }
+
+ [TestCase(ExpectedException = typeof(Exception))]
+ public async Task<int> AsyncGenericTaskTestCaseWithExpectedException()
+ {
+ return await Throw();
+ }
+
+ private async Task<int> Throw()
+ {
+ return await Task.Run(() =>
+ {
+ throw new InvalidOperationException();
+ return 1;
+ });
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/AsyncRealFixture.cs b/NUnitLite-0.9.0/src/testdata/AsyncRealFixture.cs
new file mode 100755
index 0000000..5a94b92
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AsyncRealFixture.cs
@@ -0,0 +1,369 @@
+#if NET_4_5
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+
+namespace NUnit.TestData
+{
+ public class AsyncRealFixture
+ {
+ [Test]
+ public async void AsyncVoidSuccess()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(1, result);
+ }
+
+ [Test]
+ public async void AsyncVoidFailure()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(2, result);
+ }
+
+ [Test]
+ public async void AsyncVoidError()
+ {
+ await ThrowException();
+
+ Assert.Fail("Should never get here");
+ }
+
+ [Test]
+ public async Task AsyncTaskSuccess()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(1, result);
+ }
+
+ [Test]
+ public async Task AsyncTaskFailure()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(2, result);
+ }
+
+ [Test]
+ public async Task AsyncTaskError()
+ {
+ await ThrowException();
+
+ Assert.Fail("Should never get here");
+ }
+
+ [Test] // Not Runnable
+ public async Task<int> AsyncTaskResultSuccess()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(1, result);
+
+ return result;
+ }
+
+ [Test] // Not Runnable
+ public async Task<int> AsyncTaskResultFailure()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(2, result);
+
+ return result;
+ }
+
+ [Test] // Not Runnable
+ public async Task<int> AsyncTaskResultError()
+ {
+ await ThrowException();
+
+ Assert.Fail("Should never get here");
+
+ return 0;
+ }
+
+ [TestCase(ExpectedResult = 1)]
+ public async Task<int> AsyncTaskResultCheckSuccess()
+ {
+ return await ReturnOne();
+ }
+
+ [TestCase(ExpectedResult = 2)]
+ public async Task<int> AsyncTaskResultCheckFailure()
+ {
+ return await ReturnOne();
+ }
+
+ [TestCase(ExpectedResult = 0)]
+ public async Task<int> AsyncTaskResultCheckError()
+ {
+ return await ThrowException();
+ }
+
+ [TestCase(ExpectedResult = null)]
+ public async Task<object> AsyncTaskResultCheckSuccessReturningNull()
+ {
+ return await Task.Run(() => (object)null);
+ }
+
+ [Test]
+ [ExpectedException(typeof(InvalidOperationException))]
+ public async void AsyncVoidExpectedException()
+ {
+ await ThrowException();
+ }
+
+ [Test]
+ [ExpectedException(typeof(InvalidOperationException))]
+ public async Task AsyncTaskExpectedException()
+ {
+ await ThrowException();
+ }
+
+ [Test] // Not Runnable
+ [ExpectedException(typeof(InvalidOperationException))]
+ public async Task<int> AsyncTaskResultExpectedException()
+ {
+ return await ThrowException();
+ }
+
+ [Test]
+ public async void AsyncVoidAssertSynchronizationContext()
+ {
+ await Task.Yield();
+ }
+
+ [Test]
+ public async void NestedAsyncVoidSuccess()
+ {
+ var result = await Task.Run(async () => await ReturnOne());
+
+ Assert.AreEqual(1, result);
+ }
+
+ [Test]
+ public async void NestedAsyncVoidFailure()
+ {
+ var result = await Task.Run(async () => await ReturnOne());
+
+ Assert.AreEqual(2, result);
+ }
+
+ [Test]
+ public async void NestedAsyncVoidError()
+ {
+ await Task.Run(async () => await ThrowException());
+
+ Assert.Fail("Should not get here");
+ }
+
+ [Test]
+ public async Task NestedAsyncTaskSuccess()
+ {
+ var result = await Task.Run(async () => await ReturnOne());
+
+ Assert.AreEqual(1, result);
+ }
+
+ [Test]
+ public async Task NestedAsyncTaskFailure()
+ {
+ var result = await Task.Run(async () => await ReturnOne());
+
+ Assert.AreEqual(2, result);
+ }
+
+ [Test]
+ public async Task NestedAsyncTaskError()
+ {
+ await Task.Run(async () => await ThrowException());
+
+ Assert.Fail("Should never get here");
+ }
+
+ [Test]
+ public async Task<int> NestedAsyncTaskResultSuccess()
+ {
+ var result = await Task.Run(async () => await ReturnOne());
+
+ Assert.AreEqual(1, result);
+
+ return result;
+ }
+
+ [Test]
+ public async Task<int> NestedAsyncTaskResultFailure()
+ {
+ var result = await Task.Run(async () => await ReturnOne());
+
+ Assert.AreEqual(2, result);
+
+ return result;
+ }
+
+ [Test]
+ public async Task<int> NestedAsyncTaskResultError()
+ {
+ var result = await Task.Run(async () => await ThrowException());
+
+ Assert.Fail("Should never get here");
+
+ return result;
+ }
+
+ [Test]
+ public async void AsyncVoidMultipleSuccess()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(await ReturnOne(), result);
+ }
+
+ [Test]//
+ public async void AsyncVoidMultipleFailure()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(await ReturnOne() + 1, result);
+ }
+
+ [Test]
+ public async void AsyncVoidMultipleError()
+ {
+ var result = await ReturnOne();
+ await ThrowException();
+
+ Assert.Fail("Should never get here");
+ }
+
+ [Test]
+ public async void AsyncTaskMultipleSuccess()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(await ReturnOne(), result);
+ }
+
+ [Test]
+ public async void AsyncTaskMultipleFailure()
+ {
+ var result = await ReturnOne();
+
+ Assert.AreEqual(await ReturnOne() + 1, result);
+ }
+
+ [Test]
+ public async void AsyncTaskMultipleError()
+ {
+ var result = await ReturnOne();
+ await ThrowException();
+
+ Assert.Fail("Should never get here");
+ }
+
+ [TestCase(1, 2)]
+ public async void AsyncVoidTestCaseWithParametersSuccess(int a, int b)
+ {
+ Assert.AreEqual(await ReturnOne(), b - a);
+ }
+
+ [Test]
+ public async void VoidCheckTestContextAcrossTasks()
+ {
+ var testName = await GetTestNameFromContext();
+
+ Assert.IsNotNull(testName);
+ Assert.AreEqual(testName, TestContext.CurrentContext.Test.Name);
+ }
+
+ [Test]
+ public async Task TaskCheckTestContextAcrossTasks()
+ {
+ var testName = await GetTestNameFromContext();
+
+ Assert.IsNotNull(testName);
+ Assert.AreEqual(testName, TestContext.CurrentContext.Test.Name);
+ }
+
+ [Test]
+ public async void VoidCheckTestContextWithinTestBody()
+ {
+ var testName = TestContext.CurrentContext.Test.Name;
+
+ await ReturnOne();
+
+ Assert.IsNotNull(testName);
+ Assert.AreEqual(testName, TestContext.CurrentContext.Test.Name);
+ }
+
+ [Test]
+ public async Task TaskCheckTestContextWithinTestBody()
+ {
+ var testName = TestContext.CurrentContext.Test.Name;
+
+ await ReturnOne();
+
+ Assert.IsNotNull(testName);
+ Assert.AreEqual(testName, TestContext.CurrentContext.Test.Name);
+ }
+
+ [Test]
+ [ExpectedException(typeof(InvalidOperationException))]
+ public async void VoidAsyncVoidChildCompletingEarlierThanTest()
+ {
+ AsyncVoidMethod();
+
+ await ThrowExceptionIn(TimeSpan.FromSeconds(1));
+ }
+
+ [Test]
+ [ExpectedException(typeof(InvalidOperationException))]
+ public async void VoidAsyncVoidChildThrowingImmediately()
+ {
+ AsyncVoidThrowException();
+
+ await Task.Run(() => Assert.Fail("Should never invoke this"));
+ }
+
+ private static async void AsyncVoidThrowException()
+ {
+ await Task.Run(() => { throw new InvalidOperationException(); });
+ }
+
+ private static async Task ThrowExceptionIn(TimeSpan delay)
+ {
+ await Task.Delay(delay);
+ throw new InvalidOperationException();
+ }
+
+ private static async void AsyncVoidMethod()
+ {
+ await Task.Yield();
+ }
+
+ private static Task<string> GetTestNameFromContext()
+ {
+ return Task.Run(() => TestContext.CurrentContext.Test.Name);
+ }
+
+ private static Task<int> ReturnOne()
+ {
+ return Task.Run(() => 1);
+ }
+
+ private static Task<int> ThrowException()
+ {
+ return Task.Run(() =>
+ {
+ throw new InvalidOperationException();
+ return 1;
+ });
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/testdata/AttributeInheritanceData.cs b/NUnitLite-0.9.0/src/testdata/AttributeInheritanceData.cs
new file mode 100755
index 0000000..1d6cb15
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/AttributeInheritanceData.cs
@@ -0,0 +1,60 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.AttributeInheritanceData
+{
+ // Sample Test from a post by Scott Bellware
+
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+ class ConcernAttribute : TestFixtureAttribute
+ {
+ private Type typeOfConcern;
+
+ public ConcernAttribute( Type typeOfConcern )
+ {
+ this.typeOfConcern = typeOfConcern;
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+ class SpecAttribute : TestAttribute
+ {
+ }
+
+ /// <summary>
+ /// Summary description for AttributeInheritance.
+ /// </summary>
+ [Concern(typeof(ClassUnderTest))]
+ public class When_collecting_test_fixtures
+ {
+ [Spec]
+ public void should_include_classes_with_an_attribute_derived_from_TestFixtureAttribute()
+ {
+ }
+ }
+
+ class ClassUnderTest { }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/CategoryAttributeData.cs b/NUnitLite-0.9.0/src/testdata/CategoryAttributeData.cs
new file mode 100755
index 0000000..a70c093
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/CategoryAttributeData.cs
@@ -0,0 +1,61 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.CategoryAttributeData
+{
+ [TestFixture, InheritableCategory("MyCategory")]
+ public abstract class AbstractBase { }
+
+ [TestFixture, Category( "DataBase" )]
+ public class FixtureWithCategories : AbstractBase
+ {
+ [Test, Category("Long")]
+ public void Test1() { }
+
+ [Test, Critical]
+ public void Test2() { }
+
+ [Test, Category("Top")]
+ [TestCaseSource("Test3Data")]
+ public void Test3(int x) { }
+
+ [Test, Category("A-B")]
+ public void Test4() { }
+
+ internal TestCaseData[] Test3Data = new TestCaseData[] {
+ new TestCaseData(5).SetCategory("Bottom")
+ };
+ }
+
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
+ public class CriticalAttribute : CategoryAttribute { }
+
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
+ public class InheritableCategoryAttribute : CategoryAttribute
+ {
+ public InheritableCategoryAttribute(string name) : base(name) { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/CultureAttributeData.cs b/NUnitLite-0.9.0/src/testdata/CultureAttributeData.cs
new file mode 100755
index 0000000..29956b3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/CultureAttributeData.cs
@@ -0,0 +1,57 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.CultureAttributeData
+{
+ [TestFixture, Culture( "en,fr,de" )]
+ public class FixtureWithCultureAttribute
+ {
+ [Test, Culture("en,de")]
+ public void EnglishAndGermanTest() { }
+
+ [Test, Culture("fr")]
+ public void FrenchTest() { }
+
+ [Test, Culture("fr-CA")]
+ public void FrenchCanadaTest() { }
+ }
+
+#if !NETCF
+ [TestFixture, SetCulture("xx-XX")]
+ public class FixtureWithInvalidSetCultureAttribute
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ [TestFixture]
+ public class FixtureWithInvalidSetCultureAttributeOnTest
+ {
+ [Test, SetCulture("xx-XX")]
+ public void InvalidCultureSet() { }
+ }
+#endif
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/DatapointFixture.cs b/NUnitLite-0.9.0/src/testdata/DatapointFixture.cs
new file mode 100755
index 0000000..cf631d3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/DatapointFixture.cs
@@ -0,0 +1,119 @@
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework;
+
+namespace NUnit.TestData.DatapointFixture
+{
+ public abstract class SquareRootTest
+ {
+ [Theory]
+ public void SqrtTimesItselfGivesOriginal(double num)
+ {
+ Assume.That(num >= 0.0 && num < double.MaxValue);
+
+ double sqrt = Math.Sqrt(num);
+
+ Assert.That(sqrt >= 0.0);
+ Assert.That(sqrt * sqrt, Is.EqualTo(num).Within(0.000001));
+ }
+ }
+
+ public class SquareRootTest_Field_Double : SquareRootTest
+ {
+ [Datapoint]
+ public double zero = 0;
+
+ [Datapoint]
+ public double positive = 1;
+
+ [Datapoint]
+ public double negative = -1;
+
+ [Datapoint]
+ public double max = double.MaxValue;
+
+ [Datapoint]
+ public double infinity = double.PositiveInfinity;
+ }
+
+ public class SquareRootTest_Field_ArrayOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public double[] values = new double[] { 0.0, 1.0, -1.0, double.MaxValue, double.PositiveInfinity };
+ }
+
+ public class SquareRootTest_Property_ArrayOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public double[] Values
+ {
+ get { return new double[] { 0.0, 1.0, -1.0, double.MaxValue, double.PositiveInfinity }; }
+ }
+ }
+
+ public class SquareRootTest_Method_ArrayOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public double[] GetValues()
+ {
+ return new double[] { 0.0, 1.0, -1.0, double.MaxValue, double.PositiveInfinity };
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public class SquareRootTest_Field_IEnumerableOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public IEnumerable<double> values = new List<double>( new double[] { 0.0, 1.0, -1.0, double.MaxValue, double.PositiveInfinity } );
+ }
+
+ public class SquareRootTest_Property_IEnumerableOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public IEnumerable<double> Values
+ {
+ get
+ {
+ List<double> list = new List<double>();
+ list.Add(0.0);
+ list.Add(1.0);
+ list.Add(-1.0);
+ list.Add(double.MaxValue);
+ list.Add(double.PositiveInfinity);
+ return list;
+ }
+ }
+ }
+
+ public class SquareRootTest_Method_IEnumerableOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public IEnumerable<double> GetValues()
+ {
+ List<double> list = new List<double>();
+ list.Add(0.0);
+ list.Add(1.0);
+ list.Add(-1.0);
+ list.Add(double.MaxValue);
+ list.Add(double.PositiveInfinity);
+ return list;
+ }
+ }
+
+ public class SquareRootTest_Iterator_IEnumerableOfDouble : SquareRootTest
+ {
+ [Datapoints]
+ public IEnumerable<double> GetValues()
+ {
+ yield return 0.0;
+
+ yield return 1.0;
+ yield return -1.0;
+ yield return double.MaxValue;
+ yield return double.PositiveInfinity;
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/testdata/DescriptionFixture.cs b/NUnitLite-0.9.0/src/testdata/DescriptionFixture.cs
new file mode 100755
index 0000000..079a10e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/DescriptionFixture.cs
@@ -0,0 +1,50 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.DescriptionFixture
+{
+ [TestFixture(Description = "Fixture Description")]
+ public class DescriptionFixture
+ {
+ [Test(Description = "Test Description")]
+ public void Method()
+ {}
+
+ [Test]
+ public void NoDescriptionMethod()
+ {}
+
+ [Test]
+ [Description("Separate Description")]
+ public void SeparateDescriptionMethod()
+ { }
+
+ [Test, Description("method description")]
+ [TestCase(5, Description = "case description")]
+ public void TestCaseWithDescription(int x)
+ { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/ExpectedExceptionData.cs b/NUnitLite-0.9.0/src/testdata/ExpectedExceptionData.cs
new file mode 100755
index 0000000..6b92aad
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/ExpectedExceptionData.cs
@@ -0,0 +1,279 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.ExpectedExceptionData
+{
+ [TestFixture]
+ public class BaseException
+ {
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void BaseExceptionTest()
+ {
+ throw new Exception();
+ }
+ }
+
+ [TestFixture]
+ public class DerivedException
+ {
+ [Test]
+ [ExpectedException(typeof(Exception))]
+ public void DerivedExceptionTest()
+ {
+ throw new ArgumentException();
+ }
+ }
+
+ [TestFixture]
+ public class MismatchedException
+ {
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void MismatchedExceptionType()
+ {
+ throw new ArgumentOutOfRangeException();
+ }
+
+ [Test]
+ [ExpectedException(ExpectedException=typeof(ArgumentException))]
+ public void MismatchedExceptionTypeAsNamedParameter()
+ {
+ throw new ArgumentOutOfRangeException();
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException), UserMessage="custom message")]
+ public void MismatchedExceptionTypeWithUserMessage()
+ {
+ throw new ArgumentOutOfRangeException();
+ }
+
+ [Test]
+ [ExpectedException("System.ArgumentException")]
+ public void MismatchedExceptionName()
+ {
+ throw new ArgumentOutOfRangeException();
+ }
+
+ [Test]
+ [ExpectedException("System.ArgumentException", UserMessage="custom message")]
+ public void MismatchedExceptionNameWithUserMessage()
+ {
+ throw new ArgumentOutOfRangeException();
+ }
+ }
+
+ [TestFixture]
+ public class SetUpExceptionTests
+ {
+ [SetUp]
+ public void Init()
+ {
+ throw new ArgumentException("SetUp Exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void Test()
+ {
+ }
+ }
+
+ [TestFixture]
+ public class TearDownExceptionTests
+ {
+ [TearDown]
+ public void CleanUp()
+ {
+ throw new ArgumentException("TearDown Exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void Test()
+ {}
+ }
+
+ [TestFixture]
+ public class TestThrowsExceptionFixture
+ {
+ [Test]
+ public void TestThrow()
+ {
+ throw new Exception();
+ }
+ }
+
+ [TestFixture]
+ public class TestDoesNotThrowExceptionFixture
+ {
+ [Test, ExpectedException("System.ArgumentException")]
+ public void TestDoesNotThrowExceptionName()
+ {
+ }
+
+ [Test, ExpectedException("System.ArgumentException", UserMessage="custom message")]
+ public void TestDoesNotThrowExceptionNameWithUserMessage()
+ {
+ }
+
+ [Test, ExpectedException( typeof( System.ArgumentException ) )]
+ public void TestDoesNotThrowExceptionType()
+ {
+ }
+
+ [Test, ExpectedException( typeof( System.ArgumentException ), UserMessage="custom message" )]
+ public void TestDoesNotThrowExceptionTypeWithUserMessage()
+ {
+ }
+
+ [Test, ExpectedException]
+ public void TestDoesNotThrowUnspecifiedException()
+ {
+ }
+
+ [Test, ExpectedException( UserMessage="custom message" )]
+ public void TestDoesNotThrowUnspecifiedExceptionWithUserMessage()
+ {
+ }
+ }
+
+ [TestFixture]
+ public class TestThrowsExceptionWithRightMessage
+ {
+ [Test]
+ [ExpectedException(typeof(Exception), ExpectedMessage="the message")]
+ public void TestThrow()
+ {
+ throw new Exception("the message");
+ }
+ }
+
+ [TestFixture]
+ public class TestThrowsArgumentOutOfRangeException
+ {
+ [Test]
+ [ExpectedException(typeof(ArgumentOutOfRangeException)) ]
+ public void TestThrow()
+ {
+#if NETCF || SILVERLIGHT
+ throw new ArgumentOutOfRangeException("param", "the message");
+#else
+ throw new ArgumentOutOfRangeException("param", "actual value", "the message");
+#endif
+ }
+ }
+
+ [TestFixture]
+ public class TestThrowsExceptionWithWrongMessage
+ {
+ [Test]
+ [ExpectedException(typeof(Exception), ExpectedMessage="not the message")]
+ public void TestThrow()
+ {
+ throw new Exception("the message");
+ }
+
+ [Test]
+ [ExpectedException( typeof(Exception), ExpectedMessage="not the message", UserMessage="custom message" )]
+ public void TestThrowWithUserMessage()
+ {
+ throw new Exception("the message");
+ }
+ }
+
+ [TestFixture]
+ public class TestAssertsBeforeThrowingException
+ {
+ [Test]
+ [ExpectedException(typeof(Exception))]
+ public void TestAssertFail()
+ {
+ Assert.Fail( "private message" );
+ }
+ }
+
+ public class ExceptionHandlerCalledClass : IExpectException
+ {
+ public bool HandlerCalled = false;
+ public bool AlternateHandlerCalled = false;
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void ThrowsArgumentException()
+ {
+ throw new ArgumentException();
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void ThrowsCustomException()
+ {
+ throw new CustomException();
+ }
+
+ class CustomException : Exception { }
+
+ [Test, ExpectedException(typeof(ArgumentException), Handler = "AlternateExceptionHandler")]
+ public void ThrowsArgumentException_AlternateHandler()
+ {
+ throw new ArgumentException();
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException), Handler = "AlternateExceptionHandler")]
+ public void ThrowsCustomException_AlternateHandler()
+ {
+ throw new CustomException();
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void ThrowsSystemException()
+ {
+ throw new Exception();
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException), Handler = "AlternateExceptionHandler")]
+ public void ThrowsSystemException_AlternateHandler()
+ {
+ throw new Exception();
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException), Handler = "DeliberatelyMissingHandler")]
+ public void MethodWithBadHandler()
+ {
+ throw new ArgumentException();
+ }
+
+ public void HandleException(Exception ex)
+ {
+ HandlerCalled = true;
+ }
+
+ public void AlternateExceptionHandler(Exception ex)
+ {
+ AlternateHandlerCalled = true;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/FixtureSetUpTearDownData.cs b/NUnitLite-0.9.0/src/testdata/FixtureSetUpTearDownData.cs
new file mode 100755
index 0000000..2b0828e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/FixtureSetUpTearDownData.cs
@@ -0,0 +1,360 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.FixtureSetUpTearDownData
+{
+ [TestFixture]
+ public class SetUpAndTearDownFixture
+ {
+ public int setUpCount = 0;
+ public int tearDownCount = 0;
+
+ [TestFixtureSetUp]
+ public virtual void Init()
+ {
+ setUpCount++;
+ }
+
+ [TestFixtureTearDown]
+ public virtual void Destroy()
+ {
+ tearDownCount++;
+ }
+
+ [Test]
+ public void Success(){}
+
+ [Test]
+ public void EvenMoreSuccess(){}
+ }
+
+ [TestFixture, Explicit]
+ public class ExplicitSetUpAndTearDownFixture
+ {
+ public int setUpCount = 0;
+ public int tearDownCount = 0;
+
+ [TestFixtureSetUp]
+ public virtual void Init()
+ {
+ setUpCount++;
+ }
+
+ [TestFixtureTearDown]
+ public virtual void Destroy()
+ {
+ tearDownCount++;
+ }
+
+ [Test]
+ public void Success() { }
+
+ [Test]
+ public void EvenMoreSuccess() { }
+ }
+
+ [TestFixture]
+ public class InheritSetUpAndTearDown : SetUpAndTearDownFixture
+ {
+ [Test]
+ public void AnotherTest(){}
+
+ [Test]
+ public void YetAnotherTest(){}
+ }
+
+ [TestFixture]
+ public class DefineInheritSetUpAndTearDown : SetUpAndTearDownFixture
+ {
+ public int derivedSetUpCount;
+ public int derivedTearDownCount;
+
+ [TestFixtureSetUp]
+ public override void Init()
+ {
+ derivedSetUpCount++;
+ }
+
+ [TestFixtureTearDown]
+ public override void Destroy()
+ {
+ derivedTearDownCount++;
+ }
+
+ [Test]
+ public void AnotherTest() { }
+
+ [Test]
+ public void YetAnotherTest() { }
+ }
+
+ [TestFixture]
+ public class DerivedSetUpAndTearDownFixture : SetUpAndTearDownFixture
+ {
+ public int derivedSetUpCount;
+ public int derivedTearDownCount;
+
+ public bool baseSetUpCalledFirst;
+ public bool baseTearDownCalledLast;
+
+ [TestFixtureSetUp]
+ public void Init2()
+ {
+ derivedSetUpCount++;
+ baseSetUpCalledFirst = this.setUpCount > 0;
+ }
+
+ [TestFixtureTearDown]
+ public void Destroy2()
+ {
+ derivedTearDownCount++;
+ baseTearDownCalledLast = this.tearDownCount == 0;
+ }
+
+ [Test]
+ public void AnotherTest() { }
+
+ [Test]
+ public void YetAnotherTest() { }
+ }
+
+ [TestFixture]
+ public class StaticSetUpAndTearDownFixture
+ {
+ public static int setUpCount = 0;
+ public static int tearDownCount = 0;
+
+ [TestFixtureSetUp]
+ public static void Init()
+ {
+ setUpCount++;
+ }
+
+ [TestFixtureTearDown]
+ public static void Destroy()
+ {
+ tearDownCount++;
+ }
+ }
+
+ [TestFixture]
+ public class DerivedStaticSetUpAndTearDownFixture : StaticSetUpAndTearDownFixture
+ {
+ public static int derivedSetUpCount;
+ public static int derivedTearDownCount;
+
+ public static bool baseSetUpCalledFirst;
+ public static bool baseTearDownCalledLast;
+
+
+ [TestFixtureSetUp]
+ public static void Init2()
+ {
+ derivedSetUpCount++;
+ baseSetUpCalledFirst = setUpCount > 0;
+ }
+
+ [TestFixtureTearDown]
+ public static void Destroy2()
+ {
+ derivedTearDownCount++;
+ baseTearDownCalledLast = tearDownCount == 0;
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestFixture]
+ public static class StaticClassSetUpAndTearDownFixture
+ {
+ public static int setUpCount = 0;
+ public static int tearDownCount = 0;
+
+ [TestFixtureSetUp]
+ public static void Init()
+ {
+ setUpCount++;
+ }
+
+ [TestFixtureTearDown]
+ public static void Destroy()
+ {
+ tearDownCount++;
+ }
+ }
+#endif
+
+ [TestFixture]
+ public class MisbehavingFixture
+ {
+ public bool blowUpInSetUp = false;
+ public bool blowUpInTearDown = false;
+
+ public int setUpCount = 0;
+ public int tearDownCount = 0;
+
+ public void Reinitialize()
+ {
+ setUpCount = 0;
+ tearDownCount = 0;
+
+ blowUpInSetUp = false;
+ blowUpInTearDown = false;
+ }
+
+ [TestFixtureSetUp]
+ public void BlowUpInSetUp()
+ {
+ setUpCount++;
+ if (blowUpInSetUp)
+ throw new Exception("This was thrown from fixture setup");
+ }
+
+ [TestFixtureTearDown]
+ public void BlowUpInTearDown()
+ {
+ tearDownCount++;
+ if ( blowUpInTearDown )
+ throw new Exception("This was thrown from fixture teardown");
+ }
+
+ [Test]
+ public void nothingToTest()
+ {
+ }
+ }
+
+ [TestFixture]
+ public class ExceptionInConstructor
+ {
+ public ExceptionInConstructor()
+ {
+ throw new Exception( "This was thrown in constructor" );
+ }
+
+ [Test]
+ public void nothingToTest()
+ {
+ }
+ }
+
+ [TestFixture]
+ public class IgnoreInFixtureSetUp
+ {
+ [TestFixtureSetUp]
+ public void SetUpCallsIgnore()
+ {
+ Assert.Ignore( "TestFixtureSetUp called Ignore" );
+ }
+
+ [Test]
+ public void nothingToTest()
+ {
+ }
+ }
+
+ [TestFixture]
+ public class SetUpAndTearDownWithTestInName
+ {
+ public int setUpCount = 0;
+ public int tearDownCount = 0;
+
+ [TestFixtureSetUp]
+ public virtual void TestFixtureSetUp()
+ {
+ setUpCount++;
+ }
+
+ [TestFixtureTearDown]
+ public virtual void TestFixtureTearDown()
+ {
+ tearDownCount++;
+ }
+
+ [Test]
+ public void Success(){}
+
+ [Test]
+ public void EvenMoreSuccess(){}
+ }
+
+ [TestFixture, Ignore( "Do Not Run This" )]
+ public class IgnoredFixture
+ {
+ public bool setupCalled = false;
+ public bool teardownCalled = false;
+
+ [TestFixtureSetUp]
+ public virtual void ShouldNotRun()
+ {
+ setupCalled = true;
+ }
+
+ [TestFixtureTearDown]
+ public virtual void NeitherShouldThis()
+ {
+ teardownCalled = true;
+ }
+
+ [Test]
+ public void Success(){}
+
+ [Test]
+ public void EvenMoreSuccess(){}
+ }
+
+ [TestFixture]
+ public class FixtureWithNoTests
+ {
+ public bool setupCalled = false;
+ public bool teardownCalled = false;
+
+ [TestFixtureSetUp]
+ public virtual void Init()
+ {
+ setupCalled = true;
+ }
+
+ [TestFixtureTearDown]
+ public virtual void Destroy()
+ {
+ teardownCalled = true;
+ }
+ }
+
+ [TestFixture]
+ public class DisposableFixture : IDisposable
+ {
+ public bool disposeCalled = false;
+
+ [Test]
+ public void OneTest() { }
+
+ public void Dispose()
+ {
+ disposeCalled = true;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/MaxTimeFixture.cs b/NUnitLite-0.9.0/src/testdata/MaxTimeFixture.cs
new file mode 100755
index 0000000..4c01914
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/MaxTimeFixture.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData
+{
+ [TestFixture]
+ public class MaxTimeFixture
+ {
+ [Test, MaxTime(1)]
+ public void MaxTimeExceeded()
+ {
+#if NETCF
+ long endTime = DateTime.Now.Ticks + TimeSpan.TicksPerMillisecond * 20;
+ while (endTime > DateTime.Now.Ticks) ;
+#else
+ System.Threading.Thread.Sleep(20);
+#endif
+ }
+ }
+
+ [TestFixture]
+ public class MaxTimeFixtureWithFailure
+ {
+ [Test, MaxTime(1)]
+ public void MaxTimeExceeded()
+ {
+ System.Threading.Thread.Sleep(20);
+ Assert.Fail("Intentional Failure");
+ }
+ }
+
+ [TestFixture]
+ public class MaxTimeFixtureWithError
+ {
+ [Test, MaxTime(1)]
+ public void MaxTimeExceeded()
+ {
+ System.Threading.Thread.Sleep(20);
+ throw new Exception("Exception message");
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/ParameterizedTestFixture.cs b/NUnitLite-0.9.0/src/testdata/ParameterizedTestFixture.cs
new file mode 100755
index 0000000..62b54a1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/ParameterizedTestFixture.cs
@@ -0,0 +1,53 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData
+{
+ [TestFixture(1)]
+ [TestFixture(2)]
+ public class ParameterizedTestFixture
+ {
+ [Test]
+ public void MethodWithoutParams()
+ {
+ }
+
+ [TestCase(10,20)]
+ public void MethodWithParams(int x, int y)
+ {
+ }
+ }
+
+ [TestFixture(Category = "XYZ")]
+ public class TestFixtureWithSingleCategory
+ {
+ }
+
+ [TestFixture(Category = "X,Y,Z")]
+ public class TestFixtureWithMultipleCategories
+ {
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/PropertyAttributeTests.cs b/NUnitLite-0.9.0/src/testdata/PropertyAttributeTests.cs
new file mode 100755
index 0000000..84c10aa
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/PropertyAttributeTests.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.PropertyAttributeTests
+{
+ [TestFixture, Property("ClassUnderTest","SomeClass" )]
+ public class FixtureWithProperties
+ {
+ [Test, Property("user","Charlie")]
+ public void Test1() { }
+
+ [Test, Property("X",10.0), Property("Y",17.0)]
+ public void Test2() { }
+
+ [Test, Priority(5)]
+ public void Test3() { }
+ }
+
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+ public class PriorityAttribute : PropertyAttribute
+ {
+ public PriorityAttribute( int level ) : base( level ) { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/RepeatedTestFixture.cs b/NUnitLite-0.9.0/src/testdata/RepeatedTestFixture.cs
new file mode 100755
index 0000000..0e421a1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/RepeatedTestFixture.cs
@@ -0,0 +1,135 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+#if false
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.RepeatedTestFixture
+{
+ [TestFixture]
+ public class RepeatingTestsBase
+ {
+ private int fixtureSetupCount;
+ private int fixtureTeardownCount;
+ private int setupCount;
+ private int teardownCount;
+ protected int count;
+
+ [TestFixtureSetUp]
+ public void FixtureSetUp()
+ {
+ fixtureSetupCount++;
+ }
+
+ [TestFixtureTearDown]
+ public void FixtureTearDown()
+ {
+ fixtureTeardownCount++;
+ }
+
+ [SetUp]
+ public void SetUp()
+ {
+ setupCount++;
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ teardownCount++;
+ }
+
+ public int FixtureSetupCount
+ {
+ get { return fixtureSetupCount; }
+ }
+ public int FixtureTeardownCount
+ {
+ get { return fixtureTeardownCount; }
+ }
+ public int SetupCount
+ {
+ get { return setupCount; }
+ }
+ public int TeardownCount
+ {
+ get { return teardownCount; }
+ }
+ public int Count
+ {
+ get { return count; }
+ }
+ }
+
+ public class RepeatSuccessFixture : RepeatingTestsBase
+ {
+ [Test, Repeat(3)]
+ public void RepeatSuccess()
+ {
+ count++;
+ Assert.IsTrue (true);
+ }
+ }
+
+ public class RepeatFailOnFirstFixture : RepeatingTestsBase
+ {
+ [Test, Repeat(3)]
+ public void RepeatFailOnFirst()
+ {
+ count++;
+ Assert.IsFalse (true);
+ }
+ }
+
+ public class RepeatFailOnThirdFixture : RepeatingTestsBase
+ {
+ [Test, Repeat(3)]
+ public void RepeatFailOnThird()
+ {
+ count++;
+
+ if (count == 3)
+ Assert.IsTrue (false);
+ }
+ }
+
+ public class RepeatedTestWithIgnore : RepeatingTestsBase
+ {
+ [Test, Repeat(3), Ignore("Ignore this test")]
+ public void RepeatShouldIgnore()
+ {
+ Assert.Fail("Ignored test executed");
+ }
+ }
+
+ public class RepeatedTestWithCategory : RepeatingTestsBase
+ {
+ [Test, Repeat(3), Category("SAMPLE")]
+ public void TestWithCategory()
+ {
+ count++;
+ Assert.IsTrue(true);
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/SetUpData.cs b/NUnitLite-0.9.0/src/testdata/SetUpData.cs
new file mode 100755
index 0000000..7376cea
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/SetUpData.cs
@@ -0,0 +1,192 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.SetUpData
+{
+ [TestFixture]
+ public class SetUpAndTearDownFixture
+ {
+ public bool wasSetUpCalled;
+ public bool wasTearDownCalled;
+
+ [SetUp]
+ public virtual void Init()
+ {
+ wasSetUpCalled = true;
+ }
+
+ [TearDown]
+ public virtual void Destroy()
+ {
+ wasTearDownCalled = true;
+ }
+
+ [Test]
+ public void Success() { }
+ }
+
+
+ [TestFixture]
+ public class SetUpAndTearDownCounterFixture
+ {
+ public int setUpCounter;
+ public int tearDownCounter;
+
+ [SetUp]
+ public virtual void Init()
+ {
+ setUpCounter++;
+ }
+
+ [TearDown]
+ public virtual void Destroy()
+ {
+ tearDownCounter++;
+ }
+
+ [Test]
+ public void TestOne(){}
+
+ [Test]
+ public void TestTwo(){}
+
+ [Test]
+ public void TestThree(){}
+ }
+
+ [TestFixture]
+ public class InheritSetUpAndTearDown : SetUpAndTearDownFixture
+ {
+ [Test]
+ public void AnotherTest(){}
+ }
+
+ [TestFixture]
+ public class DefineInheritSetUpAndTearDown : SetUpAndTearDownFixture
+ {
+ public bool derivedSetUpCalled;
+ public bool derivedTearDownCalled;
+
+ [SetUp]
+ public override void Init()
+ {
+ derivedSetUpCalled = true;
+ }
+
+ [TearDown]
+ public override void Destroy()
+ {
+ derivedTearDownCalled = true;
+ }
+
+ [Test]
+ public void AnotherTest(){}
+ }
+
+ public class MultipleSetUpTearDownFixture
+ {
+ public bool wasSetUp1Called;
+ public bool wasSetUp2Called;
+ public bool wasSetUp3Called;
+ public bool wasTearDown1Called;
+ public bool wasTearDown2Called;
+
+ [SetUp]
+ public virtual void Init1()
+ {
+ wasSetUp1Called = true;
+ }
+ [SetUp]
+ public virtual void Init2()
+ {
+ wasSetUp2Called = true;
+ }
+ [SetUp]
+ public virtual void Init3()
+ {
+ wasSetUp3Called = true;
+ }
+
+ [TearDown]
+ public virtual void TearDown1()
+ {
+ wasTearDown1Called = true;
+ }
+ [TearDown]
+ public virtual void TearDown2()
+ {
+ wasTearDown2Called = true;
+ }
+
+ [Test]
+ public void Success() { }
+ }
+
+ [TestFixture]
+ public class DerivedClassWithSeparateSetUp : SetUpAndTearDownFixture
+ {
+ public bool wasDerivedSetUpCalled;
+ public bool wasDerivedTearDownCalled;
+ public bool wasBaseSetUpCalledFirst;
+ public bool wasBaseTearDownCalledLast;
+
+ [SetUp]
+ public void DerivedInit()
+ {
+ wasDerivedSetUpCalled = true;
+ wasBaseSetUpCalledFirst = wasSetUpCalled;
+ }
+
+ [TearDown]
+ public void DerivedTearDown()
+ {
+ wasDerivedTearDownCalled = true;
+ wasBaseTearDownCalledLast = !wasTearDownCalled;
+ }
+ }
+
+ [TestFixture]
+ public class SetupAndTearDownExceptionFixture
+ {
+ public Exception setupException;
+ public Exception tearDownException;
+
+ [SetUp]
+ public void SetUp()
+ {
+ if (setupException != null) throw setupException;
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ if (tearDownException!=null) throw tearDownException;
+ }
+
+ [Test]
+ public void TestOne() {}
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TestCaseAttributeFixture.cs b/NUnitLite-0.9.0/src/testdata/TestCaseAttributeFixture.cs
new file mode 100755
index 0000000..cd19df6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TestCaseAttributeFixture.cs
@@ -0,0 +1,102 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.TestCaseAttributeFixture
+{
+ [TestFixture]
+ public class TestCaseAttributeFixture
+ {
+ [TestCase("12-Octobar-1942")]
+ public void MethodHasInvalidDateFormat(DateTime dt)
+ {}
+
+ [TestCase(2,3,4,Description="My Description")]
+ public void MethodHasDescriptionSpecified(int x, int y, int z)
+ {}
+
+ [TestCase(2,3,4,TestName="XYZ")]
+ public void MethodHasTestNameSpecified(int x, int y, int z)
+ {}
+
+ [TestCase(2, 3, 4, Category = "XYZ")]
+ public void MethodHasSingleCategory(int x, int y, int z)
+ { }
+
+ [TestCase(2, 3, 4, Category = "X,Y,Z")]
+ public void MethodHasMultipleCategories(int x, int y, int z)
+ { }
+
+ [TestCase(2, 2000000, ExpectedResult=4)]
+ public int MethodCausesConversionOverflow(short x, short y)
+ {
+ return x + y;
+ }
+
+ [TestCase(2, 3, 4, ExpectedException = typeof(ArgumentNullException))]
+ public void MethodThrowsExpectedException(int x, int y, int z)
+ {
+ throw new ArgumentNullException();
+ }
+
+ [TestCase(2, 3, 4, ExpectedException = typeof(ArgumentNullException))]
+ public void MethodThrowsWrongException(int x, int y, int z)
+ {
+ throw new ArgumentException();
+ }
+
+ [TestCase(2, 3, 4, ExpectedException = typeof(ArgumentNullException))]
+ public void MethodThrowsNoException(int x, int y, int z)
+ {
+ }
+
+ [TestCase(2, 3, 4, ExpectedException = typeof(Exception),
+ ExpectedMessage="Test Exception")]
+ public void MethodThrowsExpectedExceptionWithWrongMessage(int x, int y, int z)
+ {
+ throw new Exception("Wrong Test Exception");
+ }
+
+ [TestCase(2, 3, 4, ExpectedException = typeof(ArgumentNullException))]
+ public void MethodCallsIgnore(int x, int y, int z)
+ {
+ Assert.Ignore("Ignore this");
+ }
+
+ [TestCase(1)]
+ [TestCase(2, Ignore = true)]
+ [TestCase(3, IgnoreReason = "Don't Run Me!")]
+ public void MethodWithIgnoredTestCases(int num)
+ {
+ }
+
+ [TestCase(1)]
+ [TestCase(2, Explicit = true)]
+ [TestCase(3, Explicit = true, Reason = "Connection failing")]
+ public void MethodWithExplicitTestCases(int num)
+ {
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TestCaseSourceAttributeFixture.cs b/NUnitLite-0.9.0/src/testdata/TestCaseSourceAttributeFixture.cs
new file mode 100755
index 0000000..25b30a4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TestCaseSourceAttributeFixture.cs
@@ -0,0 +1,111 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework;
+
+namespace NUnit.TestData.TestCaseSourceAttributeFixture
+{
+ [TestFixture]
+ public class TestCaseSourceAttributeFixture
+ {
+ [TestCaseSource("source")]
+ public void MethodThrowsExpectedException(int x, int y, int z)
+ {
+ throw new ArgumentNullException();
+ }
+
+ [TestCaseSource("source")]
+ public void MethodThrowsWrongException(int x, int y, int z)
+ {
+ throw new ArgumentException();
+ }
+
+ [TestCaseSource("source")]
+ public void MethodThrowsNoException(int x, int y, int z)
+ {
+ }
+
+ [TestCaseSource("source")]
+ public void MethodCallsIgnore(int x, int y, int z)
+ {
+ Assert.Ignore("Ignore this");
+ }
+
+ internal static object[] source = new object[] {
+ new TestCaseData( 2, 3, 4 ).Throws(typeof(ArgumentNullException)) };
+
+ [TestCaseSource("ignored_source")]
+ public void MethodWithIgnoredTestCases(int num)
+ {
+ }
+
+ [TestCaseSource("explicit_source")]
+ public void MethodWithExplicitTestCases(int num)
+ {
+ }
+
+ internal static IEnumerable ignored_source
+ {
+ get
+ {
+ return new object[] {
+ new TestCaseData(1),
+ new TestCaseData(2).Ignore(),
+ new TestCaseData(3).Ignore("Don't Run Me!")
+ };
+ }
+ }
+
+ internal static IEnumerable explicit_source
+ {
+ get
+ {
+ return new object[] {
+ new TestCaseData(1),
+ new TestCaseData(2).Explicit(),
+ new TestCaseData(3).Explicit("Connection failing")
+ };
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestCaseSource("exception_source")]
+ public void MethodWithSourceThrowingException(string lhs, string rhs)
+ {
+ }
+
+ internal static IEnumerable exception_source
+ {
+ get
+ {
+ yield return new TestCaseData("a", "a");
+ yield return new TestCaseData("b", "b");
+
+ throw new System.Exception("my message");
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TestContextData.cs b/NUnitLite-0.9.0/src/testdata/TestContextData.cs
new file mode 100755
index 0000000..b627cd5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TestContextData.cs
@@ -0,0 +1,44 @@
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.TestContextData
+{
+ [TestFixture]
+ public class TestStateRecordingFixture
+ {
+ public string stateList;
+
+ public bool testFailure;
+ public bool testInconclusive;
+ public bool setUpFailure;
+ public bool setUpIgnore;
+
+ [SetUp]
+ public void SetUp()
+ {
+ stateList = TestContext.CurrentContext.Result.Outcome + "=>";
+
+ if (setUpFailure)
+ Assert.Fail("Failure in SetUp");
+ if (setUpIgnore)
+ Assert.Ignore("Ignored in SetUp");
+ }
+
+ [Test]
+ public void TheTest()
+ {
+ stateList += TestContext.CurrentContext.Result.Outcome;
+
+ if (testFailure)
+ Assert.Fail("Deliberate failure");
+ if (testInconclusive)
+ Assert.Inconclusive("Inconclusive test");
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ stateList += "=>" + TestContext.CurrentContext.Result.Outcome;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TestFixtureData.cs b/NUnitLite-0.9.0/src/testdata/TestFixtureData.cs
new file mode 100755
index 0000000..16aa54a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TestFixtureData.cs
@@ -0,0 +1,447 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+#if !NETCF
+using System.Security.Principal;
+#endif
+
+namespace NUnit.TestData.TestFixtureData
+{
+ /// <summary>
+ /// Classes used for testing NUnit
+ /// </summary>
+
+ [TestFixture]
+ public class NoDefaultCtorFixture
+ {
+ public NoDefaultCtorFixture(int index) { }
+
+ [Test]
+ public void OneTest() { }
+ }
+
+ [TestFixture(7,3)]
+ public class FixtureWithArgsSupplied
+ {
+ public FixtureWithArgsSupplied(int x, int y) { }
+
+ [Test]
+ public void OneTest() { }
+ }
+
+ [TestFixture]
+ public class BadCtorFixture
+ {
+ BadCtorFixture()
+ {
+ throw new Exception();
+ }
+
+ [Test] public void OneTest()
+ {}
+ }
+
+ [TestFixture]
+ public class FixtureWithTestFixtureAttribute
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ public class FixtureWithoutTestFixtureAttributeContainingTest
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ public class FixtureWithoutTestFixtureAttributeContainingTestCase
+ {
+ [TestCase(42)]
+ public void SomeTest(int x) { }
+ }
+
+ public class FixtureWithoutTestFixtureAttributeContainingTestCaseSource
+ {
+ [TestCaseSource("data")]
+ public void SomeTest(int x) { }
+ }
+
+#if !NUNITLITE
+ public class FixtureWithoutTestFixtureAttributeContainingTheory
+ {
+ [Theory]
+ public void SomeTest(int x) { }
+ }
+#endif
+
+#if CLR_2_0 || CLR_4_0
+ public static class StaticFixtureWithoutTestFixtureAttribute
+ {
+ [Test]
+ public static void StaticTest() { }
+ }
+#endif
+
+ [TestFixture]
+ public class MultipleSetUpAttributes
+ {
+ [SetUp]
+ public void Init1()
+ {}
+
+ [SetUp]
+ public void Init2()
+ {}
+
+ [Test] public void OneTest()
+ {}
+ }
+
+ [TestFixture]
+ public class MultipleTearDownAttributes
+ {
+ [TearDown]
+ public void Destroy1()
+ {}
+
+ [TearDown]
+ public void Destroy2()
+ {}
+
+ [Test] public void OneTest()
+ {}
+ }
+
+ [TestFixture]
+ [Ignore("testing ignore a fixture")]
+ public class IgnoredFixture
+ {
+ [Test]
+ public void Success()
+ {}
+ }
+
+ [TestFixture]
+ public class OuterClass
+ {
+ [TestFixture]
+ public class NestedTestFixture
+ {
+ [TestFixture]
+ public class DoublyNestedTestFixture
+ {
+ [Test]
+ public void Test()
+ {
+ }
+ }
+ }
+ }
+
+ [TestFixture]
+ public abstract class AbstractTestFixture
+ {
+ [TearDown]
+ public void Destroy1()
+ {}
+
+ [Test]
+ public void SomeTest()
+ {
+ }
+ }
+
+ public class DerivedFromAbstractTestFixture : AbstractTestFixture
+ {
+ }
+
+ [TestFixture]
+ public class BaseClassTestFixture
+ {
+ [Test]
+ public void Success() { }
+ }
+
+ public abstract class AbstractDerivedTestFixture : BaseClassTestFixture
+ {
+ [Test]
+ public void Test()
+ {
+ }
+ }
+
+ public class DerivedFromAbstractDerivedTestFixture : AbstractDerivedTestFixture
+ {
+ }
+
+ [TestFixture]
+ public abstract class AbstractBaseFixtureWithAttribute
+ {
+ }
+
+ [TestFixture]
+ public abstract class AbstractDerivedFixtureWithSecondAttribute
+ : AbstractBaseFixtureWithAttribute
+ {
+ }
+
+ public class DoubleDerivedClassWithTwoInheritedAttributes
+ : AbstractDerivedFixtureWithSecondAttribute
+ {
+ }
+
+ [TestFixture]
+ public class MultipleFixtureSetUpAttributes
+ {
+ [TestFixtureSetUp]
+ public void Init1()
+ {}
+
+ [TestFixtureSetUp]
+ public void Init2()
+ {}
+
+ [Test] public void OneTest()
+ {}
+ }
+
+ [TestFixture]
+ public class MultipleFixtureTearDownAttributes
+ {
+ [TestFixtureTearDown]
+ public void Destroy1()
+ {}
+
+ [TestFixtureTearDown]
+ public void Destroy2()
+ {}
+
+ [Test] public void OneTest()
+ {}
+ }
+
+ // Base class used to ensure following classes
+ // all have at least one test
+ public class OneTestBase
+ {
+ [Test] public void OneTest() { }
+ }
+
+ [TestFixture]
+ public class PrivateSetUp : OneTestBase
+ {
+ [SetUp]
+ private void Setup() {}
+ }
+
+ [TestFixture]
+ public class ProtectedSetUp : OneTestBase
+ {
+ [SetUp]
+ protected void Setup() {}
+ }
+
+ [TestFixture]
+ public class StaticSetUp : OneTestBase
+ {
+ [SetUp]
+ public static void Setup() {}
+ }
+
+ [TestFixture]
+ public class SetUpWithReturnValue : OneTestBase
+ {
+ [SetUp]
+ public int Setup() { return 0; }
+ }
+
+ [TestFixture]
+ public class SetUpWithParameters : OneTestBase
+ {
+ [SetUp]
+ public void Setup(int j) { }
+ }
+
+ [TestFixture]
+ public class PrivateTearDown : OneTestBase
+ {
+ [TearDown]
+ private void Teardown() {}
+ }
+
+ [TestFixture]
+ public class ProtectedTearDown : OneTestBase
+ {
+ [TearDown]
+ protected void Teardown() {}
+ }
+
+ [TestFixture]
+ public class StaticTearDown : OneTestBase
+ {
+ [SetUp]
+ public static void TearDown() {}
+ }
+
+ [TestFixture]
+ public class TearDownWithReturnValue : OneTestBase
+ {
+ [TearDown]
+ public int Teardown() { return 0; }
+ }
+
+ [TestFixture]
+ public class TearDownWithParameters : OneTestBase
+ {
+ [TearDown]
+ public void Teardown(int j) { }
+ }
+
+ [TestFixture]
+ public class PrivateFixtureSetUp : OneTestBase
+ {
+ [TestFixtureSetUp]
+ private void Setup() {}
+ }
+
+ [TestFixture]
+ public class ProtectedFixtureSetUp : OneTestBase
+ {
+ [TestFixtureSetUp]
+ protected void Setup() {}
+ }
+
+ [TestFixture]
+ public class StaticFixtureSetUp : OneTestBase
+ {
+ [TestFixtureSetUp]
+ public static void Setup() {}
+ }
+
+ [TestFixture]
+ public class FixtureSetUpWithReturnValue : OneTestBase
+ {
+ [TestFixtureSetUp]
+ public int Setup() { return 0; }
+ }
+
+ [TestFixture]
+ public class FixtureSetUpWithParameters : OneTestBase
+ {
+ [SetUp]
+ public void Setup(int j) { }
+ }
+
+ [TestFixture]
+ public class PrivateFixtureTearDown : OneTestBase
+ {
+ [TestFixtureTearDown]
+ private void Teardown() {}
+ }
+
+ [TestFixture]
+ public class ProtectedFixtureTearDown : OneTestBase
+ {
+ [TestFixtureTearDown]
+ protected void Teardown() {}
+ }
+
+ [TestFixture]
+ public class StaticFixtureTearDown : OneTestBase
+ {
+ [TestFixtureTearDown]
+ public static void Teardown() {}
+ }
+
+ [TestFixture]
+ public class FixtureTearDownWithReturnValue : OneTestBase
+ {
+ [TestFixtureTearDown]
+ public int Teardown() { return 0; }
+ }
+
+ [TestFixture]
+ public class FixtureTearDownWithParameters : OneTestBase
+ {
+ [TestFixtureTearDown]
+ public void Teardown(int j) { }
+ }
+
+#if !NETCF && !SILVERLIGHT
+ [TestFixture]
+ public class FixtureThatChangesTheCurrentPrincipal
+ {
+ [Test]
+ public void ChangeCurrentPrincipal()
+ {
+ WindowsIdentity identity = WindowsIdentity.GetCurrent();
+ GenericPrincipal principal = new GenericPrincipal( identity, new string[] { } );
+ System.Threading.Thread.CurrentPrincipal = principal;
+ }
+ }
+#endif
+
+#if CLR_2_0 || CLR_4_0
+#if !NETCF
+ [TestFixture(typeof(int))]
+ [TestFixture(typeof(string))]
+ public class GenericFixtureWithProperArgsProvided<T>
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ public class GenericFixtureWithNoTestFixtureAttribute<T>
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ [TestFixture]
+ public class GenericFixtureWithNoArgsProvided<T>
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ [TestFixture]
+ public abstract class AbstractFixtureBase
+ {
+ [Test]
+ public void SomeTest() { }
+ }
+
+ public class GenericFixtureDerivedFromAbstractFixtureWithNoArgsProvided<T> : AbstractFixtureBase
+ {
+ }
+
+ [TestFixture(typeof(int))]
+ [TestFixture(typeof(string))]
+ public class GenericFixtureDerivedFromAbstractFixtureWithArgsProvided<T> : AbstractFixtureBase
+ {
+ }
+#endif
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TestMethodSignatureFixture.cs b/NUnitLite-0.9.0/src/testdata/TestMethodSignatureFixture.cs
new file mode 100755
index 0000000..2c97bd5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TestMethodSignatureFixture.cs
@@ -0,0 +1,124 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.TestMethodSignatureFixture
+{
+ [TestFixture]
+ public class TestMethodSignatureFixture
+ {
+ public static int Tests = 19;
+ public static int Runnable = 11;
+ public static int NotRunnable = 8;
+ public static int Errors = 3;
+ public static int Failures = 0;
+
+ [Test]
+ public void InstanceTestMethod() { }
+
+ [Test]
+ public static void StaticTestMethod() { }
+
+ [Test]
+ public void TestMethodWithArgumentsNotProvided(int x, int y, string label) { }
+
+ [Test]
+ public static void StaticTestMethodWithArgumentsNotProvided(int x, int y, string label) { }
+
+ [TestCase(5, 2, "ABC")]
+ public void TestMethodWithoutParametersWithArgumentsProvided() { }
+
+ [TestCase(5, 2, "ABC")]
+ public void TestMethodWithArgumentsProvided(int x, int y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+
+ [TestCase(5, 2, "ABC")]
+ public static void StaticTestMethodWithArgumentsProvided(int x, int y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+
+ [TestCase(2, 2)]
+ public void TestMethodWithWrongNumberOfArgumentsProvided(int x, int y, string label)
+ {
+ }
+
+ [TestCase(2, 2, 3.5)]
+ public void TestMethodWithWrongArgumentTypesProvided(int x, int y, string label)
+ {
+ }
+
+ [TestCase(2, 2)]
+ public static void StaticTestMethodWithWrongNumberOfArgumentsProvided(int x, int y, string label)
+ {
+ }
+
+ [TestCase(2, 2, 3.5)]
+ public static void StaticTestMethodWithWrongArgumentTypesProvided(int x, int y, string label)
+ {
+ }
+
+ [TestCase(3.7, 2, 5.7)]
+ public void TestMethodWithConvertibleArguments(double x, double y, double sum)
+ {
+ Assert.AreEqual(sum, x + y, 0.0001);
+ }
+
+ [TestCase(3.7, 2, 5.7)]
+ public void TestMethodWithNonConvertibleArguments(int x, int y, int sum)
+ {
+ Assert.AreEqual(sum, x + y, 0.0001);
+ }
+
+ [TestCase(12, 3, 4)]
+ [TestCase( 12, 2, 6 )]
+ [TestCase( 12, 4, 3 )]
+ public void TestMethodWithMultipleTestCases( int n, int d, int q )
+ {
+ Assert.AreEqual( q, n / d );
+ }
+
+// [Test]
+// public abstract void AbstractTestMethod() { }
+
+ [Test]
+ protected void ProtectedTestMethod() { }
+
+ [Test]
+ private void PrivateTestMethod() { }
+
+ [Test]
+ public bool TestMethodWithReturnType()
+ {
+ return true;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TheoryFixture.cs b/NUnitLite-0.9.0/src/testdata/TheoryFixture.cs
new file mode 100755
index 0000000..8d4dc89
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TheoryFixture.cs
@@ -0,0 +1,84 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData.TheoryFixture
+{
+ [TestFixture]
+ public class TheoryFixture
+ {
+ [Datapoint]
+ internal int i0 = 0;
+ [Datapoint]
+ internal static int i1 = 1;
+ [Datapoint]
+ public int i100 = 100;
+
+ private void Dummy()
+ {
+ int x = i0; // Suppress Compiler Warnings
+ int y = i1; //
+ }
+
+ [Theory]
+ public void TheoryWithNoArguments()
+ {
+ }
+
+ [Theory]
+ public void TheoryWithArgumentsButNoDatapoints(decimal x, decimal y)
+ {
+ }
+
+ [Theory]
+ public void TheoryWithArgumentsAndDatapoints(int x, int y)
+ {
+ }
+
+ [TestCase(5, 10)]
+ [TestCase(3, 12)]
+ public void TestWithArguments(int x, int y)
+ {
+ }
+
+ [Theory]
+ public void TestWithBooleanArguments(bool a, bool b)
+ {
+ }
+
+ [Theory]
+ public void TestWithEnumAsArgument(System.AttributeTargets targets)
+ {
+ }
+
+ [Theory]
+ public void TestWithAllBadValues(
+ [Values(-12.0, -4.0, -9.0)] double d)
+ {
+ Assume.That(d > 0);
+ Assert.Pass();
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/testdata/TimeoutFixture.cs b/NUnitLite-0.9.0/src/testdata/TimeoutFixture.cs
new file mode 100755
index 0000000..66c2d1d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/TimeoutFixture.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+using System;
+using NUnit.Framework;
+
+namespace NUnit.TestData
+{
+ [TestFixture]
+ public class TimeoutFixture
+ {
+ public bool TearDownWasRun;
+
+ [SetUp]
+ public void SetUp()
+ {
+ TearDownWasRun = false;
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ TearDownWasRun = true;
+ }
+
+ [Test, Timeout(50)]
+ public void InfiniteLoopWith50msTimeout()
+ {
+ while (true) { }
+ }
+ }
+
+ [TestFixture, Timeout(50)]
+ public class ThreadingFixtureWithTimeout
+ {
+ [Test]
+ public void Test1() { }
+ [Test]
+ public void Test2WithInfiniteLoop() { while (true) { } }
+ [Test]
+ public void Test3() { }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-2.0.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-2.0.csproj
new file mode 100755
index 0000000..b16f8f8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-2.0.csproj
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{442DAB16-3063-4FE3-90B6-C29C3D85360D}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <DefineConstants>TRACE;DEBUG;NET_2_0,CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <OutputPath>..\..\bin\Debug\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <DefineConstants>TRACE;NET_2_0,CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <OutputPath>..\..\bin\Release\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ <Compile Include="TimeoutFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunitlite.testdata.build">
+ <SubType>Designer</SubType>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include=".NETFramework,Version=v4.0">
+ <Visible>False</Visible>
+ <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-2.0.csproj">
+ <Project>{C24A3FC4-2541-4E9C-BADD-564777610B75}</Project>
+ <Name>nunitlite-2.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-3.5.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-3.5.csproj
new file mode 100755
index 0000000..70945c2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-3.5.csproj
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{652AFEEB-B19C-4C67-A014-2248EA72F229}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_3_5, CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;NET_3_5, CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ <Compile Include="TimeoutFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunitlite.testdata.build">
+ <SubType>Designer</SubType>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include=".NETFramework,Version=v4.0">
+ <Visible>False</Visible>
+ <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-3.5.csproj">
+ <Project>{43B24DC5-16D6-45EF-93F1-B021B785A892}</Project>
+ <Name>nunitlite-3.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.0.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.0.csproj
new file mode 100755
index 0000000..45c28fb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.0.csproj
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{5C77A144-3CD1-42FC-B622-410E1945CA1E}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_4_0, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;NET_4_0, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ <Compile Include="TimeoutFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunitlite.testdata.build">
+ <SubType>Designer</SubType>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include=".NETFramework,Version=v4.0">
+ <Visible>False</Visible>
+ <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-4.0.csproj">
+ <Project>{1567BCCE-7BE9-4815-84D7-7F794DB39081}</Project>
+ <Name>nunitlite-4.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.5.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.5.csproj
new file mode 100755
index 0000000..f8f82a4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-4.5.csproj
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{6358FBCA-9CA2-4A70-AF87-18B916400CEE}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_4_5,CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;NET_4_5,CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AsyncDummyFixture.cs" />
+ <Compile Include="AsyncRealFixture.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ <Compile Include="TimeoutFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="nunitlite.testdata.build">
+ <SubType>Designer</SubType>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include=".NETFramework,Version=v4.0">
+ <Visible>False</Visible>
+ <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-4.5.csproj">
+ <Project>{d12f0f7b-8de3-43ec-ba49-41052d065a9b}</Project>
+ <Name>nunitlite-4.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-2.0.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-2.0.csproj
new file mode 100755
index 0000000..e67cf8c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-2.0.csproj
@@ -0,0 +1,97 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{F67E80E8-DF9F-4C66-9142-5002FA638EB7}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>WindowsCE</PlatformFamilyName>
+ <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
+ <OSVersion>5.0</OSVersion>
+ <DeployDirSuffix>NUnitLite</DeployDirSuffix>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <NativePlatformName>Windows CE</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-2.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-2.0</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-netcf-2.0.csproj">
+ <Project>{BED999D7-F594-4CE4-A037-E40E2B9C1288}</Project>
+ <Name>nunitlite-netcf-2.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-3.5.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-3.5.csproj
new file mode 100755
index 0000000..992d643
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-netcf-3.5.csproj
@@ -0,0 +1,98 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>WindowsCE</PlatformFamilyName>
+ <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
+ <OSVersion>5.0</OSVersion>
+ <DeployDirSuffix>nunitlite.testdata_netcf_3._5</DeployDirSuffix>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <NativePlatformName>Windows CE</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-netcf-3.5.csproj">
+ <Project>{5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}</Project>
+ <Name>nunitlite-netcf-3.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-3.0.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-3.0.csproj
new file mode 100755
index 0000000..bd4d24c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-3.0.csproj
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <SignManifests>false</SignManifests>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-3.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-3.0.csproj">
+ <Project>{02B02379-2596-4E45-8B10-835D62EA2D9E}</Project>
+ <Name>nunitlite-sl-3.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-4.0.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-4.0.csproj
new file mode 100755
index 0000000..73cc533
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-4.0.csproj
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{E97412B5-8C91-4236-8E9A-24C8E20BC675}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <IntermediateOutputPath>obj\$(Configuration)\sl-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>false</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>
+ </AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-4.0.csproj">
+ <Project>{41326141-EB24-4984-9D9B-5CFAA55946BA}</Project>
+ <Name>nunitlite-sl-4.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-5.0.csproj b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-5.0.csproj
new file mode 100755
index 0000000..f1a2b77
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata-sl-5.0.csproj
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.TestData</RootNamespace>
+ <AssemblyName>nunitlite.testdata</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <ValidateXaml>true</ValidateXaml>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-5.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_5_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_5_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="AssertCountFixture.cs" />
+ <Compile Include="AssertFailFixture.cs" />
+ <Compile Include="AssertIgnoreData.cs" />
+ <Compile Include="AttributeInheritanceData.cs" />
+ <Compile Include="CategoryAttributeData.cs" />
+ <Compile Include="CultureAttributeData.cs" />
+ <Compile Include="DatapointFixture.cs" />
+ <Compile Include="DescriptionFixture.cs" />
+ <Compile Include="ExpectedExceptionData.cs" />
+ <Compile Include="FixtureSetUpTearDownData.cs" />
+ <Compile Include="MaxTimeFixture.cs" />
+ <Compile Include="ParameterizedTestFixture.cs" />
+ <Compile Include="PropertyAttributeTests.cs" />
+ <Compile Include="RepeatedTestFixture.cs" />
+ <Compile Include="SetUpData.cs" />
+ <Compile Include="TestCaseAttributeFixture.cs" />
+ <Compile Include="TestCaseSourceAttributeFixture.cs" />
+ <Compile Include="TestContextData.cs" />
+ <Compile Include="TestFixtureData.cs" />
+ <Compile Include="TestMethodSignatureFixture.cs" />
+ <Compile Include="TheoryFixture.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-5.0.csproj">
+ <Project>{5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}</Project>
+ <Name>nunitlite-sl-5.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/testdata/nunitlite.testdata.build b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata.build
new file mode 100755
index 0000000..5ab089e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/nunitlite.testdata.build
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<project name="TestData" default="build" basedir=".">
+
+ <property name="msbuild.project" value="nunitlite.testdata-${msbuild.proj.suffix}.csproj"/>
+
+ <include buildfile="../../nunitlite.projects.common"/>
+
+ <target name="nant-clean">
+
+ <delete file="${current.build.dir}/nunitlite.testdata.dll"/>
+ <delete file="${current.build.dir}/nunitlite.testdata.pdb"/>
+
+ </target>
+
+ <target name="nant-build">
+
+ <csc target="library"
+ output="${current.build.dir}/nunitlite.testdata.dll"
+ debug="${build.debug}"
+ define="${build.defines};NUNITLITE">
+ <sources basedir=".">
+ <include name="**/*.cs"/>
+ </sources>
+ <references basedir="${current.build.dir}">
+ <include name="mscorlib.dll"/>
+ <include name="nunitlite.dll"/>
+ </references>
+ </csc>
+
+ </target>
+
+</project>
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/testdata/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/tests/Api/ResultStateTests.cs b/NUnitLite-0.9.0/src/tests/Api/ResultStateTests.cs
new file mode 100755
index 0000000..8c813d3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Api/ResultStateTests.cs
@@ -0,0 +1,176 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class ResultStateTests
+ {
+ [TestCase(TestStatus.Failed)]
+ [TestCase(TestStatus.Skipped)]
+ [TestCase(TestStatus.Inconclusive)]
+ [TestCase(TestStatus.Passed)]
+ public void Status_ConstructorWithOneArguments_ReturnsConstructorArgumentStatus(TestStatus status)
+ {
+ // Arrange N/A
+
+ ResultState resultState = new ResultState(status);
+
+ Assert.AreEqual(status, resultState.Status);
+ }
+
+ [Test]
+ public void Label_ConstructorWithOneArguments_ReturnsStringEmpty()
+ {
+ // Arrange N/A
+
+ ResultState resultState = new ResultState(TestStatus.Failed);
+
+ Assert.AreEqual(string.Empty, resultState.Label);
+ }
+
+ [TestCase(TestStatus.Failed)]
+ [TestCase(TestStatus.Skipped)]
+ [TestCase(TestStatus.Inconclusive)]
+ [TestCase(TestStatus.Passed)]
+ public void Status_ConstructorWithTwoArguments_ReturnsConstructorArgumentStatus(TestStatus status)
+ {
+ // Arrange N/A
+
+ ResultState resultState = new ResultState(status, string.Empty);
+
+ Assert.AreEqual(status, resultState.Status);
+ }
+
+ [TestCase("")]
+ [TestCase("label")]
+ public void Label_ConstructorWithTwoArguments_ReturnsConstructorArgumentLabel(string label)
+ {
+ // Arrange N/A
+
+ ResultState resultState = new ResultState(TestStatus.Failed, label);
+
+ Assert.AreEqual(label, resultState.Label);
+ }
+
+ [Test]
+ public void Label_ConstructorWithTwoArgumentsLabelArgumentIsNull_ReturnsEmptyString()
+ {
+ // Arrange N/A
+
+ ResultState resultState = new ResultState(TestStatus.Failed, null);
+
+ Assert.AreEqual(string.Empty, resultState.Label);
+ }
+
+ [TestCase(TestStatus.Skipped, SpecialValue.Null, "Skipped")]
+ [TestCase(TestStatus.Passed, "", "Passed")]
+ [TestCase(TestStatus.Passed, "testLabel", "Passed:testLabel")]
+ public void ToString_Constructor_ReturnsExepectedString(TestStatus status, string label, string expected)
+ {
+ // Arrange N/A
+
+ ResultState resultState = new ResultState(status, label);
+
+ Assert.AreEqual(expected, resultState.ToString());
+ }
+
+ #region Test Fields
+
+ [Test]
+ public void Inconclusive_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Inconclusive;
+
+ Assert.AreEqual(TestStatus.Inconclusive, resultState.Status, "Status not correct.");
+ Assert.AreEqual(string.Empty, resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void NotRunnable_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.NotRunnable;
+
+ Assert.AreEqual(TestStatus.Skipped, resultState.Status, "Status not correct.");
+ Assert.AreEqual("Invalid", resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void Skipped_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Skipped;
+
+ Assert.AreEqual(TestStatus.Skipped, resultState.Status, "Status not correct.");
+ Assert.AreEqual(string.Empty, resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void Ignored_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Ignored;
+
+ Assert.AreEqual(TestStatus.Skipped, resultState.Status, "Status not correct.");
+ Assert.AreEqual("Ignored", resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void Success_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Success;
+
+ Assert.AreEqual(TestStatus.Passed, resultState.Status, "Status not correct.");
+ Assert.AreEqual(string.Empty, resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void Failure_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Failure;
+
+ Assert.AreEqual(TestStatus.Failed, resultState.Status, "Status not correct.");
+ Assert.AreEqual(string.Empty, resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void Error_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Error;
+
+ Assert.AreEqual(TestStatus.Failed, resultState.Status, "Status not correct.");
+ Assert.AreEqual("Error", resultState.Label, "Label not correct.");
+ }
+
+ [Test]
+ public void Cancelled_NA_ReturnsResultStateWithPropertiesCorrectlySet()
+ {
+ ResultState resultState = ResultState.Cancelled;
+
+ Assert.AreEqual(TestStatus.Failed, resultState.Status, "Status not correct.");
+ Assert.AreEqual("Cancelled", resultState.Label, "Label not correct.");
+ }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/App.g.cs b/NUnitLite-0.9.0/src/tests/App.g.cs
new file mode 100755
index 0000000..7fb3902
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/App.g.cs
@@ -0,0 +1,53 @@
+#pragma checksum "D:\Dev\NUnit\nunitlite\silverlight\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "7F705B1DDE1B06450160A1EECA2F6007"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17626
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/App.xaml.cs b/NUnitLite-0.9.0/src/tests/App.xaml.cs
new file mode 100755
index 0000000..f7401fe
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/App.xaml.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Windows;
+
+namespace NUnitLite.Tests
+{
+ public partial class App : Application
+ {
+
+ public App()
+ {
+ this.Startup += this.Application_Startup;
+ this.Exit += this.Application_Exit;
+ this.UnhandledException += this.Application_UnhandledException;
+
+ InitializeComponent();
+ }
+
+ private void Application_Startup(object sender, StartupEventArgs e)
+ {
+ RootVisual = new NUnitLite.Runner.Silverlight.TestPage();
+ }
+
+ private void Application_Exit(object sender, EventArgs e)
+ {
+
+ }
+ private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+ {
+ // If the app is running outside of the debugger then report the exception using
+ // the browser's exception mechanism. On IE this will display it a yellow alert
+ // icon in the status bar and Firefox will display a script error.
+ if (!System.Diagnostics.Debugger.IsAttached)
+ {
+
+ // NOTE: This will allow the application to continue running after an exception has been thrown
+ // but not handled.
+ // For production applications this error handling should be replaced with something that will
+ // report the error to the website and stop the application.
+ e.Handled = true;
+ Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
+ }
+ }
+ private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
+ {
+ try
+ {
+ string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
+ errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
+
+ System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
+ }
+ catch (Exception)
+ {
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/AssemblyInfo.cs b/NUnitLite-0.9.0/src/tests/AssemblyInfo.cs
new file mode 100755
index 0000000..93c175d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/AssemblyInfo.cs
@@ -0,0 +1,47 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+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("NUnitLiteTests")]
+[assembly: AssemblyDescription("Tests of the NUnitLite testing framework")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NUnitLite")]
+[assembly: AssemblyCopyright("Copyright © 2007, Charlie Poole")]
+[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("e7a2d0a1-69b5-40a6-bbfa-4c2e77335d8d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+#if !PocketPC && !WindowsCE && !NETCF
+[assembly: AssemblyFileVersion("1.0.0.0")]
+#endif
+
+// Under Silverlight, it's only possible to reflect
+// over members that would be accessible normally.
+#if SILVERLIGHT
+[assembly: InternalsVisibleTo("nunitlite")]
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFailureMessageFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFailureMessageFixture.cs
new file mode 100755
index 0000000..2cbd421
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFailureMessageFixture.cs
@@ -0,0 +1,257 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Assertions
+{
+ /// <summary>
+ /// Summary description for ArrayEqualsFailureMessageFixture.
+ /// </summary>
+ [TestFixture]
+ public class ArrayEqualsFailureMessageFixture : MessageChecker
+ {
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ArraysHaveDifferentRanks()
+ {
+ int[] expected = new int[] { 1, 2, 3, 4 };
+ int[,] actual = new int[,] { { 1, 2 }, { 3, 4 } };
+
+ expectedMessage =
+ " Expected is <System.Int32[4]>, actual is <System.Int32[2,2]>" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ExpectedArrayIsLonger()
+ {
+ int[] expected = new int[] { 1, 2, 3, 4, 5 };
+ int[] actual = new int[] { 1, 2, 3 };
+
+ expectedMessage =
+ " Expected is <System.Int32[5]>, actual is <System.Int32[3]>" + NL +
+ " Values differ at index [3]" + NL +
+ " Missing: < 4, 5 >";
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ActualArrayIsLonger()
+ {
+ int[] expected = new int[] { 1, 2, 3 };
+ int[] actual = new int[] { 1, 2, 3, 4, 5, 6, 7 };
+
+ expectedMessage =
+ " Expected is <System.Int32[3]>, actual is <System.Int32[7]>" + NL +
+ " Values differ at index [3]" + NL +
+ " Extra: < 4, 5, 6... >";
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailureOnSingleDimensionedArrays()
+ {
+ int[] expected = new int[] { 1, 2, 3 };
+ int[] actual = new int[] { 1, 5, 3 };
+
+ expectedMessage =
+ " Expected and actual are both <System.Int32[3]>" + NL +
+ " Values differ at index [1]" + NL +
+ TextMessageWriter.Pfx_Expected + "2" + NL +
+ TextMessageWriter.Pfx_Actual + "5" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void DoubleDimensionedArrays()
+ {
+ int[,] expected = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
+ int[,] actual = new int[,] { { 1, 3, 2 }, { 4, 0, 6 } };
+
+ expectedMessage =
+ " Expected and actual are both <System.Int32[2,3]>" + NL +
+ " Values differ at index [0,1]" + NL +
+ TextMessageWriter.Pfx_Expected + "2" + NL +
+ TextMessageWriter.Pfx_Actual + "3" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void TripleDimensionedArrays()
+ {
+ int[, ,] expected = new int[,,] { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
+ int[, ,] actual = new int[,,] { { { 1, 2 }, { 3, 4 } }, { { 0, 6 }, { 7, 8 } } };
+
+ expectedMessage =
+ " Expected and actual are both <System.Int32[2,2,2]>" + NL +
+ " Values differ at index [1,0,0]" + NL +
+ TextMessageWriter.Pfx_Expected + "5" + NL +
+ TextMessageWriter.Pfx_Actual + "0" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FiveDimensionedArrays()
+ {
+ int[, , , ,] expected = new int[2, 2, 2, 2, 2] { { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } }, { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } } };
+ int[, , , ,] actual = new int[2, 2, 2, 2, 2] { { { { { 1, 2 }, { 4, 3 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } }, { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } } };
+
+ expectedMessage =
+ " Expected and actual are both <System.Int32[2,2,2,2,2]>" + NL +
+ " Values differ at index [0,0,0,1,0]" + NL +
+ TextMessageWriter.Pfx_Expected + "3" + NL +
+ TextMessageWriter.Pfx_Actual + "4" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void JaggedArrays()
+ {
+ int[][] expected = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7 }, new int[] { 8, 9 } };
+ int[][] actual = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 0, 7 }, new int[] { 8, 9 } };
+
+ expectedMessage =
+ " Expected and actual are both <System.Int32[3][]>" + NL +
+ " Values differ at index [1]" + NL +
+ " Expected and actual are both <System.Int32[4]>" + NL +
+ " Values differ at index [2]" + NL +
+ TextMessageWriter.Pfx_Expected + "6" + NL +
+ TextMessageWriter.Pfx_Actual + "0" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void JaggedArrayComparedToSimpleArray()
+ {
+ int[] expected = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ int[][] actual = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 0, 7 }, new int[] { 8, 9 } };
+
+ expectedMessage =
+ " Expected is <System.Int32[9]>, actual is <System.Int32[3][]>" + NL +
+ " Values differ at index [0]" + NL +
+ TextMessageWriter.Pfx_Expected + "1" + NL +
+ TextMessageWriter.Pfx_Actual + "< 1, 2, 3 >" + NL;
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ArraysWithDifferentRanksAsCollection()
+ {
+ int[] expected = new int[] { 1, 2, 3, 4 };
+ int[,] actual = new int[,] { { 1, 0 }, { 3, 4 } };
+
+ expectedMessage =
+ " Expected is <System.Int32[4]>, actual is <System.Int32[2,2]>" + NL +
+ " Values differ at expected index [1], actual index [0,1]" + NL +
+ TextMessageWriter.Pfx_Expected + "2" + NL +
+ TextMessageWriter.Pfx_Actual + "0" + NL;
+ Assert.That(actual, Is.EqualTo(expected).AsCollection);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ArraysWithDifferentDimensionsAsCollection()
+ {
+ int[,] expected = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
+ int[,] actual = new int[,] { { 1, 2 }, { 3, 0 }, { 5, 6 } };
+
+ expectedMessage =
+ " Expected is <System.Int32[2,3]>, actual is <System.Int32[3,2]>" + NL +
+ " Values differ at expected index [1,0], actual index [1,1]" + NL +
+ TextMessageWriter.Pfx_Expected + "4" + NL +
+ TextMessageWriter.Pfx_Actual + "0" + NL;
+ Assert.That(actual, Is.EqualTo(expected).AsCollection);
+ }
+
+ // [Test,ExpectedException(typeof(AssertionException))]
+ // public void ExpectedArrayIsLonger()
+ // {
+ // string[] array1 = { "one", "two", "three" };
+ // string[] array2 = { "one", "two", "three", "four", "five" };
+ //
+ // expectedMessage =
+ // " Expected is <System.String[5]>, actual is <System.String[3]>" + NL +
+ // " Values differ at index [3]" + NL +
+ // " Missing: < \"four\", \"five\" >";
+ // Assert.That(array1, Is.EqualTo(array2));
+ // }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void SameLengthDifferentContent()
+ {
+ string[] array1 = { "one", "two", "three" };
+ string[] array2 = { "one", "two", "ten" };
+
+ expectedMessage =
+ " Expected and actual are both <System.String[3]>" + NL +
+ " Values differ at index [2]" + NL +
+ " Expected string length 3 but was 5. Strings differ at index 1." + NL +
+ " Expected: \"ten\"" + NL +
+ " But was: \"three\"" + NL +
+ " ------------^" + NL;
+ Assert.That(array1, Is.EqualTo(array2));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ArraysDeclaredAsDifferentTypes()
+ {
+ string[] array1 = { "one", "two", "three" };
+ object[] array2 = { "one", "three", "two" };
+
+ expectedMessage =
+ " Expected is <System.Object[3]>, actual is <System.String[3]>" + NL +
+ " Values differ at index [1]" + NL +
+ " Expected string length 5 but was 3. Strings differ at index 1." + NL +
+ " Expected: \"three\"" + NL +
+ " But was: \"two\"" + NL +
+ " ------------^" + NL;
+ Assert.That(array1, Is.EqualTo(array2));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ArrayAndCollection_Failure()
+ {
+ int[] a = new int[] { 1, 2, 3 };
+ ICollection b = new SimpleObjectCollection(1, 3);
+ Assert.AreEqual(a, b);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void DifferentArrayTypesEqualFails()
+ {
+ string[] array1 = { "one", "two", "three" };
+ object[] array2 = { "one", "three", "two" };
+
+ expectedMessage =
+ " Expected is <System.String[3]>, actual is <System.Object[3]>" + NL +
+ " Values differ at index [1]" + NL +
+ " Expected string length 3 but was 5. Strings differ at index 1." + NL +
+ " Expected: \"two\"" + NL +
+ " But was: \"three\"" + NL +
+ " ------------^" + NL;
+ Assert.AreEqual(array1, array2);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFixture.cs
new file mode 100755
index 0000000..16b36bd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/ArrayEqualsFixture.cs
@@ -0,0 +1,220 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTIONA
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Assertions
+{
+ /// <summary>
+ /// Summary description for ArrayEqualTests.
+ /// </summary>
+ [TestFixture]
+ public class ArrayEqualsFixture : AssertionHelper
+ {
+ [Test]
+ public void ArrayIsEqualToItself()
+ {
+ string[] array = { "one", "two", "three" };
+ Assert.That( array, Is.SameAs(array) );
+ Assert.AreEqual( array, array );
+ Expect(array, EqualTo(array));
+ }
+
+ [Test]
+ public void ArraysOfString()
+ {
+ string[] array1 = { "one", "two", "three" };
+ string[] array2 = { "one", "two", "three" };
+ Assert.IsFalse( array1 == array2 );
+ Assert.AreEqual(array1, array2);
+ Expect(array1, EqualTo(array2));
+ Assert.AreEqual(array2, array1);
+ Expect(array2, EqualTo(array1));
+ }
+
+ [Test]
+ public void ArraysOfInt()
+ {
+ int[] a = new int[] { 1, 2, 3 };
+ int[] b = new int[] { 1, 2, 3 };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void ArraysOfDouble()
+ {
+ double[] a = new double[] { 1.0, 2.0, 3.0 };
+ double[] b = new double[] { 1.0, 2.0, 3.0 };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void ArraysOfDecimal()
+ {
+ decimal[] a = new decimal[] { 1.0m, 2.0m, 3.0m };
+ decimal[] b = new decimal[] { 1.0m, 2.0m, 3.0m };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void ArrayOfIntAndArrayOfDouble()
+ {
+ int[] a = new int[] { 1, 2, 3 };
+ double[] b = new double[] { 1.0, 2.0, 3.0 };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void ArraysDeclaredAsDifferentTypes()
+ {
+ string[] array1 = { "one", "two", "three" };
+ object[] array2 = { "one", "two", "three" };
+ Assert.AreEqual( array1, array2, "String[] not equal to Object[]" );
+ Assert.AreEqual( array2, array1, "Object[] not equal to String[]" );
+ Expect(array1, EqualTo(array2), "String[] not equal to Object[]");
+ Expect(array2, EqualTo(array1), "Object[] not equal to String[]");
+ }
+
+ [Test]
+ public void ArraysOfMixedTypes()
+ {
+ DateTime now = DateTime.Now;
+ object[] array1 = new object[] { 1, 2.0f, 3.5d, 7.000m, "Hello", now };
+ object[] array2 = new object[] { 1.0d, 2, 3.5, 7, "Hello", now };
+ Assert.AreEqual( array1, array2 );
+ Assert.AreEqual(array2, array1);
+ Expect(array1, EqualTo(array2));
+ Expect(array2, EqualTo(array1));
+ }
+
+ [Test]
+ public void DoubleDimensionedArrays()
+ {
+ int[,] a = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
+ int[,] b = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void TripleDimensionedArrays()
+ {
+ int[, ,] expected = new int[,,] { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
+ int[,,] actual = new int[,,] { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
+
+ Assert.AreEqual(expected, actual);
+ Expect(actual, EqualTo(expected));
+ }
+
+ [Test]
+ public void FiveDimensionedArrays()
+ {
+ int[, , , ,] expected = new int[2, 2, 2, 2, 2] { { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } }, { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } } };
+ int[, , , ,] actual = new int[2, 2, 2, 2, 2] { { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } }, { { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }, { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } } } };
+
+ Assert.AreEqual(expected, actual);
+ Expect(actual, EqualTo(expected));
+ }
+
+ [Test]
+ public void ArraysOfArrays()
+ {
+ int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 } };
+ int[][] b = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 } };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void JaggedArrays()
+ {
+ int[][] expected = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7 }, new int[] { 8, 9 } };
+ int[][] actual = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7 }, new int[] { 8, 9 } };
+
+ Assert.AreEqual(expected, actual);
+ Expect(actual, EqualTo(expected));
+ }
+
+ [Test]
+ public void ArraysPassedAsObjects()
+ {
+ object a = new int[] { 1, 2, 3 };
+ object b = new double[] { 1.0, 2.0, 3.0 };
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void ArrayAndCollection()
+ {
+ int[] a = new int[] { 1, 2, 3 };
+ ICollection b = new SimpleObjectCollection( a );
+ Assert.AreEqual(a, b);
+ Assert.AreEqual(b, a);
+ Expect(a, EqualTo(b));
+ Expect(b, EqualTo(a));
+ }
+
+ [Test]
+ public void ArraysWithDifferentRanksComparedAsCollection()
+ {
+ int[] expected = new int[] { 1, 2, 3, 4 };
+ int[,] actual = new int[,] { { 1, 2 }, { 3, 4 } };
+
+ Assert.AreNotEqual(expected, actual);
+ Expect(actual, Not.EqualTo(expected));
+ Expect(actual, EqualTo(expected).AsCollection);
+ }
+
+ [Test]
+ public void ArraysWithDifferentDimensionsMatchedAsCollection()
+ {
+ int[,] expected = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
+ int[,] actual = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
+
+ Assert.AreNotEqual(expected, actual);
+ Expect(actual, Not.EqualTo(expected));
+ Expect(actual, EqualTo(expected).AsCollection);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/ArrayNotEqualFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/ArrayNotEqualFixture.cs
new file mode 100755
index 0000000..cad638c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/ArrayNotEqualFixture.cs
@@ -0,0 +1,68 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Assertions
+{
+ /// <summary>
+ /// Summary description for ArrayNotEqualFixture.
+ /// </summary>
+ [TestFixture]
+ public class ArrayNotEqualFixture : AssertionHelper
+ {
+ [Test]
+ public void DifferentLengthArrays()
+ {
+ string[] array1 = { "one", "two", "three" };
+ string[] array2 = { "one", "two", "three", "four", "five" };
+
+ Assert.AreNotEqual(array1, array2);
+ Assert.AreNotEqual(array2, array1);
+ Expect(array1, Not.EqualTo(array2));
+ Expect(array2, Not.EqualTo(array1));
+ }
+
+ [Test]
+ public void SameLengthDifferentContent()
+ {
+ string[] array1 = { "one", "two", "three" };
+ string[] array2 = { "one", "two", "ten" };
+ Assert.AreNotEqual(array1, array2);
+ Assert.AreNotEqual(array2, array1);
+ Expect(array1, Not.EqualTo(array2));
+ Expect(array2, Not.EqualTo(array1));
+ }
+
+ [Test]
+ public void ArraysDeclaredAsDifferentTypes()
+ {
+ string[] array1 = { "one", "two", "three" };
+ object[] array2 = { "one", "three", "two" };
+ Assert.AreNotEqual(array1, array2);
+ Expect(array1, Not.EqualTo(array2));
+ Expect(array2, Not.EqualTo(array1));
+ }
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssertFailTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssertFailTests.cs
new file mode 100755
index 0000000..3bb5112
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssertFailTests.cs
@@ -0,0 +1,83 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+using NUnit.TestData.AssertFailFixture;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AssertFailTests
+ {
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ThrowsAssertionException()
+ {
+ Assert.Fail();
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "MESSAGE")]
+ public void ThrowsAssertionExceptionWithMessage()
+ {
+ Assert.Fail("MESSAGE");
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "MESSAGE: 2+2=4")]
+ public void ThrowsAssertionExceptionWithMessageAndArgs()
+ {
+ Assert.Fail("MESSAGE: {0}+{1}={2}", 2, 2, 4);
+ }
+
+ [Test]
+ public void AssertFailWorks()
+ {
+ ITestResult result = TestBuilder.RunTestCase(
+ typeof(AssertFailFixture),
+ "CallAssertFail");
+
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ }
+
+ [Test]
+ public void AssertFailWorksWithMessage()
+ {
+ ITestResult result = TestBuilder.RunTestCase(
+ typeof(AssertFailFixture),
+ "CallAssertFailWithMessage");
+
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.AreEqual("MESSAGE", result.Message);
+ }
+
+ [Test]
+ public void AssertFailWorksWithMessageAndArgs()
+ {
+ ITestResult result = TestBuilder.RunTestCase(
+ typeof(AssertFailFixture),
+ "CallAssertFailWithMessageAndArgs");
+
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.AreEqual("MESSAGE: 2+2=4", result.Message);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssertIgnoreTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssertIgnoreTests.cs
new file mode 100755
index 0000000..581498f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssertIgnoreTests.cs
@@ -0,0 +1,151 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData.AssertIgnoreData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Assertions
+{
+ /// <summary>
+ /// Tests of IgnoreException and Assert.Ignore
+ /// </summary>
+ [TestFixture]
+ public class AssertIgnoreTests
+ {
+ [Test, ExpectedException(typeof(IgnoreException))]
+ public void ThrowsIgnoreException()
+ {
+ Assert.Ignore();
+ }
+
+ [Test, ExpectedException(typeof(IgnoreException), ExpectedMessage = "MESSAGE")]
+ public void ThrowsIgnoreExceptionWithMessage()
+ {
+ Assert.Ignore("MESSAGE");
+ }
+
+ [Test, ExpectedException(typeof(IgnoreException), ExpectedMessage = "MESSAGE: 2+2=4")]
+ public void ThrowsIgnoreExceptionWithMessageAndArgs()
+ {
+ Assert.Ignore("MESSAGE: {0}+{1}={2}", 2, 2, 4);
+ }
+
+ [Test]
+ public void IgnoreWorksForTestCase()
+ {
+ Type fixtureType = typeof(IgnoredTestCaseFixture);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "CallsIgnore");
+ Assert.AreEqual(ResultState.Ignored, result.ResultState);
+ Assert.AreEqual("Ignore me", result.Message);
+ }
+
+ [Test]
+ public void IgnoreTakesPrecedenceOverExpectedException()
+ {
+ Type fixtureType = typeof(IgnoredTestCaseFixture);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "CallsIgnoreWithExpectedException");
+ Assert.AreEqual(ResultState.Ignored, result.ResultState);
+ Assert.AreEqual("Ignore me", result.Message);
+ }
+
+ [Test]
+ public void IgnoreWorksForTestSuite()
+ {
+ TestSuite suite = new TestSuite("IgnoredTestFixture");
+ suite.Add(TestBuilder.MakeFixture(typeof(IgnoredTestSuiteFixture)));
+ ITestResult fixtureResult = (ITestResult)TestBuilder.RunTest(suite, null).Children[0];
+
+ Assert.AreEqual(ResultState.Ignored, fixtureResult.ResultState);
+
+ foreach (ITestResult testResult in fixtureResult.Children)
+ Assert.AreEqual(ResultState.Ignored, testResult.ResultState);
+ }
+
+ [Test]
+ public void IgnoreWorksFromSetUp()
+ {
+ ITestResult fixtureResult = TestBuilder.RunTestFixture(typeof(IgnoreInSetUpFixture));
+
+ // TODO: Decide how Ignored tests impact the containing suite result
+ //Assert.AreEqual(ResultState.Ignored, fixtureResult.ResultState);
+
+ foreach (TestResult testResult in fixtureResult.Children)
+ Assert.AreEqual(ResultState.Ignored, testResult.ResultState);
+ }
+
+ [Test]
+ public void IgnoreWithUserMessage()
+ {
+ try
+ {
+ Assert.Ignore("my message");
+ }
+ catch (IgnoreException ex)
+ {
+ Assert.AreEqual("my message", ex.Message);
+ }
+ }
+
+ [Test]
+ public void IgnoreWithUserMessage_OneArg()
+ {
+ try
+ {
+ Assert.Ignore("The number is {0}", 5);
+ }
+ catch (IgnoreException ex)
+ {
+ Assert.AreEqual("The number is 5", ex.Message);
+ }
+ }
+
+ [Test]
+ public void IgnoreWithUserMessage_ThreeArgs()
+ {
+ try
+ {
+ Assert.Ignore("The numbers are {0}, {1} and {2}", 1, 2, 3);
+ }
+ catch (IgnoreException ex)
+ {
+ Assert.AreEqual("The numbers are 1, 2 and 3", ex.Message);
+ }
+ }
+
+ [Test]
+ public void IgnoreWithUserMessage_ArrayOfArgs()
+ {
+ try
+ {
+ Assert.Ignore("The numbers are {0}, {1} and {2}", new object[] { 1, 2, 3 });
+ }
+ catch (IgnoreException ex)
+ {
+ Assert.AreEqual("The numbers are 1, 2 and 3", ex.Message);
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssertInconclusiveTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssertInconclusiveTests.cs
new file mode 100755
index 0000000..155d799
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssertInconclusiveTests.cs
@@ -0,0 +1,49 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AssertInconclusiveTests
+ {
+ [Test, ExpectedException(typeof(InconclusiveException))]
+ public void ThrowsInconclusiveException()
+ {
+ Assert.Inconclusive();
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage = "MESSAGE")]
+ public void ThrowsInconclusiveExceptionWithMessage()
+ {
+ Assert.Inconclusive("MESSAGE");
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage = "MESSAGE: 2+2=4")]
+ public void ThrowsInconclusiveExceptionWithMessageAndArgs()
+ {
+ Assert.Inconclusive("MESSAGE: {0}+{1}={2}", 2, 2, 4);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssertPassTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssertPassTests.cs
new file mode 100755
index 0000000..2736940
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssertPassTests.cs
@@ -0,0 +1,62 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AssertPassTests
+ {
+ [Test, ExpectedException(typeof(SuccessException))]
+ public void ThrowsSuccessException()
+ {
+ Assert.Pass();
+ }
+
+ [Test, ExpectedException(typeof(SuccessException), ExpectedMessage = "MESSAGE")]
+ public void ThrowsSuccessExceptionWithMessage()
+ {
+ Assert.Pass("MESSAGE");
+ }
+
+ [Test, ExpectedException(typeof(SuccessException), ExpectedMessage = "MESSAGE: 2+2=4")]
+ public void ThrowsSuccessExceptionWithMessageAndArgs()
+ {
+ Assert.Pass("MESSAGE: {0}+{1}={2}", 2, 2, 4);
+ }
+
+ [Test]
+ public void AssertPassReturnsSuccess()
+ {
+ Assert.Pass("This test is OK!");
+ }
+
+ [Test]
+ public void SubsequentFailureIsIrrelevant()
+ {
+ Assert.Pass("This test is OK!");
+ Assert.Fail("No it's NOT!");
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssertThatTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssertThatTests.cs
new file mode 100755
index 0000000..517308e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssertThatTests.cs
@@ -0,0 +1,279 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+using NUnit.Framework.Internal;
+using NUnit.TestData;
+using NUnit.TestUtilities;
+#if NET_4_5
+using System.Threading.Tasks;
+#endif
+
+#if CLR_2_0 || CLR_4_0
+using ActualValueDelegate = NUnit.Framework.Constraints.ActualValueDelegate<object>;
+#else
+using ActualValueDelegate = NUnit.Framework.Constraints.ActualValueDelegate;
+#endif
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AssertThatTests
+ {
+ [Test]
+ public void AssertionPasses_Boolean()
+ {
+ Assert.That(2 + 2 == 4);
+ }
+
+ [Test]
+ public void AssertionPasses_BooleanWithMessage()
+ {
+ Assert.That(2 + 2 == 4, "Not Equal");
+ }
+
+ [Test]
+ public void AssertionPasses_BooleanWithMessageAndArgs()
+ {
+ Assert.That(2 + 2 == 4, "Not Equal to {0}", 4);
+ }
+
+ [Test]
+ public void AssertionPasses_ActualAndConstraint()
+ {
+ Assert.That(2 + 2, Is.EqualTo(4));
+ }
+
+ [Test]
+ public void AssertionPasses_ActualAndConstraintWithMessage()
+ {
+ Assert.That(2 + 2, Is.EqualTo(4), "Should be 4");
+ }
+
+ [Test]
+ public void AssertionPasses_ActualAndConstraintWithMessageAndArgs()
+ {
+ Assert.That(2 + 2, Is.EqualTo(4), "Should be {0}", 4);
+ }
+
+ [Test]
+ public void AssertionPasses_ReferenceAndConstraint()
+ {
+ bool value = true;
+ Assert.That(ref value, Is.True);
+ }
+
+ [Test]
+ public void AssertionPasses_ReferenceAndConstraintWithMessage()
+ {
+ bool value = true;
+ Assert.That(ref value, Is.True, "Message");
+ }
+
+ [Test]
+ public void AssertionPasses_ReferenceAndConstraintWithMessageAndArgs()
+ {
+ bool value = true;
+ Assert.That(ref value, Is.True, "Message", 42);
+ }
+
+ [Test]
+ public void AssertionPasses_DelegateAndConstraint()
+ {
+ Assert.That(new ActualValueDelegate(ReturnsFour), Is.EqualTo(4));
+ }
+
+ [Test]
+ public void AssertionPasses_DelegateAndConstraintWithMessage()
+ {
+ Assert.That(new ActualValueDelegate(ReturnsFour), Is.EqualTo(4), "Message");
+ }
+
+ [Test]
+ public void AssertionPasses_DelegateAndConstraintWithMessageAndArgs()
+ {
+ Assert.That(new ActualValueDelegate(ReturnsFour), Is.EqualTo(4), "Should be {0}", 4);
+ }
+
+ private object ReturnsFour()
+ {
+ return 4;
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailureThrowsAssertionException_Boolean()
+ {
+ Assert.That(2 + 2 == 5);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "message", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_BooleanWithMessage()
+ {
+ Assert.That(2 + 2 == 5, "message");
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "got 5", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_BooleanWithMessageAndArgs()
+ {
+ Assert.That(2 + 2 == 5, "got {0}", 5);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailureThrowsAssertionException_ActualAndConstraint()
+ {
+ Assert.That(2 + 2, Is.EqualTo(5));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "Error", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_ActualAndConstraintWithMessage()
+ {
+ Assert.That(2 + 2, Is.EqualTo(5), "Error");
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "Should be 5", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_ActualAndConstraintWithMessageAndArgs()
+ {
+ Assert.That(2 + 2, Is.EqualTo(5), "Should be {0}", 5);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailureThrowsAssertionException_ReferenceAndConstraint()
+ {
+ bool value = false;
+ Assert.That(ref value, Is.True);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "message", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_ReferenceAndConstraintWithMessage()
+ {
+ bool value = false;
+ Assert.That(ref value, Is.True, "message");
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "message is 42", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_ReferenceAndConstraintWithMessageAndArgs()
+ {
+ bool value = false;
+ Assert.That(ref value, Is.True, "message is {0}", 42);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailureThrowsAssertionException_DelegateAndConstraint()
+ {
+ Assert.That(new ActualValueDelegate(ReturnsFive), Is.EqualTo(4));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "Error", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_DelegateAndConstraintWithMessage()
+ {
+ Assert.That(new ActualValueDelegate(ReturnsFive), Is.EqualTo(4), "Error");
+ }
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "Should be 4", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsAssertionException_DelegateAndConstraintWithMessageAndArgs()
+ {
+ Assert.That(new ActualValueDelegate(ReturnsFive), Is.EqualTo(4), "Should be {0}", 4);
+ }
+
+ [Test]
+ public void AssertionsAreCountedCorrectly()
+ {
+ TestResult result = TestBuilder.RunTestFixture(typeof(AssertCountFixture));
+
+ int totalCount = 0;
+ foreach (TestResult childResult in result.Children)
+ {
+ int expectedCount = childResult.Name == "ThreeAsserts" ? 3 : 1;
+ Assert.That(childResult.AssertCount, Is.EqualTo(expectedCount), "Bad count for {0}", childResult.Name);
+ totalCount += expectedCount;
+ }
+
+ Assert.That(result.AssertCount, Is.EqualTo(totalCount), "Fixture count is not correct");
+ }
+
+ private object ReturnsFive()
+ {
+ return 5;
+ }
+
+#if NET_4_5
+ [Test]
+ public void AssertThatSuccess()
+ {
+ Assert.That(async () => await One(), Is.EqualTo(1));
+ }
+
+ [Test]
+ public void AssertThatFailure()
+ {
+ var exception = Assert.Throws<AssertionException>(() =>
+ Assert.That(async () => await One(), Is.EqualTo(2)));
+ }
+
+ [Test]
+ public void AssertThatErrorTask()
+ {
+ var exception = Assert.Throws<InvalidOperationException>(() =>
+ Assert.That(async () => await ThrowExceptionTask(), Is.EqualTo(1)));
+
+ Assert.That(exception.StackTrace, Contains.Substring("ThrowExceptionTask"));
+ }
+
+ [Test]
+ public void AssertThatErrorGenericTask()
+ {
+ var exception = Assert.Throws<InvalidOperationException>(() =>
+ Assert.That(async () => await ThrowExceptionGenericTask(), Is.EqualTo(1)));
+
+ Assert.That(exception.StackTrace, Contains.Substring("ThrowExceptionGenericTask"));
+ }
+
+ [Test]
+ public void AssertThatErrorVoid()
+ {
+ var exception = Assert.Throws<InvalidOperationException>(() =>
+ Assert.That(async () => { await ThrowExceptionGenericTask(); }, Is.EqualTo(1)));
+
+ Assert.That(exception.StackTrace, Contains.Substring("ThrowExceptionGenericTask"));
+ }
+
+ private static Task<int> One()
+ {
+ return Task.Run(() => 1);
+ }
+
+ private static async Task<int> ThrowExceptionGenericTask()
+ {
+ await One();
+ throw new InvalidOperationException();
+ }
+
+ private static async Task ThrowExceptionTask()
+ {
+ await One();
+ throw new InvalidOperationException();
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssertThrowsTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssertThrowsTests.cs
new file mode 100755
index 0000000..222deed
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssertThrowsTests.cs
@@ -0,0 +1,164 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AssertThrowsTests
+ {
+ [Test]
+ public void CorrectExceptionThrown()
+ {
+ Assert.Throws(typeof(ArgumentException), new TestDelegate(TestDelegates.ThrowsArgumentException));
+
+#if CLR_2_0 || CLR_4_0
+ Assert.Throws(typeof(ArgumentException), TestDelegates.ThrowsArgumentException);
+
+ Assert.Throws(typeof(ArgumentException),
+ delegate { throw new ArgumentException(); });
+
+ Assert.Throws<ArgumentException>(
+ delegate { throw new ArgumentException(); });
+ Assert.Throws<ArgumentException>(TestDelegates.ThrowsArgumentException);
+
+ // Without cast, delegate is ambiguous before C# 3.0.
+ Assert.That((TestDelegate)delegate { throw new ArgumentException(); },
+ Throws.Exception.TypeOf<ArgumentException>() );
+ //Assert.Throws( Is.TypeOf(typeof(ArgumentException)),
+ // delegate { throw new ArgumentException(); } );
+#endif
+ }
+
+ [Test]
+ public void CorrectExceptionIsReturnedToMethod()
+ {
+ ArgumentException ex = Assert.Throws(typeof(ArgumentException),
+ new TestDelegate(TestDelegates.ThrowsArgumentException)) as ArgumentException;
+
+ Assert.IsNotNull(ex, "No ArgumentException thrown");
+ Assert.That(ex.Message, Is.StringStarting("myMessage"));
+#if !NETCF && !SILVERLIGHT
+ Assert.That(ex.ParamName, Is.EqualTo("myParam"));
+#endif
+
+#if CLR_2_0 || CLR_4_0
+ ex = Assert.Throws<ArgumentException>(
+ delegate { throw new ArgumentException("myMessage", "myParam"); }) as ArgumentException;
+
+ Assert.IsNotNull(ex, "No ArgumentException thrown");
+ Assert.That(ex.Message, Is.StringStarting("myMessage"));
+#if !NETCF && !SILVERLIGHT
+ Assert.That(ex.ParamName, Is.EqualTo("myParam"));
+#endif
+
+ ex = Assert.Throws(typeof(ArgumentException),
+ delegate { throw new ArgumentException("myMessage", "myParam"); } ) as ArgumentException;
+
+ Assert.IsNotNull(ex, "No ArgumentException thrown");
+ Assert.That(ex.Message, Is.StringStarting("myMessage"));
+#if !NETCF && !SILVERLIGHT
+ Assert.That(ex.ParamName, Is.EqualTo("myParam"));
+#endif
+
+ ex = Assert.Throws<ArgumentException>(TestDelegates.ThrowsArgumentException) as ArgumentException;
+
+ Assert.IsNotNull(ex, "No ArgumentException thrown");
+ Assert.That(ex.Message, Is.StringStarting("myMessage"));
+#if !NETCF && !SILVERLIGHT
+ Assert.That(ex.ParamName, Is.EqualTo("myParam"));
+#endif
+#endif
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void NoExceptionThrown()
+ {
+#if CLR_2_0 || CLR_4_0
+ ArgumentException ex = Assert.Throws<ArgumentException>(TestDelegates.ThrowsNothing);
+#else
+ Exception ex = Assert.Throws(typeof(ArgumentException), new TestDelegate(TestDelegates.ThrowsNothing));
+#endif
+ Assert.That(ex.Message, Is.EqualTo(
+ " Expected: <System.ArgumentException>" + Env.NewLine +
+ " But was: null" + Env.NewLine));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void UnrelatedExceptionThrown()
+ {
+#if CLR_2_0 || CLR_4_0
+ ArgumentException ex = Assert.Throws<ArgumentException>(TestDelegates.ThrowsCustomException);
+#else
+ ArgumentException ex = (ArgumentException)Assert.Throws(typeof(ArgumentException), new TestDelegate(TestDelegates.ThrowsCustomException));
+#endif
+ Assert.That(ex.Message, Is.StringStarting(
+ " Expected: <System.ArgumentException>" + Env.NewLine +
+ " But was: <System.ApplicationException> (my message)" + Env.NewLine));
+ Assert.That(ex.Message, Contains.Substring(" at "));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void BaseExceptionThrown()
+ {
+#if CLR_2_0 || CLR_4_0
+ ArgumentException ex = Assert.Throws<ArgumentException>(TestDelegates.ThrowsSystemException);
+#else
+ Exception ex = Assert.Throws(typeof(ArgumentException), new TestDelegate(TestDelegates.ThrowsSystemException));
+#endif
+ Assert.That(ex.Message, Is.StringStarting(
+ " Expected: <System.ArgumentException>" + Env.NewLine +
+ " But was: <NUnit.TestUtilities.TestDelegates+CustomException> (my message)" + Env.NewLine));
+ Assert.That(ex.Message, Contains.Substring(" at "));
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void DerivedExceptionThrown()
+ {
+#if CLR_2_0 || CLR_4_0
+ Exception ex = Assert.Throws<Exception>(TestDelegates.ThrowsArgumentException);
+#else
+ Exception ex = Assert.Throws(typeof(Exception), new TestDelegate(TestDelegates.ThrowsArgumentException));
+#endif
+ Assert.That(ex.Message, Is.StringStarting(
+ " Expected: <System.Exception>" + Env.NewLine +
+ " But was: <System.ArgumentException> (myMessage" + Env.NewLine +
+ "Parameter name: myParam)" + Env.NewLine));
+ Assert.That(ex.Message, Contains.Substring(" at "));
+ }
+
+ [Test]
+ public void DoesNotThrowSuceeds()
+ {
+ Assert.DoesNotThrow(new TestDelegate(TestDelegates.ThrowsNothing));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void DoesNotThrowFails()
+ {
+ Assert.DoesNotThrow(new TestDelegate(TestDelegates.ThrowsArgumentException));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AssumeThatTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AssumeThatTests.cs
new file mode 100755
index 0000000..8b9efdd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AssumeThatTests.cs
@@ -0,0 +1,236 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+#if NET_4_5
+using System.Threading.Tasks;
+#endif
+
+#if CLR_2_0 || CLR_4_0
+using ActualValueDelegate = NUnit.Framework.Constraints.ActualValueDelegate<object>;
+#else
+using ActualValueDelegate = NUnit.Framework.Constraints.ActualValueDelegate;
+#endif
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AssumeThatTests
+ {
+ [Test]
+ public void AssumptionPasses_Boolean()
+ {
+ Assume.That(2 + 2 == 4);
+ }
+
+ [Test]
+ public void AssumptionPasses_BooleanWithMessage()
+ {
+ Assume.That(2 + 2 == 4, "Not Equal");
+ }
+
+ [Test]
+ public void AssumptionPasses_BooleanWithMessageAndArgs()
+ {
+ Assume.That(2 + 2 == 4, "Not Equal to {0}", 4);
+ }
+
+ [Test]
+ public void AssumptionPasses_ActualAndConstraint()
+ {
+ Assume.That(2 + 2, Is.EqualTo(4));
+ }
+
+ [Test]
+ public void AssumptionPasses_ActualAndConstraintWithMessage()
+ {
+ Assume.That(2 + 2, Is.EqualTo(4), "Should be 4");
+ }
+
+ [Test]
+ public void AssumptionPasses_ActualAndConstraintWithMessageAndArgs()
+ {
+ Assume.That(2 + 2, Is.EqualTo(4), "Should be {0}", 4);
+ }
+
+ [Test]
+ public void AssumptionPasses_ReferenceAndConstraint()
+ {
+ bool value = true;
+ Assume.That(ref value, Is.True);
+ }
+
+ [Test]
+ public void AssumptionPasses_ReferenceAndConstraintWithMessage()
+ {
+ bool value = true;
+ Assume.That(ref value, Is.True, "Message");
+ }
+
+ [Test]
+ public void AssumptionPasses_ReferenceAndConstraintWithMessageAndArgs()
+ {
+ bool value = true;
+ Assume.That(ref value, Is.True, "Message", 42);
+ }
+
+ [Test]
+ public void AssumptionPasses_DelegateAndConstraint()
+ {
+ Assume.That(new ActualValueDelegate(ReturnsFour), Is.EqualTo(4));
+ }
+
+ [Test]
+ public void AssumptionPasses_DelegateAndConstraintWithMessage()
+ {
+ Assume.That(new ActualValueDelegate(ReturnsFour), Is.EqualTo(4), "Message");
+ }
+
+ [Test]
+ public void AssumptionPasses_DelegateAndConstraintWithMessageAndArgs()
+ {
+ Assume.That(new ActualValueDelegate(ReturnsFour), Is.EqualTo(4), "Should be {0}", 4);
+ }
+
+ private object ReturnsFour()
+ {
+ return 4;
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException))]
+ public void FailureThrowsInconclusiveException_Boolean()
+ {
+ Assume.That(2 + 2 == 5);
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage="message", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_BooleanWithMessage()
+ {
+ Assume.That(2 + 2 == 5, "message");
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage= "got 5", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_BooleanWithMessageAndArgs()
+ {
+ Assume.That(2 + 2 == 5, "got {0}", 5);
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException))]
+ public void FailureThrowsInconclusiveException_ActualAndConstraint()
+ {
+ Assume.That(2 + 2, Is.EqualTo(5));
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage="Error", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_ActualAndConstraintWithMessage()
+ {
+ Assume.That(2 + 2, Is.EqualTo(5), "Error");
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage="Should be 5", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_ActualAndConstraintWithMessageAndArgs()
+ {
+ Assume.That(2 + 2, Is.EqualTo(5), "Should be {0}", 5);
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException))]
+ public void FailureThrowsInconclusiveException_ReferenceAndConstraint()
+ {
+ bool value = false;
+ Assume.That(ref value, Is.True);
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage="message", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_ReferenceAndConstraintWithMessage()
+ {
+ bool value = false;
+ Assume.That(ref value, Is.True, "message");
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage="message is 42", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_ReferenceAndConstraintWithMessageAndArgs()
+ {
+ bool value = false;
+ Assume.That(ref value, Is.True, "message is {0}", 42);
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException))]
+ public void FailureThrowsInconclusiveException_DelegateAndConstraint()
+ {
+ Assume.That(new ActualValueDelegate(ReturnsFive), Is.EqualTo(4));
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage = "Error", MatchType = MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_DelegateAndConstraintWithMessage()
+ {
+ Assume.That(new ActualValueDelegate(ReturnsFive), Is.EqualTo(4), "Error");
+ }
+
+ [Test, ExpectedException(typeof(InconclusiveException), ExpectedMessage="Should be 4", MatchType=MessageMatch.Contains)]
+ public void FailureThrowsInconclusiveException_DelegateAndConstraintWithMessageAndArgs()
+ {
+ Assume.That(new ActualValueDelegate(ReturnsFive), Is.EqualTo(4), "Should be {0}", 4);
+ }
+
+ private object ReturnsFive()
+ {
+ return 5;
+ }
+
+#if NET_4_5
+ [Test]
+ public void AssumeThatSuccess()
+ {
+ Assume.That(async () => await One(), Is.EqualTo(1));
+ }
+
+ [Test]
+ public void AssumeThatFailure()
+ {
+ var exception = Assert.Throws<InconclusiveException>(() =>
+ Assume.That(async () => await One(), Is.EqualTo(2)));
+ }
+
+ [Test]
+ public void AssumeThatError()
+ {
+ var exception = Assert.Throws<InvalidOperationException>(() =>
+ Assume.That(async () => await ThrowExceptionGenericTask(), Is.EqualTo(1)));
+
+ Assert.That(exception.StackTrace, Contains.Substring("ThrowExceptionGenericTask"));
+ }
+
+ private static Task<int> One()
+ {
+ return Task.Run(() => 1);
+ }
+
+ private static async Task<int> ThrowExceptionGenericTask()
+ {
+ await One();
+ throw new InvalidOperationException();
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/AsyncThrowsTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/AsyncThrowsTests.cs
new file mode 100755
index 0000000..c194df8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/AsyncThrowsTests.cs
@@ -0,0 +1,185 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if NET_4_5
+using System;
+using System.Threading.Tasks;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class AsyncThrowsTests
+ {
+ private readonly TestDelegate _noThrowsVoid = new TestDelegate(async () => await Task.Yield());
+ private readonly ActualValueDelegate<Task> _noThrowsAsyncTask = async () => await Task.Yield();
+ private readonly ActualValueDelegate<Task<int>> _noThrowsAsyncGenericTask = async () => await ReturnOne();
+ private readonly TestDelegate _throwsAsyncVoid = new TestDelegate(async () => await ThrowAsyncTask());
+ private readonly TestDelegate _throwsSyncVoid = new TestDelegate(async () => { throw new InvalidOperationException(); });
+ private readonly ActualValueDelegate<Task> _throwsAsyncTask = async () => await ThrowAsyncTask();
+ private readonly ActualValueDelegate<Task<int>> _throwsAsyncGenericTask = async () => await ThrowAsyncGenericTask();
+
+ private static ThrowsConstraint ThrowsInvalidOperationExceptionConstraint
+ {
+ get { return new ThrowsConstraint(new ExactTypeConstraint(typeof(InvalidOperationException))); }
+ }
+
+ [Test]
+ public void ThrowsConstraintVoid()
+ {
+ Assert.IsTrue(ThrowsInvalidOperationExceptionConstraint.Matches(_throwsAsyncVoid));
+ }
+
+ [Test]
+ public void ThrowsConstraintVoidRunSynchronously()
+ {
+ Assert.IsTrue(ThrowsInvalidOperationExceptionConstraint.Matches(_throwsSyncVoid));
+ }
+
+ [Test]
+ public void ThrowsConstraintAsyncTask()
+ {
+ Assert.IsTrue(ThrowsInvalidOperationExceptionConstraint.Matches(_throwsAsyncTask));
+ }
+
+ [Test]
+ public void ThrowsConstraintAsyncGenericTask()
+ {
+ Assert.IsTrue(ThrowsInvalidOperationExceptionConstraint.Matches(_throwsAsyncGenericTask));
+ }
+
+ [Test]
+ public void ThrowsNothingConstraintVoidSuccess()
+ {
+ Assert.IsTrue(new ThrowsNothingConstraint().Matches(_noThrowsVoid));
+ }
+
+ [Test]
+ public void ThrowsNothingConstraintVoidFailure()
+ {
+ Assert.IsFalse(new ThrowsNothingConstraint().Matches(_throwsAsyncVoid));
+ }
+
+ [Test]
+ public void ThrowsNothingConstraintTaskVoidSuccess()
+ {
+ Assert.IsTrue(new ThrowsNothingConstraint().Matches(_noThrowsAsyncTask));
+ }
+
+ [Test]
+ public void ThrowsNothingConstraintTaskFailure()
+ {
+ Assert.IsFalse(new ThrowsNothingConstraint().Matches(_throwsAsyncTask));
+ }
+
+ [Test]
+ public void AssertThrowsVoid()
+ {
+ Assert.Throws(typeof(InvalidOperationException), _throwsAsyncVoid);
+ }
+
+ [Test]
+ public void AssertThatThrowsVoid()
+ {
+ Assert.That(_throwsAsyncVoid, Throws.TypeOf<InvalidOperationException>());
+ }
+
+ [Test]
+ public void AssertThatThrowsTask()
+ {
+ Assert.That(_throwsAsyncTask, Throws.TypeOf<InvalidOperationException>());
+ }
+
+ [Test]
+ public void AssertThatThrowsGenericTask()
+ {
+ Assert.That(_throwsAsyncGenericTask, Throws.TypeOf<InvalidOperationException>());
+ }
+
+ [Test]
+ public void AssertThatThrowsNothingVoidSuccess()
+ {
+ Assert.That(_noThrowsVoid, Throws.Nothing);
+ }
+
+ [Test]
+ public void AssertThatThrowsNothingTaskSuccess()
+ {
+ Assert.That(_noThrowsAsyncTask, Throws.Nothing);
+ }
+
+ [Test]
+ public void AssertThatThrowsNothingGenericTaskSuccess()
+ {
+ Assert.That(_noThrowsAsyncGenericTask, Throws.Nothing);
+ }
+
+ [Test]
+ public void AssertThatThrowsNothingVoidFailure()
+ {
+ Assert.Throws<AssertionException>(() => Assert.That(_throwsAsyncVoid, Throws.Nothing));
+ }
+
+ [Test]
+ public void AssertThatThrowsNothingTaskFailure()
+ {
+ Assert.Throws<AssertionException>(() => Assert.That(_throwsAsyncTask, Throws.Nothing));
+ }
+
+ [Test]
+ public void AssertThatThrowsNothingGenericTaskFailure()
+ {
+ Assert.Throws<AssertionException>(() => Assert.That(_throwsAsyncGenericTask, Throws.Nothing));
+ }
+
+ [Test]
+ public void AssertThrowsAsync()
+ {
+ Assert.Throws<InvalidOperationException>(_throwsAsyncVoid);
+ }
+
+ [Test]
+ public void AssertThrowsSync()
+ {
+ Assert.Throws<InvalidOperationException>(_throwsSyncVoid);
+ }
+
+ private static async Task ThrowAsyncTask()
+ {
+ await ReturnOne();
+ throw new InvalidOperationException();
+ }
+
+ private static async Task<int> ThrowAsyncGenericTask()
+ {
+ await ThrowAsyncTask();
+ return await ReturnOne();
+ }
+
+ private static Task<int> ReturnOne()
+ {
+ return Task.Run(() => 1);
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/CollectionTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/CollectionTests.cs
new file mode 100755
index 0000000..d8a6ad2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/CollectionTests.cs
@@ -0,0 +1,56 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+using Env = NUnit.Env;
+using NUnit.TestUtilities;
+
+namespace NUnitLite.Tests
+{
+ [TestFixture]
+ class CollectionTests : IExpectException
+ {
+ [Test]
+ public void CanMatchTwoCollections()
+ {
+ ICollection expected = new SimpleObjectCollection(1, 2, 3);
+ ICollection actual = new SimpleObjectCollection(1, 2, 3);
+
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ [Test]
+ public void CanMatchAnArrayWithACollection()
+ {
+ ICollection collection = new SimpleObjectCollection(1, 2, 3);
+ int[] array = new int[] { 1, 2, 3 };
+
+ Assert.That(collection, Is.EqualTo(array));
+ Assert.That(array, Is.EqualTo(collection));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailureMatchingArrayAndCollection()
+ {
+ int[] expected = new int[] { 1, 2, 3 };
+ ICollection actual = new SimpleObjectCollection(1, 5, 3);
+
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+
+ public void HandleException(Exception ex)
+ {
+ Assert.That(ex.Message, Is.EqualTo(
+ " Expected is <System.Int32[3]>, actual is <NUnit.TestUtilities.SimpleObjectCollection> with 3 elements" + Env.NewLine +
+ " Values differ at index [1]" + Env.NewLine +
+ TextMessageWriter.Pfx_Expected + "2" + Env.NewLine +
+ TextMessageWriter.Pfx_Actual + "5" + Env.NewLine));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/ConditionAssertTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/ConditionAssertTests.cs
new file mode 100755
index 0000000..876746e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/ConditionAssertTests.cs
@@ -0,0 +1,224 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using System.Threading;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class ConditionAssertTests : MessageChecker
+ {
+ [Test]
+ public void IsTrue()
+ {
+ Assert.IsTrue(true);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void IsTrueFails()
+ {
+ expectedMessage =
+ " Expected: True" + Env.NewLine +
+ " But was: False" + Env.NewLine;
+ Assert.IsTrue(false);
+ }
+
+ [Test]
+ public void IsFalse()
+ {
+ Assert.IsFalse(false);
+ }
+
+ [Test]
+ [ExpectedException(typeof(AssertionException))]
+ public void IsFalseFails()
+ {
+ expectedMessage =
+ " Expected: False" + Env.NewLine +
+ " But was: True" + Env.NewLine;
+ Assert.IsFalse(true);
+ }
+
+ [Test]
+ public void IsNull()
+ {
+ Assert.IsNull(null);
+ }
+
+ [Test]
+ [ExpectedException(typeof(AssertionException))]
+ public void IsNullFails()
+ {
+ String s1 = "S1";
+ expectedMessage =
+ " Expected: null" + Env.NewLine +
+ " But was: \"S1\"" + Env.NewLine;
+ Assert.IsNull(s1);
+ }
+
+ [Test]
+ public void IsNotNull()
+ {
+ String s1 = "S1";
+ Assert.IsNotNull(s1);
+ }
+
+ [Test]
+ [ExpectedException(typeof(AssertionException))]
+ public void IsNotNullFails()
+ {
+ expectedMessage =
+ " Expected: not null" + Env.NewLine +
+ " But was: null" + Env.NewLine;
+ Assert.IsNotNull(null);
+ }
+
+#if !NUNITLITE
+ [Test]
+ public void IsNaN()
+ {
+ Assert.IsNaN(double.NaN);
+ }
+
+ [Test]
+ [ExpectedException(typeof(AssertionException))]
+ public void IsNaNFails()
+ {
+ expectedMessage =
+ " Expected: NaN" + Env.NewLine +
+ " But was: 10.0d" + Env.NewLine;
+ Assert.IsNaN(10.0);
+ }
+
+ [Test]
+ public void IsEmpty()
+ {
+ Assert.IsEmpty( "", "Failed on empty String" );
+ Assert.IsEmpty( new int[0], "Failed on empty Array" );
+ Assert.IsEmpty( new ArrayList(), "Failed on empty ArrayList" );
+ Assert.IsEmpty( new Hashtable(), "Failed on empty Hashtable" );
+ Assert.IsEmpty( (IEnumerable)new int[0], "Failed on empty IEnumerable" );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsEmptyFailsOnString()
+ {
+ expectedMessage =
+ " Expected: <empty>" + Env.NewLine +
+ " But was: \"Hi!\"" + Env.NewLine;
+ Assert.IsEmpty( "Hi!" );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsEmptyFailsOnNullString()
+ {
+ expectedMessage =
+ " Expected: <empty>" + Env.NewLine +
+ " But was: null" + Env.NewLine;
+ Assert.IsEmpty( (string)null );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsEmptyFailsOnNonEmptyArray()
+ {
+ expectedMessage =
+ " Expected: <empty>" + Env.NewLine +
+ " But was: < 1, 2, 3 >" + Env.NewLine;
+ Assert.IsEmpty( new int[] { 1, 2, 3 } );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsEmptyFailsOnNonEmptyIEnumerable()
+ {
+ expectedMessage =
+ " Expected: <empty>" + Environment.NewLine +
+ " But was: < 1, 2, 3 >" + Environment.NewLine;
+ Assert.IsEmpty((IEnumerable)new int[] { 1, 2, 3 });
+ }
+
+ [Test]
+ public void IsNotEmpty()
+ {
+ int[] array = new int[] { 1, 2, 3 };
+ ArrayList list = new ArrayList( array );
+ Hashtable hash = new Hashtable();
+ hash.Add( "array", array );
+
+ Assert.IsNotEmpty( "Hi!", "Failed on String" );
+ Assert.IsNotEmpty( array, "Failed on Array" );
+ Assert.IsNotEmpty( list, "Failed on ArrayList" );
+ Assert.IsNotEmpty( hash, "Failed on Hashtable" );
+ Assert.IsNotEmpty( (IEnumerable)array, "Failed on IEnumerable" );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsNotEmptyFailsOnEmptyString()
+ {
+ expectedMessage =
+ " Expected: not <empty>" + Env.NewLine +
+ " But was: <string.Empty>" + Env.NewLine;
+ Assert.IsNotEmpty( "" );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsNotEmptyFailsOnEmptyArray()
+ {
+ expectedMessage =
+ " Expected: not <empty>" + Env.NewLine +
+ " But was: <empty>" + Env.NewLine;
+ Assert.IsNotEmpty( new int[0] );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsNotEmptyFailsOnEmptyArrayList()
+ {
+ expectedMessage =
+ " Expected: not <empty>" + Env.NewLine +
+ " But was: <empty>" + Env.NewLine;
+ Assert.IsNotEmpty( new ArrayList() );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsNotEmptyFailsOnEmptyHashTable()
+ {
+ expectedMessage =
+ " Expected: not <empty>" + Env.NewLine +
+ " But was: <empty>" + Env.NewLine;
+ Assert.IsNotEmpty( new Hashtable() );
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsNotEmptyFailsOnEmptyIEnumerable()
+ {
+ expectedMessage =
+ " Expected: not <empty>" + Environment.NewLine +
+ " But was: <empty>" + Environment.NewLine;
+ Assert.IsNotEmpty((IEnumerable)new int[0]);
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/EqualsFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/EqualsFixture.cs
new file mode 100755
index 0000000..6681126
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/EqualsFixture.cs
@@ -0,0 +1,568 @@
+// ***********************************************************************
+// Copyright (c) 2004 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Globalization;
+using System.Threading;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class EqualsFixture : MessageChecker
+ {
+ [Test]
+ public void Equals()
+ {
+ string nunitString = "Hello NUnit";
+ string expected = nunitString;
+ string actual = nunitString;
+
+ Assert.IsTrue(expected == actual);
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void EqualsNull()
+ {
+ Assert.AreEqual(null, null);
+ }
+
+ [Test]
+ public void Bug575936Int32Int64Comparison()
+ {
+ long l64 = 0;
+ int i32 = 0;
+ Assert.AreEqual(i32, l64);
+ }
+
+ [Test]
+ public void IntegerLongComparison()
+ {
+ Assert.AreEqual(1, 1L);
+ Assert.AreEqual(1L, 1);
+ }
+
+ [Test]
+ public void IntegerEquals()
+ {
+ int val = 42;
+ Assert.AreEqual(val, 42);
+ }
+
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void EqualsFail()
+ {
+ string junitString = "Goodbye JUnit";
+ string expected = "Hello NUnit";
+
+ expectedMessage =
+ " Expected string length 11 but was 13. Strings differ at index 0." + Env.NewLine +
+ " Expected: \"Hello NUnit\"" + Env.NewLine +
+ " But was: \"Goodbye JUnit\"" + Env.NewLine +
+ " -----------^" + Env.NewLine;
+ Assert.AreEqual(expected, junitString);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void EqualsNaNFails()
+ {
+ expectedMessage =
+ " Expected: 1.234d +/- 0.0d" + Env.NewLine +
+ " But was: NaN" + Env.NewLine;
+ Assert.AreEqual(1.234, Double.NaN, 0.0);
+ }
+
+
+ [Test]
+ [ExpectedException(typeof(AssertionException))]
+ public void NanEqualsFails()
+ {
+ expectedMessage =
+ " Expected: NaN" + Env.NewLine +
+ " But was: 1.234d" + Env.NewLine;
+ Assert.AreEqual(Double.NaN, 1.234, 0.0);
+ }
+
+ [Test]
+ public void NanEqualsNaNSucceeds()
+ {
+ Assert.AreEqual(Double.NaN, Double.NaN, 0.0);
+ }
+
+ [Test]
+ public void NegInfinityEqualsInfinity()
+ {
+ Assert.AreEqual(Double.NegativeInfinity, Double.NegativeInfinity, 0.0);
+ }
+
+ [Test]
+ public void PosInfinityEqualsInfinity()
+ {
+ Assert.AreEqual(Double.PositiveInfinity, Double.PositiveInfinity, 0.0);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void PosInfinityNotEquals()
+ {
+ expectedMessage =
+ " Expected: Infinity" + Env.NewLine +
+ " But was: 1.23d" + Env.NewLine;
+ Assert.AreEqual(Double.PositiveInfinity, 1.23, 0.0);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void PosInfinityNotEqualsNegInfinity()
+ {
+ expectedMessage =
+ " Expected: Infinity" + Env.NewLine +
+ " But was: -Infinity" + Env.NewLine;
+ Assert.AreEqual(Double.PositiveInfinity, Double.NegativeInfinity, 0.0);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void SinglePosInfinityNotEqualsNegInfinity()
+ {
+ expectedMessage =
+ " Expected: Infinity" + Env.NewLine +
+ " But was: -Infinity" + Env.NewLine;
+ Assert.AreEqual(float.PositiveInfinity, float.NegativeInfinity, (float)0.0);
+ }
+
+#if !NETCF
+ [Test,ExpectedException(typeof(InvalidOperationException))]
+ public void EqualsThrowsException()
+ {
+ object o = new object();
+ Assert.Equals(o, o);
+ }
+
+ [Test,ExpectedException(typeof(InvalidOperationException))]
+ public void ReferenceEqualsThrowsException()
+ {
+ object o = new object();
+ Assert.ReferenceEquals(o, o);
+ }
+#endif
+
+ [Test]
+ public void Float()
+ {
+ float val = (float)1.0;
+ float expected = val;
+ float actual = val;
+
+ Assert.IsTrue(expected == actual);
+ Assert.AreEqual(expected, actual, (float)0.0);
+ }
+
+ [Test]
+ public void Byte()
+ {
+ byte val = 1;
+ byte expected = val;
+ byte actual = val;
+
+ Assert.IsTrue(expected == actual);
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void String()
+ {
+ string s1 = "test";
+ string s2 = new System.Text.StringBuilder(s1).ToString();
+
+ Assert.IsTrue(s1.Equals(s2));
+ Assert.AreEqual(s1,s2);
+ }
+
+ [Test]
+ public void Short()
+ {
+ short val = 1;
+ short expected = val;
+ short actual = val;
+
+ Assert.IsTrue(expected == actual);
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void Int()
+ {
+ int val = 1;
+ int expected = val;
+ int actual = val;
+
+ Assert.IsTrue(expected == actual);
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void UInt()
+ {
+ uint val = 1;
+ uint expected = val;
+ uint actual = val;
+
+ Assert.IsTrue(expected == actual);
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void Decimal()
+ {
+ decimal expected = 100m;
+ decimal actual = 100.0m;
+ int integer = 100;
+
+ Assert.IsTrue( expected == actual );
+ Assert.AreEqual(expected, actual);
+ Assert.IsTrue(expected == integer);
+ Assert.AreEqual(expected, integer);
+ Assert.IsTrue(actual == integer);
+ Assert.AreEqual(actual, integer);
+ }
+
+
+
+ /// <summary>
+ /// Checks to see that a value comparison works with all types.
+ /// Current version has problems when value is the same but the
+ /// types are different...C# is not like Java, and doesn't automatically
+ /// perform value type conversion to simplify this type of comparison.
+ ///
+ /// Related to Bug575936Int32Int64Comparison, but covers all numeric
+ /// types.
+ /// </summary>
+ [Test]
+ public void EqualsSameTypes()
+ {
+ byte b1 = 35;
+ sbyte sb2 = 35;
+ decimal d4 = 35;
+ double d5 = 35;
+ float f6 = 35;
+ int i7 = 35;
+ uint u8 = 35;
+ long l9 = 35;
+ short s10 = 35;
+ ushort us11 = 35;
+
+ System.Byte b12 = 35;
+ System.SByte sb13 = 35;
+ System.Decimal d14 = 35;
+ System.Double d15 = 35;
+ System.Single s16 = 35;
+ System.Int32 i17 = 35;
+ System.UInt32 ui18 = 35;
+ System.Int64 i19 = 35;
+ System.UInt64 ui20 = 35;
+ System.Int16 i21 = 35;
+ System.UInt16 i22 = 35;
+
+ Assert.AreEqual(35, b1);
+ Assert.AreEqual(35, sb2);
+ Assert.AreEqual(35, d4);
+ Assert.AreEqual(35, d5);
+ Assert.AreEqual(35, f6);
+ Assert.AreEqual(35, i7);
+ Assert.AreEqual(35, u8);
+ Assert.AreEqual(35, l9);
+ Assert.AreEqual(35, s10);
+ Assert.AreEqual(35, us11);
+
+ Assert.AreEqual( 35, b12 );
+ Assert.AreEqual( 35, sb13 );
+ Assert.AreEqual( 35, d14 );
+ Assert.AreEqual( 35, d15 );
+ Assert.AreEqual( 35, s16 );
+ Assert.AreEqual( 35, i17 );
+ Assert.AreEqual( 35, ui18 );
+ Assert.AreEqual( 35, i19 );
+ Assert.AreEqual( 35, ui20 );
+ Assert.AreEqual( 35, i21 );
+ Assert.AreEqual( 35, i22 );
+
+#if CLR_2_0 || CLR_4_0
+ byte? b23 = 35;
+ sbyte? sb24 = 35;
+ decimal? d25 = 35;
+ double? d26 = 35;
+ float? f27 = 35;
+ int? i28 = 35;
+ uint? u29 = 35;
+ long? l30 = 35;
+ short? s31 = 35;
+ ushort? us32 = 35;
+
+ Assert.AreEqual(35, b23);
+ Assert.AreEqual(35, sb24);
+ Assert.AreEqual(35, d25);
+ Assert.AreEqual(35, d26);
+ Assert.AreEqual(35, f27);
+ Assert.AreEqual(35, i28);
+ Assert.AreEqual(35, u29);
+ Assert.AreEqual(35, l30);
+ Assert.AreEqual(35, s31);
+ Assert.AreEqual(35, us32);
+#endif
+ }
+
+ [Test]
+ public void EnumsEqual()
+ {
+ MyEnum actual = MyEnum.a;
+ Assert.AreEqual( MyEnum.a, actual );
+ }
+
+ [Test, ExpectedException( typeof(AssertionException) )]
+ public void EnumsNotEqual()
+ {
+ MyEnum actual = MyEnum.a;
+ expectedMessage =
+ " Expected: c" + Env.NewLine +
+ " But was: a" + Env.NewLine;
+ Assert.AreEqual( MyEnum.c, actual );
+ }
+
+ [Test]
+ public void DateTimeEqual()
+ {
+ DateTime dt1 = new DateTime( 2005, 6, 1, 7, 0, 0 );
+ DateTime dt2 = new DateTime( 2005, 6, 1, 0, 0, 0 ) + TimeSpan.FromHours( 7.0 );
+ Assert.AreEqual( dt1, dt2 );
+ }
+
+ [Test, ExpectedException( typeof (AssertionException) )]
+ public void DateTimeNotEqual()
+ {
+ DateTime dt1 = new DateTime( 2005, 6, 1, 7, 0, 0 );
+ DateTime dt2 = new DateTime( 2005, 6, 1, 0, 0, 0 );
+ expectedMessage =
+ " Expected: 2005-06-01 07:00:00.000" + Env.NewLine +
+ " But was: 2005-06-01 00:00:00.000" + Env.NewLine;
+ Assert.AreEqual(dt1, dt2);
+ }
+
+ private enum MyEnum
+ {
+ a, b, c
+ }
+
+ [Test]
+ public void DoubleNotEqualMessageDisplaysAllDigits()
+ {
+ string message = "";
+
+ try
+ {
+ double d1 = 36.1;
+ double d2 = 36.099999999999994;
+ Assert.AreEqual( d1, d2 );
+ }
+ catch(AssertionException ex)
+ {
+ message = ex.Message;
+ }
+
+ if ( message == "" )
+ Assert.Fail( "Should have thrown an AssertionException" );
+
+ int i = message.IndexOf('3');
+ int j = message.IndexOf( 'd', i );
+ string expected = message.Substring( i, j - i + 1 );
+ i = message.IndexOf( '3', j );
+ j = message.IndexOf( 'd', i );
+ string actual = message.Substring( i , j - i + 1 );
+ Assert.AreNotEqual( expected, actual );
+ }
+
+ [Test]
+ public void FloatNotEqualMessageDisplaysAllDigits()
+ {
+ string message = "";
+
+ try
+ {
+ float f1 = 36.125F;
+ float f2 = 36.125004F;
+ Assert.AreEqual( f1, f2 );
+ }
+ catch(AssertionException ex)
+ {
+ message = ex.Message;
+ }
+
+ if ( message == "" )
+ Assert.Fail( "Should have thrown an AssertionException" );
+
+ int i = message.IndexOf( '3' );
+ int j = message.IndexOf( 'f', i );
+ string expected = message.Substring( i, j - i + 1 );
+ i = message.IndexOf( '3', j );
+ j = message.IndexOf( 'f', i );
+ string actual = message.Substring( i, j - i + 1 );
+ Assert.AreNotEqual( expected, actual );
+ }
+
+ [Test]
+ public void DoubleNotEqualMessageDisplaysTolerance()
+ {
+ string message = "";
+
+ try
+ {
+ double d1 = 0.15;
+ double d2 = 0.12;
+ double tol = 0.005;
+ Assert.AreEqual(d1, d2, tol);
+ }
+ catch (AssertionException ex)
+ {
+ message = ex.Message;
+ }
+
+ if (message == "")
+ Assert.Fail("Should have thrown an AssertionException");
+
+ Assert.That(message, Contains.Substring("+/- 0.005"));
+ }
+
+ [Test]
+ public void FloatNotEqualMessageDisplaysTolerance()
+ {
+ string message = "";
+
+ try
+ {
+ float f1 = 0.15F;
+ float f2 = 0.12F;
+ float tol = 0.001F;
+ Assert.AreEqual( f1, f2, tol );
+ }
+ catch( AssertionException ex )
+ {
+ message = ex.Message;
+ }
+
+ if ( message == "" )
+ Assert.Fail( "Should have thrown an AssertionException" );
+
+ Assert.That(message, Contains.Substring( "+/- 0.001"));
+ }
+
+ [Test]
+ public void DoubleNotEqualMessageDisplaysDefaultTolerance()
+ {
+ string message = "";
+ GlobalSettings.DefaultFloatingPointTolerance = 0.005d;
+
+ try
+ {
+ double d1 = 0.15;
+ double d2 = 0.12;
+ Assert.AreEqual(d1, d2);
+ }
+ catch (AssertionException ex)
+ {
+ message = ex.Message;
+ }
+ finally
+ {
+ GlobalSettings.DefaultFloatingPointTolerance = 0.0d;
+ }
+
+ if (message == "")
+ Assert.Fail("Should have thrown an AssertionException");
+
+ Assert.That(message, Contains.Substring("+/- 0.005"));
+ }
+
+ [Test]
+ public void DoubleNotEqualWithNanDoesNotDisplayDefaultTolerance()
+ {
+ string message = "";
+ GlobalSettings.DefaultFloatingPointTolerance = 0.005d;
+
+ try
+ {
+ double d1 = double.NaN;
+ double d2 = 0.12;
+ Assert.AreEqual(d1, d2);
+ }
+ catch (AssertionException ex)
+ {
+ message = ex.Message;
+ }
+ finally
+ {
+ GlobalSettings.DefaultFloatingPointTolerance = 0.0d;
+ }
+
+ if (message == "")
+ Assert.Fail("Should have thrown an AssertionException");
+
+ Assert.That(message.IndexOf("+/-") == -1);
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ [Test]
+ public void IEquatableSuccess_OldSyntax()
+ {
+ IntEquatable a = new IntEquatable(1);
+
+ Assert.AreEqual(1, a);
+ Assert.AreEqual(a, 1);
+ }
+
+ [Test]
+ public void IEquatableSuccess_ConstraintSyntax()
+ {
+ IntEquatable a = new IntEquatable(1);
+
+ Assert.That(a, Is.EqualTo(1));
+ Assert.That(1, Is.EqualTo(a));
+ }
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public class IntEquatable : IEquatable<int>
+ {
+ private int i;
+
+ public IntEquatable(int i)
+ {
+ this.i = i;
+ }
+
+ public bool Equals(int other)
+ {
+ return i.Equals(other);
+ }
+ }
+#endif
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/MessageChecker.cs b/NUnitLite-0.9.0/src/tests/Assertions/MessageChecker.cs
new file mode 100755
index 0000000..dc8cf05
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/MessageChecker.cs
@@ -0,0 +1,70 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Assertions
+{
+ /// <summary>
+ /// MessageCheckingTest is an abstract base for tests
+ /// that check for an expected message in the exception
+ /// handler.
+ /// </summary>
+ public abstract class MessageChecker : IExpectException
+ {
+ protected string expectedMessage;
+ protected MessageMatch matchType = MessageMatch.Exact;
+ protected readonly string NL = NUnit.Env.NewLine;
+
+ [SetUp]
+ public void SetUp()
+ {
+ expectedMessage = null;
+ }
+
+ public void HandleException( Exception ex )
+ {
+ if ( expectedMessage != null )
+ {
+ switch(matchType)
+ {
+ default:
+ case MessageMatch.Exact:
+ Assert.AreEqual( expectedMessage, ex.Message );
+ break;
+ case MessageMatch.Contains:
+ Assert.That(ex.Message, Is.StringContaining(expectedMessage));
+ break;
+ case MessageMatch.StartsWith:
+ Assert.That(ex.Message, Is.StringStarting(expectedMessage));
+ break;
+#if !NETCF
+ case MessageMatch.Regex:
+ Assert.That(ex.Message, Is.StringMatching(expectedMessage));
+ break;
+#endif
+ }
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/NotEqualFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/NotEqualFixture.cs
new file mode 100755
index 0000000..72c67c8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/NotEqualFixture.cs
@@ -0,0 +1,134 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class NotEqualFixture : MessageChecker
+ {
+ [Test]
+ public void NotEqual()
+ {
+ Assert.AreNotEqual( 5, 3 );
+ }
+
+ [Test, ExpectedException( typeof( AssertionException ) )]
+ public void NotEqualFails()
+ {
+ expectedMessage =
+ " Expected: not 5" + Env.NewLine +
+ " But was: 5" + Env.NewLine;
+ Assert.AreNotEqual( 5, 5 );
+ }
+
+ [Test]
+ public void NullNotEqualToNonNull()
+ {
+ Assert.AreNotEqual( null, 3 );
+ }
+
+ [Test, ExpectedException( typeof( AssertionException ) )]
+ public void NullEqualsNull()
+ {
+ expectedMessage =
+ " Expected: not null" + Env.NewLine +
+ " But was: null" + Env.NewLine;
+ Assert.AreNotEqual( null, null );
+ }
+
+ [Test]
+ public void ArraysNotEqual()
+ {
+ Assert.AreNotEqual( new object[] { 1, 2, 3 }, new object[] { 1, 3, 2 } );
+ }
+
+ [Test, ExpectedException( typeof( AssertionException ) )]
+ public void ArraysNotEqualFails()
+ {
+ expectedMessage =
+ " Expected: not < 1, 2, 3 >" + Env.NewLine +
+ " But was: < 1, 2, 3 >" + Env.NewLine;
+ Assert.AreNotEqual( new object[] { 1, 2, 3 }, new object[] { 1, 2, 3 } );
+ }
+
+ [Test]
+ public void UInt()
+ {
+ uint u1 = 5;
+ uint u2 = 8;
+ Assert.AreNotEqual( u1, u2 );
+ }
+
+ [Test]
+ public void NotEqualSameTypes()
+ {
+ byte b1 = 35;
+ sbyte sb2 = 35;
+ decimal d4 = 35;
+ double d5 = 35;
+ float f6 = 35;
+ int i7 = 35;
+ uint u8 = 35;
+ long l9 = 35;
+ short s10 = 35;
+ ushort us11 = 35;
+
+ System.Byte b12 = 35;
+ System.SByte sb13 = 35;
+ System.Decimal d14 = 35;
+ System.Double d15 = 35;
+ System.Single s16 = 35;
+ System.Int32 i17 = 35;
+ System.UInt32 ui18 = 35;
+ System.Int64 i19 = 35;
+ System.UInt64 ui20 = 35;
+ System.Int16 i21 = 35;
+ System.UInt16 i22 = 35;
+
+ Assert.AreNotEqual(23, b1);
+ Assert.AreNotEqual(23, sb2);
+ Assert.AreNotEqual(23, d4);
+ Assert.AreNotEqual(23, d5);
+ Assert.AreNotEqual(23, f6);
+ Assert.AreNotEqual(23, i7);
+ Assert.AreNotEqual(23, u8);
+ Assert.AreNotEqual(23, l9);
+ Assert.AreNotEqual(23, s10);
+ Assert.AreNotEqual(23, us11);
+
+ Assert.AreNotEqual(23, b12);
+ Assert.AreNotEqual(23, sb13);
+ Assert.AreNotEqual(23, d14);
+ Assert.AreNotEqual(23, d15);
+ Assert.AreNotEqual(23, s16);
+ Assert.AreNotEqual(23, i17);
+ Assert.AreNotEqual(23, ui18);
+ Assert.AreNotEqual(23, i19);
+ Assert.AreNotEqual(23, ui20);
+ Assert.AreNotEqual(23, i21);
+ Assert.AreNotEqual(23, i22);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/NotSameFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/NotSameFixture.cs
new file mode 100755
index 0000000..dcc8ed9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/NotSameFixture.cs
@@ -0,0 +1,49 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class NotSameFixture : MessageChecker
+ {
+ private readonly string s1 = "S1";
+ private readonly string s2 = "S2";
+
+ [Test]
+ public void NotSame()
+ {
+ Assert.AreNotSame(s1, s2);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void NotSameFails()
+ {
+ expectedMessage =
+ " Expected: not same as \"S1\"" + Env.NewLine +
+ " But was: \"S1\"" + Env.NewLine;
+ Assert.AreNotSame( s1, s1 );
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/NullableTypesTests.cs b/NUnitLite-0.9.0/src/tests/Assertions/NullableTypesTests.cs
new file mode 100755
index 0000000..76193c9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/NullableTypesTests.cs
@@ -0,0 +1,252 @@
+// ****************************************************************
+// Copyright 2008, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org.
+// ****************************************************************
+using System;
+
+namespace NUnit.Framework.Tests
+{
+#if CLR_2_0 || CLR_4_0
+#if !MONO
+ [TestFixture, Category("Generics")]
+ public class NullableTypesTests
+ {
+ [Test]
+ public void CanTestForNull()
+ {
+ int? nullInt = null;
+ int? five = 5;
+
+ Assert.IsNull(nullInt);
+ Assert.IsNotNull(five);
+ Assert.That(nullInt, Is.Null);
+ Assert.That(five, Is.Not.Null);
+ }
+
+#if false
+ [Test]
+ public void CanCompareNullableInts()
+ {
+ int? five = 5;
+ int? answer = 2 + 3;
+
+ Assert.AreEqual(five, answer);
+ Assert.AreEqual(five, 5);
+ Assert.AreEqual(5, five);
+
+ Assert.That(five, Is.EqualTo(answer));
+ Assert.That(five, Is.EqualTo(5));
+ Assert.That(5, Is.EqualTo(five));
+
+ Assert.Greater(five, 3);
+ Assert.GreaterOrEqual(five, 5);
+ Assert.Less(3, five);
+ Assert.LessOrEqual(5, five);
+
+ Assert.That(five, Is.GreaterThan(3));
+ Assert.That(five, Is.GreaterThanOrEqualTo(5));
+ //Assert.That(3, Is.LessThan(five));
+ //Assert.That(5, Is.LessThanOrEqualTo(five));
+ }
+
+ [Test]
+ public void CanCompareNullableDoubles()
+ {
+ double? five = 5.0;
+ double? answer = 2.0 + 3.0;
+
+ Assert.AreEqual(five, answer);
+ Assert.AreEqual(five, 5.0);
+ Assert.AreEqual(5.0, five);
+
+ Assert.That(five, Is.EqualTo(answer));
+ Assert.That(five, Is.EqualTo(5.0));
+ Assert.That(5.0, Is.EqualTo(five));
+
+ Assert.Greater(five, 3.0);
+ Assert.GreaterOrEqual(five, 5.0);
+ Assert.Less(3.0, five);
+ Assert.LessOrEqual(5.0, five);
+
+ Assert.That(five, Is.GreaterThan(3.0));
+ Assert.That(five, Is.GreaterThanOrEqualTo(5.0));
+ //Assert.That(3.0, Is.LessThan(five));
+ //Assert.That(5.0, Is.LessThanOrEqualTo(five));
+ }
+#endif
+
+ [Test]
+ public void CanTestForNaN()
+ {
+ double? anNaN = Double.NaN;
+ Assert.That(anNaN, Is.NaN);
+ }
+
+#if false
+ [Test]
+ public void CanCompareNullableDecimals()
+ {
+ decimal? five = 5m;
+ decimal? answer = 2m + 3m;
+
+ Assert.AreEqual(five, answer);
+ Assert.AreEqual(five, 5m);
+ Assert.AreEqual(5m, five);
+
+ Assert.That(five, Is.EqualTo(answer));
+ Assert.That(five, Is.EqualTo(5m));
+ Assert.That(5m, Is.EqualTo(five));
+
+ Assert.Greater(five, 3m);
+ Assert.GreaterOrEqual(five, 5m);
+ Assert.Less(3m, five);
+ Assert.LessOrEqual(5m, five);
+
+ Assert.That(five, Is.GreaterThan(3m));
+ Assert.That(five, Is.GreaterThanOrEqualTo(5m));
+ //Assert.That(3m, Is.LessThan(five));
+ //Assert.That(5m, Is.LessThanOrEqualTo(five));
+ }
+#endif
+
+ [Test]
+ public void CanCompareWithTolerance()
+ {
+ double? five = 5.0;
+
+ Assert.AreEqual(5.0000001, five, .0001);
+ Assert.That( five, Is.EqualTo(5.0000001).Within(.0001));
+
+ float? three = 3.0f;
+
+ Assert.AreEqual(3.00001f, three, .001);
+ Assert.That( three, Is.EqualTo(3.00001f).Within(.001));
+ }
+
+ private enum Colors
+ {
+ Red,
+ Blue,
+ Green
+ }
+
+ [Test]
+ public void CanCompareNullableEnums()
+ {
+ Colors? color = Colors.Red;
+ Colors? other = Colors.Red;
+
+ Assert.AreEqual(color, other);
+ Assert.AreEqual(color, Colors.Red);
+ Assert.AreEqual(Colors.Red, color);
+ }
+
+ [Test]
+ public void CanCompareNullableMixedNumerics()
+ {
+ int? int5 = 5;
+ double? double5 = 5.0;
+ decimal? decimal5 = 5.00m;
+
+ Assert.AreEqual(int5, double5);
+ Assert.AreEqual(int5, decimal5);
+ Assert.AreEqual(double5, int5);
+ Assert.AreEqual(double5, decimal5);
+ Assert.AreEqual(decimal5, int5);
+ Assert.AreEqual(decimal5, double5);
+
+ Assert.That(int5, Is.EqualTo(double5));
+ Assert.That(int5, Is.EqualTo(decimal5));
+ Assert.That(double5, Is.EqualTo(int5));
+ Assert.That(double5, Is.EqualTo(decimal5));
+ Assert.That(decimal5, Is.EqualTo(int5));
+ Assert.That(decimal5, Is.EqualTo(double5));
+
+ Assert.AreEqual(5, double5);
+ Assert.AreEqual(5, decimal5);
+ Assert.AreEqual(5.0, int5);
+ Assert.AreEqual(5.0, decimal5);
+ Assert.AreEqual(5m, int5);
+ Assert.AreEqual(5m, double5);
+
+ Assert.That(5, Is.EqualTo(double5));
+ Assert.That(5, Is.EqualTo(decimal5));
+ Assert.That(5.0, Is.EqualTo(int5));
+ Assert.That(5.0, Is.EqualTo(decimal5));
+ Assert.That(5m, Is.EqualTo(int5));
+ Assert.That(5m, Is.EqualTo(double5));
+
+ Assert.AreEqual(double5, 5);
+ Assert.AreEqual(decimal5, 5);
+ Assert.AreEqual(int5, 5.0);
+ Assert.AreEqual(decimal5, 5.0);
+ Assert.AreEqual(int5, 5m);
+ Assert.AreEqual(double5, 5m);
+
+ Assert.That(double5, Is.EqualTo(5));
+ Assert.That(decimal5, Is.EqualTo(5));
+ Assert.That(int5, Is.EqualTo(5.0));
+ Assert.That(decimal5, Is.EqualTo(5.0));
+ Assert.That(int5, Is.EqualTo(5m));
+ Assert.That(double5, Is.EqualTo(5m));
+
+#if false
+ Assert.Greater(int5, 3.0);
+ Assert.Greater(int5, 3m);
+ Assert.Greater(double5, 3);
+ Assert.Greater(double5, 3m);
+ Assert.Greater(decimal5, 3);
+ Assert.Greater(decimal5, 3.0);
+
+ Assert.That(int5, Is.GreaterThan(3.0));
+ Assert.That(int5, Is.GreaterThan(3m));
+ Assert.That(double5, Is.GreaterThan(3));
+ Assert.That(double5, Is.GreaterThan(3m));
+ Assert.That(decimal5, Is.GreaterThan(3));
+ Assert.That(decimal5, Is.GreaterThan(3.0));
+
+ Assert.Less(3.0, int5);
+ Assert.Less(3m, int5);
+ Assert.Less(3, double5);
+ Assert.Less(3m, double5);
+ Assert.Less(3, decimal5);
+ Assert.Less(3.0, decimal5);
+#endif
+ //Assert.That(3.0, Is.LessThan(int5));
+ //Assert.That(3m, Is.LessThan(int5));
+ //Assert.That(3, Is.LessThan(double5));
+ //Assert.That(3m, Is.LessThan(double5));
+ //Assert.That(3, Is.LessThan(decimal5));
+ //Assert.That(3.0, Is.LessThan(decimal5));
+ }
+
+ private struct MyStruct
+ {
+ int i;
+ string s;
+
+ public MyStruct(int i, string s)
+ {
+ this.i = i;
+ this.s = s;
+ }
+ }
+
+ [Test]
+ public void CanCompareNullableStructs()
+ {
+ MyStruct struct1 = new MyStruct(5, "Hello");
+ MyStruct struct2 = new MyStruct(5, "Hello");
+ Nullable<MyStruct> one = new MyStruct(5, "Hello");
+ Nullable<MyStruct> two = new MyStruct(5, "Hello");
+
+ Assert.AreEqual(struct1, struct2); // Control
+ Assert.AreEqual(one, two);
+ Assert.AreEqual(one, struct1);
+ Assert.AreEqual(struct2, two);
+ }
+ }
+#endif
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/Assertions/SameFixture.cs b/NUnitLite-0.9.0/src/tests/Assertions/SameFixture.cs
new file mode 100755
index 0000000..2ec97ca
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Assertions/SameFixture.cs
@@ -0,0 +1,61 @@
+// ***********************************************************************
+// Copyright (c) 2004 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Text;
+using NUnit.Framework;
+
+namespace NUnit.Framework.Assertions
+{
+ [TestFixture]
+ public class SameFixture : MessageChecker
+ {
+ [Test]
+ public void Same()
+ {
+ string s1 = "S1";
+ Assert.AreSame(s1, s1);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void SameFails()
+ {
+ Exception ex1 = new Exception( "one" );
+ Exception ex2 = new Exception( "two" );
+ expectedMessage =
+ " Expected: same as <System.Exception: one>" + Env.NewLine +
+ " But was: <System.Exception: two>" + Env.NewLine;
+ Assert.AreSame(ex1, ex2);
+ }
+
+ [Test,ExpectedException(typeof(AssertionException))]
+ public void SameValueTypes()
+ {
+ int index = 2;
+ expectedMessage =
+ " Expected: same as 2" + Env.NewLine +
+ " But was: 2" + Env.NewLine;
+ Assert.AreSame(index, index);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/ApplyToTestTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/ApplyToTestTests.cs
new file mode 100755
index 0000000..075f97d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/ApplyToTestTests.cs
@@ -0,0 +1,331 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class ApplyToTestTests
+ {
+ Test test;
+
+ [SetUp]
+ public void SetUp()
+ {
+ test = new TestDummy();
+ test.RunState = RunState.Runnable;
+ }
+
+ #region CategoryAttribute
+
+ [Test]
+ public void CategoryAttributeSetsCategory()
+ {
+ new CategoryAttribute("database").ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.Category), Is.EqualTo("database"));
+ }
+
+ [Test]
+ public void CategoryAttributeSetsMultipleCategories()
+ {
+ new CategoryAttribute("group1").ApplyToTest(test);
+ new CategoryAttribute("group2").ApplyToTest(test);
+ Assert.That(test.Properties[PropertyNames.Category],
+ Is.EquivalentTo(new string[] { "group1", "group2" }));
+ }
+
+ #endregion
+
+ #region DescriptionAttribute
+
+ [Test]
+ public void DescriptionAttributeSetsDescription()
+ {
+ new DescriptionAttribute("Cool test!").ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.Description), Is.EqualTo("Cool test!"));
+ }
+
+ #endregion
+
+ #region IgnoreAttribute
+
+ [Test]
+ public void IgnoreAttributeIgnoresTest()
+ {
+ new IgnoreAttribute().ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Ignored));
+ }
+
+ [Test]
+ public void IgnoreAttributeSetsIgnoreReason()
+ {
+ new IgnoreAttribute("BECAUSE").ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Ignored));
+ Assert.That(test.Properties.Get(PropertyNames.SkipReason), Is.EqualTo("BECAUSE"));
+ }
+
+ #endregion
+
+ #region ExplicitAttribute
+
+ [Test]
+ public void ExplicitAttributeMakesTestExplicit()
+ {
+ new ExplicitAttribute().ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Explicit));
+ }
+
+ [Test]
+ public void ExplicitAttributeSetsIgnoreReason()
+ {
+ new ExplicitAttribute("BECAUSE").ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Explicit));
+ Assert.That(test.Properties.Get(PropertyNames.SkipReason), Is.EqualTo("BECAUSE"));
+ }
+
+ #endregion
+
+ #region CombinatorialAttribute
+
+ [Test]
+ public void CombinatorialAttributeSetsJoinType()
+ {
+ new CombinatorialAttribute().ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.JoinType), Is.EqualTo("Combinatorial"));
+ }
+
+ #endregion
+
+ #region CultureAttribute
+
+ [Test]
+ public void CultureAttributeIncludingCurrentCultureRunsTest()
+ {
+ string name = System.Globalization.CultureInfo.CurrentCulture.Name;
+ new CultureAttribute(name).ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Runnable));
+ }
+
+ [Test]
+ public void CultureAttributeExcludingCurrentCultureSkipsTest()
+ {
+ string name = System.Globalization.CultureInfo.CurrentCulture.Name;
+ CultureAttribute attr = new CultureAttribute(name);
+ attr.Exclude = name;
+ attr.ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Skipped));
+ Assert.That(test.Properties.Get(PropertyNames.SkipReason),
+ Is.EqualTo("Not supported under culture " + name));
+ }
+
+ [Test]
+ public void CultureAttributeIncludingOtherCultureSkipsTest()
+ {
+ string name = "fr-FR";
+ if (System.Globalization.CultureInfo.CurrentCulture.Name == name)
+ name = "en-US";
+
+ new CultureAttribute(name).ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Skipped));
+ Assert.That(test.Properties.Get(PropertyNames.SkipReason),
+ Is.EqualTo("Only supported under culture " + name));
+ }
+
+ [Test]
+ public void CultureAttributeExcludingOtherCultureRunsTest()
+ {
+ string other = "fr-FR";
+ if (System.Globalization.CultureInfo.CurrentCulture.Name == other)
+ other = "en-US";
+
+ CultureAttribute attr = new CultureAttribute();
+ attr.Exclude = other;
+ attr.ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Runnable));
+ }
+
+ [Test]
+ public void CultureAttributeWithMultipleCulturesIncluded()
+ {
+ string current = System.Globalization.CultureInfo.CurrentCulture.Name;
+ string other = current == "fr-FR" ? "en-US" : "fr-FR";
+ string cultures = current + "," + "other";
+
+ new CultureAttribute(cultures).ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Runnable));
+ }
+
+ #endregion
+
+ #region MaxTimeAttribute
+
+ [Test]
+ public void MaxTimeAttributeSetsMaxTime()
+ {
+ new MaxTimeAttribute(2000).ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.MaxTime), Is.EqualTo(2000));
+ }
+
+ #endregion
+
+ #region PairwiseAttribute
+
+ [Test]
+ public void PairwiseAttributeSetsJoinType()
+ {
+ new PairwiseAttribute().ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.JoinType), Is.EqualTo("Pairwise"));
+ }
+
+ #endregion
+
+ #region PlatformAttribute
+
+ [Test]
+ public void PlatformAttributeRunsTest()
+ {
+ string myPlatform = System.IO.Path.DirectorySeparatorChar == '/'
+ ? "Linux" : "Win";
+ new PlatformAttribute(myPlatform).ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Runnable));
+ }
+
+ [Test]
+ public void PlatformAttributeSkipsTest()
+ {
+ string notMyPlatform = System.IO.Path.DirectorySeparatorChar == '/'
+ ? "Win" : "Linux";
+ new PlatformAttribute(notMyPlatform).ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Skipped));
+ }
+
+ #endregion
+
+#if !NUNITLITE
+
+ #region RepeatAttribute
+
+ public void RepeatAttributeSetsRepeatCount()
+ {
+ new RepeatAttribute(5).ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.RepeatCount), Is.EqualTo(5));
+ }
+
+ #endregion
+
+ #region RequiredAddinAttribute
+
+ [Test, Ignore("NYI")]
+ public void RequiredAddinAttributeSkipsTest()
+ {
+ new RequiredAddinAttribute("JUNK").ApplyToTest(test);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Skipped));
+ }
+
+ #endregion
+
+ #region RequiresMTAAttribute
+
+ [Test]
+ public void RequiresMTAAttributeSetsApartmentState()
+ {
+ new RequiresMTAAttribute().ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.ApartmentState),
+ Is.EqualTo(System.Threading.ApartmentState.MTA));
+ }
+
+ #endregion
+
+ #region RequiresSTAAttribute
+
+ [Test]
+ public void RequiresSTAAttributeSetsApartmentState()
+ {
+ new RequiresSTAAttribute().ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.ApartmentState),
+ Is.EqualTo(System.Threading.ApartmentState.STA));
+ }
+
+ #endregion
+
+ #region RequiresThreadAttribute
+
+ [Test]
+ public void RequiresThreadAttributeSetsRequiresThread()
+ {
+ new RequiresThreadAttribute().ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.RequiresThread), Is.EqualTo(true));
+ }
+
+ [Test]
+ public void RequiresThreadAttributeMaySetApartmentState()
+ {
+ new RequiresThreadAttribute(System.Threading.ApartmentState.STA).ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.RequiresThread), Is.EqualTo(true));
+ Assert.That(test.Properties.Get(PropertyNames.ApartmentState),
+ Is.EqualTo(System.Threading.ApartmentState.STA));
+ }
+
+ #endregion
+
+#endif
+
+ #region SequentialAttribute
+
+ [Test]
+ public void SequentialAttributeSetsJoinType()
+ {
+ new SequentialAttribute().ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.JoinType), Is.EqualTo("Sequential"));
+ }
+
+ #endregion
+
+#if !NETCF
+
+ #region SetCultureAttribute
+
+ public void SetCultureAttributeSetsSetCultureProperty()
+ {
+ new SetCultureAttribute("fr-FR").ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.SetCulture), Is.EqualTo("fr-FR"));
+ }
+
+ #endregion
+
+ #region SetUICultureAttribute
+
+ public void SetUICultureAttributeSetsSetUICultureProperty()
+ {
+ new SetUICultureAttribute("fr-FR").ApplyToTest(test);
+ Assert.That(test.Properties.Get(PropertyNames.SetUICulture), Is.EqualTo("fr-FR"));
+ }
+
+ #endregion
+
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/AttributeInheritanceTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/AttributeInheritanceTests.cs
new file mode 100755
index 0000000..a272fed
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/AttributeInheritanceTests.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+using NUnit.TestData.AttributeInheritanceData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Tests
+{
+ [TestFixture]
+ public class AttributeInheritanceTests
+ {
+ [Test]
+ public void InheritedFixtureAttributeIsRecognized()
+ {
+ Assert.That( TestBuilder.MakeFixture( typeof (When_collecting_test_fixtures) ) != null );
+ }
+
+ [Test]
+ public void InheritedTestAttributeIsRecognized()
+ {
+ Test fixture = TestBuilder.MakeFixture( typeof( When_collecting_test_fixtures ) );
+ Assert.AreEqual( 1, fixture.TestCaseCount );
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/CategoryAttributeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/CategoryAttributeTests.cs
new file mode 100755
index 0000000..5d750f1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/CategoryAttributeTests.cs
@@ -0,0 +1,90 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData.CategoryAttributeData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ /// <summary>
+ /// Summary description for CategoryAttributeTests.
+ /// </summary>
+ [TestFixture]
+ public class CategoryAttributeTests
+ {
+ TestSuite fixture;
+
+ [SetUp]
+ public void CreateFixture()
+ {
+ fixture = TestBuilder.MakeFixture( typeof( FixtureWithCategories ) );
+ }
+
+ [Test]
+ public void CategoryOnFixture()
+ {
+ Assert.That( fixture.Properties.Contains("Category", "DataBase"));
+ }
+
+ [Test]
+ public void CategoryOnTestMethod()
+ {
+ Test test1 = (Test)fixture.Tests[0];
+ Assert.That( test1.Properties.Contains("Category", "Long") );
+ }
+
+ [Test]
+ public void CanDeriveFromCategoryAttribute()
+ {
+ Test test2 = (Test)fixture.Tests[1];
+ Assert.That(test2.Properties["Category"], Contains.Item("Critical") );
+ }
+
+ [Test]
+ public void DerivedCategoryMayBeInherited()
+ {
+ Assert.That(fixture.Properties.Contains("Category", "MyCategory"));
+ }
+
+ [Test]
+ public void CanSpecifyOnMethodAndTestCase()
+ {
+ TestSuite test3 = (TestSuite)fixture.Tests[2];
+ Assert.That(test3.Name, Is.EqualTo("Test3"));
+ Assert.That(test3.Properties["Category"], Contains.Item("Top"));
+ Test testCase = (Test)test3.Tests[0];
+ Assert.That(testCase.Name, Is.EqualTo("Test3(5)"));
+ Assert.That(testCase.Properties["Category"], Contains.Item("Bottom"));
+ }
+
+ [Test]
+ public void TestWithInvalidCategoryNameIsNotRunnable()
+ {
+ Test test4 = (Test)fixture.Tests[3];
+ Assert.That(test4.RunState, Is.EqualTo(RunState.NotRunnable));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/CombinatorialTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/CombinatorialTests.cs
new file mode 100755
index 0000000..3ad46b4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/CombinatorialTests.cs
@@ -0,0 +1,100 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class CombinatorialTests
+ {
+ [Test]
+ public void SingleArgument(
+ [Values(1.3, 1.7, 1.5)] double x)
+ {
+ Assert.That(x > 1.0 && x < 2.0);
+ }
+
+ [Test, Combinatorial]
+ public void TwoArguments_Combinatorial(
+ [Values(1, 2, 3)] int x,
+ [Values(10, 20)] int y)
+ {
+ Assert.That(x > 0 && x < 4 && y % 10 == 0);
+ }
+
+ [Test, Sequential]
+ public void TwoArguments_Sequential(
+ [Values(1, 2, 3)] int x,
+ [Values(10, 20)] int y)
+ {
+ Assert.That(x > 0 && x < 4 && y % 10 == 0);
+ }
+
+ [Test, Combinatorial]
+ public void ThreeArguments_Combinatorial(
+ [Values(1, 2, 3)] int x,
+ [Values(10, 20)] int y,
+ [Values("Charlie", "Joe", "Frank")] string name)
+ {
+ Assert.That(x > 0 && x < 4 && y % 10 == 0);
+ Assert.That(name.Length >= 2);
+ }
+
+ [Test, Sequential]
+ public void ThreeArguments_Sequential(
+ [Values(1, 2, 3)] int x,
+ [Values(10, 20)] int y,
+ [Values("Charlie", "Joe", "Frank")] string name)
+ {
+ Assert.That(x > 0 && x < 4 && y % 10 == 0);
+ Assert.That(name.Length >= 2);
+ }
+
+ [Test]
+ public void RangeTest(
+ [Range(0.2, 0.6, 0.2)] double a,
+ [Range(10, 20, 5)] int b)
+ {
+ }
+
+ [Test, Sequential]
+ public void RandomTest(
+ [Random(32, 212, 5)] int x,
+ [Random(5)] double y,
+ [Random(5)] AttributeTargets z)
+ {
+ Assert.That(x,Is.InRange(32,212));
+ Assert.That(y,Is.InRange(0.0,1.0));
+ Assert.That(z, Is.TypeOf(typeof(AttributeTargets)));
+ }
+
+ [Test, Sequential]
+ public void RandomArgsAreIndependent(
+ [Random(1)] double x,
+ [Random(1)] double y)
+ {
+ Assert.AreNotEqual(x, y);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/DatapointTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/DatapointTests.cs
new file mode 100755
index 0000000..742cf1f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/DatapointTests.cs
@@ -0,0 +1,70 @@
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData.DatapointFixture;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ public class DatapointTests
+ {
+ private void RunTestOnFixture(Type fixtureType)
+ {
+ TestResult result = TestBuilder.RunTestFixture(fixtureType);
+ ResultSummary summary = new ResultSummary(result);
+ Assert.That(summary.Passed, Is.EqualTo(2));
+ Assert.That(summary.Inconclusive, Is.EqualTo(3));
+ Assert.That(result.ResultState, Is.EqualTo(ResultState.Success));
+ }
+
+ [Test]
+ public void WorksOnField()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Field_Double));
+ }
+
+ [Test]
+ public void WorksOnArray()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Field_ArrayOfDouble));
+ }
+
+ [Test]
+ public void WorksOnPropertyReturningArray()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Property_ArrayOfDouble));
+ }
+
+ [Test]
+ public void WorksOnMethodReturningArray()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Method_ArrayOfDouble));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void WorksOnIEnumerableOfT()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Field_IEnumerableOfDouble));
+ }
+
+ [Test]
+ public void WorksOnPropertyReturningIEnumerableOfT()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Property_IEnumerableOfDouble));
+ }
+
+ [Test]
+ public void WorksOnMethodReturningIEnumerableOfT()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Method_IEnumerableOfDouble));
+ }
+
+ [Test]
+ public void WorksOnEnumeratorReturningIEnumerableOfT()
+ {
+ RunTestOnFixture(typeof(SquareRootTest_Iterator_IEnumerableOfDouble));
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/DescriptionTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/DescriptionTests.cs
new file mode 100755
index 0000000..eb1bbde
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/DescriptionTests.cs
@@ -0,0 +1,87 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.TestData.DescriptionFixture;
+using NUnit.TestUtilities;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Attributes
+{
+ // TODO: Review to see if we need these tests
+
+ [TestFixture]
+ public class DescriptionTests
+ {
+ static readonly Type FixtureType = typeof( DescriptionFixture );
+
+ [Test]
+ public void ReflectionTest()
+ {
+ Test testCase = TestBuilder.MakeTestCase( FixtureType, "Method" );
+ Assert.AreEqual( RunState.Runnable, testCase.RunState );
+ }
+
+ [Test]
+ public void Description()
+ {
+ Test testCase = TestBuilder.MakeTestCase(FixtureType, "Method");
+ Assert.AreEqual("Test Description", testCase.Properties.Get(PropertyNames.Description));
+ }
+
+ [Test]
+ public void NoDescription()
+ {
+ Test testCase = TestBuilder.MakeTestCase( FixtureType, "NoDescriptionMethod" );
+ Assert.IsNull(testCase.Properties.Get(PropertyNames.Description));
+ }
+
+ [Test]
+ public void FixtureDescription()
+ {
+ TestSuite suite = new TestSuite("suite");
+ suite.Add( TestBuilder.MakeFixture( typeof( DescriptionFixture ) ) );
+
+ TestSuite mockFixtureSuite = (TestSuite)suite.Tests[0];
+
+ Assert.AreEqual("Fixture Description", mockFixtureSuite.Properties.Get(PropertyNames.Description));
+ }
+
+ [Test]
+ public void SeparateDescriptionAttribute()
+ {
+ Test testCase = TestBuilder.MakeTestCase(FixtureType, "SeparateDescriptionMethod");
+ Assert.AreEqual("Separate Description", testCase.Properties.Get(PropertyNames.Description));
+ }
+
+ [Test]
+ public void DescriptionOnTestCase()
+ {
+ TestSuite parameterizedMethodSuite = TestBuilder.MakeParameterizedMethodSuite(FixtureType, "TestCaseWithDescription");
+ Assert.AreEqual("method description", parameterizedMethodSuite.Properties.Get(PropertyNames.Description));
+ Test testCase = (Test)parameterizedMethodSuite.Tests[0];
+ Assert.AreEqual("case description", testCase.Properties.Get(PropertyNames.Description));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/ExpectedExceptionTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/ExpectedExceptionTests.cs
new file mode 100755
index 0000000..e456126
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/ExpectedExceptionTests.cs
@@ -0,0 +1,447 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+using NUnit.TestData.ExpectedExceptionData;
+#if !NETCF
+using System.Runtime.Serialization;
+#endif
+
+namespace NUnit.Framework.Attributes
+{
+ /// <summary>
+ ///
+ /// </summary>
+ [TestFixture]
+ public class ExpectedExceptionTests
+ {
+ [Test, ExpectedException]
+ public void CanExpectUnspecifiedException()
+ {
+ throw new ArgumentException();
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void TestSucceedsWithSpecifiedExceptionType()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException(ExpectedException=typeof(ArgumentException))]
+ public void TestSucceedsWithSpecifiedExceptionTypeAsNamedParameter()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException("System.ArgumentException")]
+ public void TestSucceedsWithSpecifiedExceptionName()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException(ExpectedExceptionName="System.ArgumentException")]
+ public void TestSucceedsWithSpecifiedExceptionNameAsNamedParameter()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException),ExpectedMessage="argument exception")]
+ public void TestSucceedsWithSpecifiedExceptionTypeAndMessage()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException), ExpectedMessage="argument exception", MatchType=MessageMatch.Exact)]
+ public void TestSucceedsWithSpecifiedExceptionTypeAndExactMatch()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException),ExpectedMessage="invalid", MatchType=MessageMatch.Contains)]
+ public void TestSucceedsWithSpecifiedExceptionTypeAndContainsMatch()
+ {
+ throw new ArgumentException("argument invalid exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException),ExpectedMessage="exception$", MatchType=MessageMatch.Regex)]
+ public void TestSucceedsWithSpecifiedExceptionTypeAndRegexMatch()
+ {
+ throw new ArgumentException("argument invalid exception");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException), ExpectedMessage = "argument invalid", MatchType = MessageMatch.StartsWith)]
+ public void TestSucceedsWithSpecifiedExceptionTypeAndStartsWithMatch()
+ {
+ throw new ArgumentException("argument invalid exception");
+ }
+
+// [Test]
+// [ExpectedException("System.ArgumentException", "argument exception")]
+// public void TestSucceedsWithSpecifiedExceptionNameAndMessage_OldFormat()
+// {
+// throw new ArgumentException("argument exception");
+// }
+
+ [Test]
+ [ExpectedException("System.ArgumentException", ExpectedMessage = "argument exception")]
+ public void TestSucceedsWithSpecifiedExceptionNameAndMessage_NewFormat()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException("System.ArgumentException",ExpectedMessage="argument exception",MatchType=MessageMatch.Exact)]
+ public void TestSucceedsWithSpecifiedExceptionNameAndExactMatch()
+ {
+ throw new ArgumentException("argument exception");
+ }
+
+ [Test]
+ [ExpectedException("System.ArgumentException",ExpectedMessage="invalid", MatchType=MessageMatch.Contains)]
+ public void TestSucceedsWhenSpecifiedExceptionNameAndContainsMatch()
+ {
+ throw new ArgumentException("argument invalid exception");
+ }
+
+ [Test]
+ [ExpectedException("System.ArgumentException",ExpectedMessage="exception$", MatchType=MessageMatch.Regex)]
+ public void TestSucceedsWhenSpecifiedExceptionNameAndRegexMatch()
+ {
+ throw new ArgumentException("argument invalid exception");
+ }
+
+ [Test]
+ public void TestFailsWhenBaseExceptionIsThrown()
+ {
+ Type fixtureType = typeof(BaseException);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "BaseExceptionTest" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "BaseExceptionTest should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.ArgumentException" + Env.NewLine +
+ " but was: System.Exception"));
+ }
+
+ [Test]
+ public void TestFailsWhenDerivedExceptionIsThrown()
+ {
+ Type fixtureType = typeof(DerivedException);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "DerivedExceptionTest");
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "DerivedExceptionTest should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.Exception" + Env.NewLine +
+ " but was: System.ArgumentException"));
+ }
+
+ [Test]
+ public void TestMismatchedExceptionType()
+ {
+ Type fixtureType = typeof(MismatchedException);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "MismatchedExceptionType");
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "MismatchedExceptionType should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.ArgumentException" + Env.NewLine +
+ " but was: System.ArgumentOutOfRangeException"));
+ }
+
+ [Test]
+ public void TestMismatchedExceptionTypeAsNamedParameter()
+ {
+ Type fixtureType = typeof(MismatchedException);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "MismatchedExceptionTypeAsNamedParameter");
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "MismatchedExceptionType should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.ArgumentException" + Env.NewLine +
+ " but was: System.ArgumentOutOfRangeException"));
+ }
+
+ [Test]
+ public void TestMismatchedExceptionTypeWithUserMessage()
+ {
+ Type fixtureType = typeof(MismatchedException);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "MismatchedExceptionTypeWithUserMessage" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "custom message" + Env.NewLine +
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.ArgumentException" + Env.NewLine +
+ " but was: System.ArgumentOutOfRangeException"));
+ }
+
+ [Test]
+ public void TestMismatchedExceptionName()
+ {
+ Type fixtureType = typeof(MismatchedException);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "MismatchedExceptionName" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "MismatchedExceptionName should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.ArgumentException" + Env.NewLine +
+ " but was: System.ArgumentOutOfRangeException"));
+ }
+
+ [Test]
+ public void TestMismatchedExceptionNameWithUserMessage()
+ {
+ Type fixtureType = typeof(MismatchedException);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "MismatchedExceptionNameWithUserMessage");
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.That(result.Message, Is.StringStarting(
+ "custom message" + Env.NewLine +
+ "An unexpected exception type was thrown" + Env.NewLine +
+ "Expected: System.ArgumentException" + Env.NewLine +
+ " but was: System.ArgumentOutOfRangeException"));
+ }
+
+ [Test]
+ public void TestMismatchedExceptionMessage()
+ {
+ Type fixtureType = typeof(TestThrowsExceptionWithWrongMessage);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestThrow" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "TestThrow should have failed");
+ Assert.AreEqual(
+ "The exception message text was incorrect" + Env.NewLine +
+ "Expected: not the message" + Env.NewLine +
+ " but was: the message",
+ result.Message);
+ }
+
+ [Test]
+ public void TestMismatchedExceptionMessageWithUserMessage()
+ {
+ Type fixtureType = typeof(TestThrowsExceptionWithWrongMessage);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestThrowWithUserMessage" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "TestThrow should have failed");
+ Assert.AreEqual(
+ "custom message" + Env.NewLine +
+ "The exception message text was incorrect" + Env.NewLine +
+ "Expected: not the message" + Env.NewLine +
+ " but was: the message",
+ result.Message);
+ }
+
+ [Test]
+ public void TestUnspecifiedExceptionNotThrown()
+ {
+ Type fixtureType = typeof(TestDoesNotThrowExceptionFixture);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestDoesNotThrowUnspecifiedException" );
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.AreEqual("An Exception was expected", result.Message);
+ }
+
+ [Test]
+ public void TestUnspecifiedExceptionNotThrownWithUserMessage()
+ {
+ Type fixtureType = typeof(TestDoesNotThrowExceptionFixture);
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "TestDoesNotThrowUnspecifiedExceptionWithUserMessage");
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.AreEqual("custom message" + Env.NewLine + "An Exception was expected", result.Message);
+ }
+
+ [Test]
+ public void TestExceptionTypeNotThrown()
+ {
+ Type fixtureType = typeof(TestDoesNotThrowExceptionFixture);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestDoesNotThrowExceptionType" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.AreEqual("System.ArgumentException was expected", result.Message);
+ }
+
+ [Test]
+ public void TestExceptionTypeNotThrownWithUserMessage()
+ {
+ Type fixtureType = typeof(TestDoesNotThrowExceptionFixture);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestDoesNotThrowExceptionTypeWithUserMessage" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.AreEqual("custom message" + Env.NewLine + "System.ArgumentException was expected", result.Message);
+ }
+
+ [Test]
+ public void TestExceptionNameNotThrown()
+ {
+ Type fixtureType = typeof(TestDoesNotThrowExceptionFixture);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestDoesNotThrowExceptionName" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.AreEqual("System.ArgumentException was expected", result.Message);
+ }
+
+ [Test]
+ public void TestExceptionNameNotThrownWithUserMessage()
+ {
+ Type fixtureType = typeof(TestDoesNotThrowExceptionFixture);
+ ITestResult result = TestBuilder.RunTestCase( fixtureType, "TestDoesNotThrowExceptionNameWithUserMessage" );
+ Assert.IsTrue(result.ResultState == ResultState.Failure, "Test method should have failed");
+ Assert.AreEqual("custom message" + Env.NewLine + "System.ArgumentException was expected", result.Message);
+ }
+
+ [Test]
+ public void MethodThrowsException()
+ {
+ TestResult result = TestBuilder.RunTestFixture( typeof( TestThrowsExceptionFixture ) );
+ Assert.AreEqual(true, result.ResultState == ResultState.Failure);
+ }
+
+ [Test]
+ public void MethodThrowsRightExceptionMessage()
+ {
+ TestResult result = TestBuilder.RunTestFixture( typeof( TestThrowsExceptionWithRightMessage ) );
+ Assert.AreEqual(true, result.ResultState == ResultState.Success);
+ }
+
+ [Test]
+ public void MethodThrowsArgumentOutOfRange()
+ {
+ TestResult result = TestBuilder.RunTestFixture( typeof( TestThrowsArgumentOutOfRangeException ) );
+ Assert.AreEqual(true, result.ResultState == ResultState.Success);
+ }
+
+ [Test]
+ public void MethodThrowsWrongExceptionMessage()
+ {
+ TestResult result = TestBuilder.RunTestFixture( typeof( TestThrowsExceptionWithWrongMessage ) );
+ Assert.AreEqual(true, result.ResultState == ResultState.Failure);
+ }
+
+ [Test]
+ public void SetUpThrowsSameException()
+ {
+ TestResult result = TestBuilder.RunTestFixture( typeof( SetUpExceptionTests ) );
+ Assert.AreEqual(true, result.ResultState == ResultState.Failure);
+ }
+
+ [Test]
+ public void TearDownThrowsSameException()
+ {
+ TestResult result = TestBuilder.RunTestFixture( typeof( TearDownExceptionTests ) );
+ Assert.AreEqual(true, result.ResultState == ResultState.Failure);
+ }
+
+ [Test]
+ public void AssertFailBeforeException()
+ {
+ TestResult suiteResult = TestBuilder.RunTestFixture( typeof (TestAssertsBeforeThrowingException) );
+ Assert.AreEqual( ResultState.Failure, suiteResult.ResultState );
+ TestResult result = (TestResult)suiteResult.Children[0];
+ Assert.AreEqual( "private message", result.Message );
+ }
+
+ internal class MyAppException : System.Exception
+ {
+ public MyAppException (string message) : base(message)
+ {}
+
+ public MyAppException(string message, Exception inner) :
+ base(message, inner)
+ {}
+
+#if !NETCF && !SILVERLIGHT
+ protected MyAppException(SerializationInfo info,
+ StreamingContext context) : base(info,context)
+ {}
+#endif
+ }
+
+ [Test]
+ [ExpectedException(typeof(MyAppException))]
+ public void ThrowingMyAppException()
+ {
+ throw new MyAppException("my app");
+ }
+
+ [Test]
+ [ExpectedException(typeof(MyAppException), ExpectedMessage="my app")]
+ public void ThrowingMyAppExceptionWithMessage()
+ {
+ throw new MyAppException("my app");
+ }
+
+ [Test]
+ [ExpectedException(typeof(NUnitException))]
+ public void ThrowNUnitException()
+ {
+ throw new NUnitException("Nunit exception");
+ }
+
+ [Test]
+ public void ExceptionHandlerIsCalledWhenExceptionMatches_AlternateHandler()
+ {
+ ExceptionHandlerCalledClass fixture = new ExceptionHandlerCalledClass();
+ TestBuilder.RunTestCase( fixture, "ThrowsArgumentException_AlternateHandler" );
+ Assert.IsFalse(fixture.HandlerCalled, "Base Handler should not be called" );
+ Assert.IsTrue(fixture.AlternateHandlerCalled, "Alternate Handler should be called" );
+ }
+
+ [Test]
+ public void ExceptionHandlerIsCalledWhenExceptionMatches()
+ {
+ ExceptionHandlerCalledClass fixture = new ExceptionHandlerCalledClass();
+ TestBuilder.RunTestCase( fixture, "ThrowsArgumentException" );
+ Assert.IsTrue(fixture.HandlerCalled, "Base Handler should be called");
+ Assert.IsFalse(fixture.AlternateHandlerCalled, "Alternate Handler should not be called");
+ }
+
+ [Test]
+ public void ExceptionHandlerIsNotCalledWhenExceptionDoesNotMatch()
+ {
+ ExceptionHandlerCalledClass fixture = new ExceptionHandlerCalledClass();
+ TestBuilder.RunTestCase( fixture, "ThrowsCustomException" );
+ Assert.IsFalse( fixture.HandlerCalled, "Base Handler should not be called" );
+ Assert.IsFalse( fixture.AlternateHandlerCalled, "Alternate Handler should not be called" );
+ }
+
+ [Test]
+ public void ExceptionHandlerIsNotCalledWhenExceptionDoesNotMatch_AlternateHandler()
+ {
+ ExceptionHandlerCalledClass fixture = new ExceptionHandlerCalledClass();
+ TestBuilder.RunTestCase(fixture, "ThrowsCustomException_AlternateHandler");
+ Assert.IsFalse(fixture.HandlerCalled, "Base Handler should not be called");
+ Assert.IsFalse(fixture.AlternateHandlerCalled, "Alternate Handler should not be called");
+ }
+
+ [Test]
+ public void TestIsNotRunnableWhenAlternateHandlerIsNotFound()
+ {
+ ExceptionHandlerCalledClass fixture = new ExceptionHandlerCalledClass();
+ Test test = TestBuilder.MakeTestCase( fixture, "MethodWithBadHandler" );
+ Assert.AreEqual( RunState.NotRunnable, test.RunState );
+ Assert.AreEqual(
+ "The specified exception handler DeliberatelyMissingHandler was not found",
+ test.Properties.Get(PropertyNames.SkipReason) );
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/FixtureSetUpTearDownTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/FixtureSetUpTearDownTests.cs
new file mode 100755
index 0000000..972fa86
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/FixtureSetUpTearDownTests.cs
@@ -0,0 +1,336 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if !NETCF
+using System.Security.Principal;
+#endif
+using System.Threading;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Builders;
+using NUnit.TestData.FixtureSetUpTearDownData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class FixtureSetupTearDownTest
+ {
+ [Test]
+ public void MakeSureSetUpAndTearDownAreCalled()
+ {
+ SetUpAndTearDownFixture fixture = new SetUpAndTearDownFixture();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(1, fixture.setUpCount, "SetUp");
+ Assert.AreEqual(1, fixture.tearDownCount, "TearDown");
+ }
+
+ [Test]
+ public void MakeSureSetUpAndTearDownAreCalledOnExplicitFixture()
+ {
+ ExplicitSetUpAndTearDownFixture fixture = new ExplicitSetUpAndTearDownFixture();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(1, fixture.setUpCount, "SetUp");
+ Assert.AreEqual(1, fixture.tearDownCount, "TearDown");
+ }
+
+ [Test]
+ public void CheckInheritedSetUpAndTearDownAreCalled()
+ {
+ InheritSetUpAndTearDown fixture = new InheritSetUpAndTearDown();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(1, fixture.setUpCount);
+ Assert.AreEqual(1, fixture.tearDownCount);
+ }
+
+ [Test]
+ public static void StaticSetUpAndTearDownAreCalled()
+ {
+ StaticSetUpAndTearDownFixture.setUpCount = 0;
+ StaticSetUpAndTearDownFixture.tearDownCount = 0;
+ TestBuilder.RunTestFixture(typeof(StaticSetUpAndTearDownFixture));
+
+ Assert.AreEqual(1, StaticSetUpAndTearDownFixture.setUpCount);
+ Assert.AreEqual(1, StaticSetUpAndTearDownFixture.tearDownCount);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public static void StaticClassSetUpAndTearDownAreCalled()
+ {
+ StaticClassSetUpAndTearDownFixture.setUpCount = 0;
+ StaticClassSetUpAndTearDownFixture.tearDownCount = 0;
+
+ TestBuilder.RunTestFixture(typeof(StaticClassSetUpAndTearDownFixture));
+
+ Assert.AreEqual(1, StaticClassSetUpAndTearDownFixture.setUpCount);
+ Assert.AreEqual(1, StaticClassSetUpAndTearDownFixture.tearDownCount);
+ }
+#endif
+
+ [Test]
+ public void OverriddenSetUpAndTearDownAreNotCalled()
+ {
+ DefineInheritSetUpAndTearDown fixture = new DefineInheritSetUpAndTearDown();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(0, fixture.setUpCount);
+ Assert.AreEqual(0, fixture.tearDownCount);
+ Assert.AreEqual(1, fixture.derivedSetUpCount);
+ Assert.AreEqual(1, fixture.derivedTearDownCount);
+ }
+
+ [Test]
+ public void BaseSetUpCalledFirstAndTearDownCalledLast()
+ {
+ DerivedSetUpAndTearDownFixture fixture = new DerivedSetUpAndTearDownFixture();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(1, fixture.setUpCount);
+ Assert.AreEqual(1, fixture.tearDownCount);
+ Assert.AreEqual(1, fixture.derivedSetUpCount);
+ Assert.AreEqual(1, fixture.derivedTearDownCount);
+ Assert.That(fixture.baseSetUpCalledFirst, "Base SetUp called first");
+ Assert.That(fixture.baseTearDownCalledLast, "Base TearDown called last");
+ }
+
+ [Test]
+ public void StaticBaseSetUpCalledFirstAndTearDownCalledLast()
+ {
+ StaticSetUpAndTearDownFixture.setUpCount = 0;
+ StaticSetUpAndTearDownFixture.tearDownCount = 0;
+ DerivedStaticSetUpAndTearDownFixture.derivedSetUpCount = 0;
+ DerivedStaticSetUpAndTearDownFixture.derivedTearDownCount = 0;
+
+ DerivedStaticSetUpAndTearDownFixture fixture = new DerivedStaticSetUpAndTearDownFixture();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(1, DerivedStaticSetUpAndTearDownFixture.setUpCount);
+ Assert.AreEqual(1, DerivedStaticSetUpAndTearDownFixture.tearDownCount);
+ Assert.AreEqual(1, DerivedStaticSetUpAndTearDownFixture.derivedSetUpCount);
+ Assert.AreEqual(1, DerivedStaticSetUpAndTearDownFixture.derivedTearDownCount);
+ Assert.That(DerivedStaticSetUpAndTearDownFixture.baseSetUpCalledFirst, "Base SetUp called first");
+ Assert.That(DerivedStaticSetUpAndTearDownFixture.baseTearDownCalledLast, "Base TearDown called last");
+ }
+
+ [Test]
+ public void HandleErrorInFixtureSetup()
+ {
+ MisbehavingFixture fixture = new MisbehavingFixture();
+ fixture.blowUpInSetUp = true;
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual( 1, fixture.setUpCount, "setUpCount" );
+ Assert.AreEqual( 1, fixture.tearDownCount, "tearDownCOunt" );
+
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+ Assert.AreEqual("System.Exception : This was thrown from fixture setup", result.Message, "TestSuite Message");
+ Assert.IsNotNull(result.StackTrace, "TestSuite StackTrace should not be null");
+
+ Assert.AreEqual(0, result.Children.Count, "Result should have no children");
+ Assert.AreEqual(1, result.FailCount, "Failure count");
+ }
+
+ [Test]
+ public void RerunFixtureAfterSetUpFixed()
+ {
+ MisbehavingFixture fixture = new MisbehavingFixture();
+ fixture.blowUpInSetUp = true;
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+
+ //fix the blow up in setup
+ fixture.Reinitialize();
+ result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual( 1, fixture.setUpCount, "setUpCount" );
+ Assert.AreEqual( 1, fixture.tearDownCount, "tearDownCOunt" );
+
+ Assert.AreEqual(ResultState.Success, result.ResultState);
+ }
+
+ [Test]
+ public void HandleIgnoreInFixtureSetup()
+ {
+ IgnoreInFixtureSetUp fixture = new IgnoreInFixtureSetUp();
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+
+ // should have one suite and one fixture
+ Assert.AreEqual(ResultState.Ignored, result.ResultState, "Suite should be ignored");
+ Assert.AreEqual("TestFixtureSetUp called Ignore", result.Message);
+ Assert.IsNotNull(result.StackTrace, "StackTrace should not be null");
+
+ Assert.AreEqual(0, result.Children.Count);
+ Assert.AreEqual(1, result.SkipCount);
+ }
+
+ [Test]
+ public void HandleErrorInFixtureTearDown()
+ {
+ MisbehavingFixture fixture = new MisbehavingFixture();
+ fixture.blowUpInTearDown = true;
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+ Assert.AreEqual(1, result.Children.Count);
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+
+ Assert.AreEqual( 1, fixture.setUpCount, "setUpCount" );
+ Assert.AreEqual( 1, fixture.tearDownCount, "tearDownCOunt" );
+
+ Assert.AreEqual("TearDown : System.Exception : This was thrown from fixture teardown", result.Message);
+ Assert.IsNotNull(result.StackTrace, "StackTrace should not be null");
+ }
+
+ [Test]
+ public void HandleExceptionInFixtureConstructor()
+ {
+ ITestResult result = TestBuilder.RunTestFixture( typeof( ExceptionInConstructor ) );
+
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+ Assert.AreEqual("System.Exception : This was thrown in constructor", result.Message, "TestSuite Message");
+ Assert.IsNotNull(result.StackTrace, "TestSuite StackTrace should not be null");
+
+ Assert.AreEqual(0, result.Children.Count, "Result should have no children");
+ Assert.AreEqual(1, result.FailCount, "Failure count");
+ }
+
+ [Test]
+ public void RerunFixtureAfterTearDownFixed()
+ {
+ MisbehavingFixture fixture = new MisbehavingFixture();
+ fixture.blowUpInTearDown = true;
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+ Assert.AreEqual(1, result.Children.Count);
+
+ fixture.Reinitialize();
+ result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual( 1, fixture.setUpCount, "setUpCount" );
+ Assert.AreEqual( 1, fixture.tearDownCount, "tearDownCOunt" );
+ }
+
+ [Test]
+ public void HandleSetUpAndTearDownWithTestInName()
+ {
+ SetUpAndTearDownWithTestInName fixture = new SetUpAndTearDownWithTestInName();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual(1, fixture.setUpCount);
+ Assert.AreEqual(1, fixture.tearDownCount);
+ }
+
+ //[Test]
+ //public void RunningSingleMethodCallsSetUpAndTearDown()
+ //{
+ // SetUpAndTearDownFixture fixture = new SetUpAndTearDownFixture();
+ // TestSuite suite = TestBuilder.MakeFixture(fixture.GetType());
+ // suite.Fixture = fixture;
+ // Test test = (Test)suite.Tests[0];
+
+ // suite.Run(TestListener.NULL, new NameFilter(test.TestName));
+
+ // Assert.AreEqual(1, fixture.setUpCount);
+ // Assert.AreEqual(1, fixture.tearDownCount);
+ //}
+
+ [Test]
+ public void IgnoredFixtureShouldNotCallFixtureSetUpOrTearDown()
+ {
+ IgnoredFixture fixture = new IgnoredFixture();
+ TestSuite suite = new TestSuite("IgnoredFixtureSuite");
+ TestSuite fixtureSuite = TestBuilder.MakeFixture( fixture.GetType() );
+ Test test = (Test)fixtureSuite.Tests[0];
+ suite.Add( fixtureSuite );
+
+ TestBuilder.RunTest(fixtureSuite, fixture);
+ Assert.IsFalse( fixture.setupCalled, "TestFixtureSetUp called running fixture" );
+ Assert.IsFalse( fixture.teardownCalled, "TestFixtureTearDown called running fixture" );
+
+ TestBuilder.RunTest(suite, fixture);
+ Assert.IsFalse( fixture.setupCalled, "TestFixtureSetUp called running enclosing suite" );
+ Assert.IsFalse( fixture.teardownCalled, "TestFixtureTearDown called running enclosing suite" );
+
+ TestBuilder.RunTest(test, fixture);
+ Assert.IsFalse( fixture.setupCalled, "TestFixtureSetUp called running a test case" );
+ Assert.IsFalse( fixture.teardownCalled, "TestFixtureTearDown called running a test case" );
+ }
+
+ [Test]
+ public void FixtureWithNoTestsShouldCallFixtureSetUpOrTearDown()
+ {
+ FixtureWithNoTests fixture = new FixtureWithNoTests();
+
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.That( fixture.setupCalled, Is.True, "SetUp should be called for a fixture with no tests" );
+ Assert.That( fixture.teardownCalled, Is.True, "TearDown should be called for a fixture with no tests" );
+ }
+
+ [Test]
+ public void DisposeCalledWhenFixtureImplementsIDisposable()
+ {
+ DisposableFixture fixture = new DisposableFixture();
+ TestBuilder.RunTestFixture(fixture);
+ Assert.IsTrue(fixture.disposeCalled);
+ }
+ }
+
+#if !SILVERLIGHT && !NETCF
+ [TestFixture]
+ class ChangesMadeInFixtureSetUp
+ {
+ [TestFixtureSetUp]
+ public void TestFixtureSetUp()
+ {
+ GenericIdentity identity = new GenericIdentity("foo");
+ Thread.CurrentPrincipal = new GenericPrincipal(identity, new string[0]);
+
+ System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-GB");
+ Thread.CurrentThread.CurrentCulture = culture;
+ Thread.CurrentThread.CurrentUICulture = culture;
+ }
+
+ [Test]
+ public void TestThatChangesPersistUsingSameThread()
+ {
+ Assert.AreEqual("foo", Thread.CurrentPrincipal.Identity.Name);
+ Assert.AreEqual("en-GB", Thread.CurrentThread.CurrentCulture.Name);
+ Assert.AreEqual("en-GB", Thread.CurrentThread.CurrentUICulture.Name);
+ }
+
+#if !NUNITLITE
+ [Test, RequiresThread]
+ public void TestThatChangesPersistUsingSeparateThread()
+ {
+ Assert.AreEqual("foo", Thread.CurrentPrincipal.Identity.Name);
+ Assert.AreEqual("en-GB", Thread.CurrentThread.CurrentCulture.Name);
+ Assert.AreEqual("en-GB", Thread.CurrentThread.CurrentUICulture.Name);
+ }
+#endif
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/MaxTimeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/MaxTimeTests.cs
new file mode 100755
index 0000000..5af83bf
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/MaxTimeTests.cs
@@ -0,0 +1,86 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Tests
+{
+ /// <summary>
+ /// Tests for MaxTime decoration.
+ /// </summary>
+ [TestFixture]
+ public class MaxTimeTests
+ {
+ [Test,MaxTime(1000)]
+ public void MaxTimeNotExceeded()
+ {
+ }
+
+ // TODO: We need a way to simulate the clock reliably
+ [Test]
+ public void MaxTimeExceeded()
+ {
+ ITestResult suiteResult = TestBuilder.RunTestFixture(typeof(MaxTimeFixture));
+ Assert.AreEqual(ResultState.Failure, suiteResult.ResultState);
+ TestResult result = (TestResult)suiteResult.Children[0];
+ Assert.That(result.Message, Contains.Substring("exceeds maximum of 1ms"));
+ }
+
+ [Test, MaxTime(1000)]
+ [ExpectedException(typeof(AssertionException), ExpectedMessage = "Intentional Failure")]
+ public void FailureReport()
+ {
+ Assert.Fail("Intentional Failure");
+ }
+
+ [Test]
+ public void FailureReportHasPriorityOverMaxTime()
+ {
+ ITestResult result = TestBuilder.RunTestFixture(typeof(MaxTimeFixtureWithFailure));
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ result = (TestResult)result.Children[0];
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.That(result.Message, Is.EqualTo("Intentional Failure"));
+ }
+
+ [Test, MaxTime(1000), ExpectedException]
+ public void ErrorReport()
+ {
+ throw new Exception();
+ }
+
+ [Test]
+ public void ErrorReportHasPriorityOverMaxTime()
+ {
+ ITestResult result = TestBuilder.RunTestFixture(typeof(MaxTimeFixtureWithError));
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ result = (ITestResult)result.Children[0];
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+ Assert.That(result.Message, Contains.Substring("Exception message"));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/PairwiseTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/PairwiseTests.cs
new file mode 100755
index 0000000..b2bffaf
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/PairwiseTests.cs
@@ -0,0 +1,145 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework;
+using NUnit.Framework.Builders;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class PairwiseTest
+ {
+ [TestFixture]
+ public class LiveTest
+ {
+ private PairCounter pairsTested = new PairCounter();
+
+ [TestFixtureSetUp]
+ public void TestFixtureSetUp()
+ {
+ pairsTested = new PairCounter();
+ }
+
+ [TestFixtureTearDown]
+ public void TestFixtureTearDown()
+ {
+ Assert.That(pairsTested.Count, Is.EqualTo(16));
+ }
+
+ [Test, Pairwise]
+ public void Test(
+ [Values("a", "b", "c")] string a,
+ [Values("+", "-")] string b,
+ [Values("x", "y")] string c)
+ {
+ Console.WriteLine("Pairwise: {0} {1} {2}", a, b, c);
+
+ pairsTested[a + b] = null;
+ pairsTested[a + c] = null;
+ pairsTested[b + c] = null;
+ }
+ }
+
+ // Test data is taken from various sources. See "Lessons Learned
+ // in Software Testing" pp 53-59, for example. For orthogonal cases, see
+ // http://www.freequality.org/sites/www_freequality_org/documents/tools/Tagarray_files/tamatrix.htm
+ static internal object[] cases = new object[]
+ {
+#if ORIGINAL
+ new TestCaseData( new int[] { 2, 4 }, 8, 8 ).SetName("Test 2x4"),
+ new TestCaseData( new int[] { 2, 2, 2 }, 5, 4 ).SetName("Test 2x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2 }, 6, 6 ).SetName("Test 3x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2, 2 }, 7, 6 ).SetName("Test 3x2x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2, 2, 2 }, 8, 6 ).SetName("Test 3x2x2x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2, 2, 2, 2 }, 9, 8 ).SetName("Test 3x2x2x2x2x2"),
+ new TestCaseData( new int[] { 3, 3, 3 }, 12, 9 ).SetName("Test 3x3x3"),
+ new TestCaseData( new int[] { 4, 4, 4 }, 22, 16 ).SetName("Test 4x4x4"),
+ new TestCaseData( new int[] { 5, 5, 5 }, 34, 25 ).SetName("Test 5x5x5")
+#else
+ new TestCaseData( new int[] { 2, 4 }, 8, 8 ).SetName("Test 2x4"),
+ new TestCaseData( new int[] { 2, 2, 2 }, 5, 4 ).SetName("Test 2x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2 }, 7, 6 ).SetName("Test 3x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2, 2 }, 8, 6 ).SetName("Test 3x2x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2, 2, 2 }, 9, 6 ).SetName("Test 3x2x2x2x2"),
+ new TestCaseData( new int[] { 3, 2, 2, 2, 2, 2 }, 9, 8 ).SetName("Test 3x2x2x2x2x2"),
+ new TestCaseData( new int[] { 3, 3, 3 }, 9, 9 ).SetName("Test 3x3x3"),
+ new TestCaseData( new int[] { 4, 4, 4 }, 17, 16 ).SetName("Test 4x4x4"),
+ new TestCaseData( new int[] { 5, 5, 5 }, 27, 25 ).SetName("Test 5x5x5")
+#endif
+ };
+
+ [Test, TestCaseSource("cases")]
+ public void Test(int[] dimensions, int bestSoFar, int targetCases)
+ {
+ int features = dimensions.Length;
+
+ string[][] sources = new string[features][];
+
+ for (int i = 0; i < features; i++)
+ {
+ string featureName = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(i, 1);
+
+ int n = dimensions[i];
+ sources[i] = new string[n];
+ for (int j = 0; j < n; j++)
+ sources[i][j] = featureName + j.ToString();
+ }
+
+ CombiningStrategy strategy = new PairwiseStrategy(sources);
+
+ PairCounter pairs = new PairCounter();
+ int cases = 0;
+ foreach (NUnit.Framework.Internal.ParameterSet parms in strategy.GetTestCases())
+ {
+ for (int i = 1; i < features; i++)
+ for (int j = 0; j < i; j++)
+ {
+ string a = parms.Arguments[i] as string;
+ string b = parms.Arguments[j] as string;
+ pairs[a + b] = null;
+ }
+
+ ++cases;
+ }
+
+ int expectedPairs = 0;
+ for (int i = 1; i < features; i++)
+ for (int j = 0; j < i; j++)
+ expectedPairs += dimensions[i] * dimensions[j];
+
+ Assert.That(pairs.Count, Is.EqualTo(expectedPairs), "Number of pairs is incorrect");
+ Assert.That(cases, Is.AtMost(bestSoFar), "Regression: Number of test cases exceeded target previously reached");
+#if DEBUG
+ //Assert.That(cases, Is.AtMost(targetCases), "Number of test cases exceeded target");
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ class PairCounter : System.Collections.Generic.Dictionary<string, object> {}
+#else
+ class PairCounter : Hashtable { }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/ParameterizedTestFixtureTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/ParameterizedTestFixtureTests.cs
new file mode 100755
index 0000000..2d12864
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/ParameterizedTestFixtureTests.cs
@@ -0,0 +1,199 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture("hello", "hello", "goodbye")]
+ [TestFixture("zip", "zip")]
+ [TestFixture(42, 42, 99)]
+ public class ParameterizedTestFixture
+ {
+ private string eq1;
+ private string eq2;
+ private string neq;
+
+ public ParameterizedTestFixture(string eq1, string eq2, string neq)
+ {
+ this.eq1 = eq1;
+ this.eq2 = eq2;
+ this.neq = neq;
+ }
+
+ public ParameterizedTestFixture(string eq1, string eq2)
+ : this(eq1, eq2, null) { }
+
+ public ParameterizedTestFixture(int eq1, int eq2, int neq)
+ {
+ this.eq1 = eq1.ToString();
+ this.eq2 = eq2.ToString();
+ this.neq = neq.ToString();
+ }
+
+ [Test]
+ public void TestEquality()
+ {
+ Assert.AreEqual(eq1, eq2);
+ if (eq1 != null && eq2 != null)
+ Assert.AreEqual(eq1.GetHashCode(), eq2.GetHashCode());
+ }
+
+ [Test]
+ public void TestInequality()
+ {
+ Assert.AreNotEqual(eq1, neq);
+ if (eq1 != null && neq != null)
+ Assert.AreNotEqual(eq1.GetHashCode(), neq.GetHashCode());
+ }
+ }
+
+#if DYNAMIC_DATA
+ [TestFixture(42)]
+ public class ParameterizedTestFixtureWithDataSources
+ {
+ private int answer;
+
+ object[] myData = { new int[] { 6, 7 }, new int[] { 3, 14 } };
+
+ public ParameterizedTestFixtureWithDataSources(int val)
+ {
+ this.answer = val;
+ }
+
+ [Test, TestCaseSource("myData")]
+ public void CanAccessTestCaseSource(int x, int y)
+ {
+ Assert.That(x * y, Is.EqualTo(answer));
+ }
+
+ IEnumerable GenerateData()
+ {
+ for(int i = 1; i <= answer; i++)
+ if ( answer%i == 0 )
+ yield return new int[] { i, answer/i };
+ }
+
+ [Test, TestCaseSource("GenerateData")]
+ public void CanGenerateDataFromParameter(int x, int y)
+ {
+ Assert.That(x * y, Is.EqualTo(answer));
+ }
+
+ int[] intvals = new int[] { 1, 2, 3 };
+
+ [Test]
+ public void CanAccessValueSource(
+ [ValueSource("intvals")] int x)
+ {
+ Assert.That(answer % x == 0);
+ }
+ }
+#endif
+
+ public class ParameterizedTestFixtureNamingTests
+ {
+ TestSuite fixture;
+
+ [SetUp]
+ public void MakeFixture()
+ {
+ fixture = TestBuilder.MakeFixture(typeof(NUnit.TestData.ParameterizedTestFixture));
+ }
+
+ [Test]
+ public void TopLevelSuiteIsNamedCorrectly()
+ {
+ Assert.That(fixture.Name, Is.EqualTo("ParameterizedTestFixture"));
+ Assert.That(fixture.FullName, Is.EqualTo("NUnit.TestData.ParameterizedTestFixture"));
+ }
+
+ [Test]
+ public void SuiteHasCorrectNumberOfInstances()
+ {
+ Assert.That(fixture.Tests.Count, Is.EqualTo(2));
+ }
+
+ [Test]
+ public void FixtureInstancesAreNamedCorrectly()
+ {
+ string[] names = new string[fixture.Tests.Count];
+ string[] fullnames = new string[fixture.Tests.Count];
+ int index = 0;
+ foreach (Test test in fixture.Tests)
+ {
+ names[index] = test.Name;
+ fullnames[index] = test.FullName;
+ index++;
+ }
+
+ Assert.That(names, Is.EquivalentTo(new string[] {
+ "ParameterizedTestFixture(1)", "ParameterizedTestFixture(2)" }));
+ Assert.That(fullnames, Is.EquivalentTo(new string[] {
+ "NUnit.TestData.ParameterizedTestFixture(1)", "NUnit.TestData.ParameterizedTestFixture(2)" }));
+ }
+
+ [Test]
+ public void MethodWithoutParamsIsNamedCorrectly()
+ {
+ TestSuite instance = (TestSuite)fixture.Tests[0];
+ Test method = TestFinder.Find("MethodWithoutParams", instance, false);
+ Assert.That(method, Is.Not.Null );
+ Assert.That(method.FullName, Is.EqualTo(instance.FullName + ".MethodWithoutParams"));
+ }
+
+ [Test]
+ public void MethodWithParamsIsNamedCorrectly()
+ {
+ TestSuite instance = (TestSuite)fixture.Tests[0];
+ TestSuite method = (TestSuite)TestFinder.Find("MethodWithParams", instance, false);
+ Assert.That(method, Is.Not.Null);
+
+ Test testcase = (Test)method.Tests[0];
+ Assert.That(testcase.Name, Is.EqualTo("MethodWithParams(10,20)"));
+ Assert.That(testcase.FullName, Is.EqualTo(instance.FullName + ".MethodWithParams(10,20)"));
+ }
+ }
+
+ public class ParameterizedTestFixtureTests
+ {
+ [Test]
+ public void CanSpecifyCategory()
+ {
+ Test fixture = TestBuilder.MakeFixture(typeof(NUnit.TestData.TestFixtureWithSingleCategory));
+ Assert.AreEqual("XYZ", fixture.Properties.Get(PropertyNames.Category));
+ }
+
+ [Test]
+ public void CanSpecifyMultipleCategories()
+ {
+ Test fixture = TestBuilder.MakeFixture(typeof(NUnit.TestData.TestFixtureWithMultipleCategories));
+ Assert.AreEqual(new string[] { "X", "Y", "Z" }, fixture.Properties[PropertyNames.Category]);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/PropertyAttributeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/PropertyAttributeTests.cs
new file mode 100755
index 0000000..e8025df
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/PropertyAttributeTests.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+using NUnit.TestData.PropertyAttributeTests;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class PropertyAttributeTests
+ {
+ TestSuite fixture;
+
+ [SetUp]
+ public void CreateFixture()
+ {
+ fixture = TestBuilder.MakeFixture( typeof( FixtureWithProperties ) );
+ }
+
+ [Test]
+ public void PropertyWithStringValue()
+ {
+ Test test1 = (Test)fixture.Tests[0];
+ Assert.That( test1.Properties["user"].Contains("Charlie"));
+ }
+
+ [Test]
+ public void PropertiesWithNumericValues()
+ {
+ Test test2 = (Test)fixture.Tests[1];
+ Assert.AreEqual( 10.0, test2.Properties.Get("X") );
+ Assert.AreEqual( 17.0, test2.Properties.Get("Y") );
+ }
+
+ [Test]
+ public void PropertyWorksOnFixtures()
+ {
+ Assert.AreEqual( "SomeClass", fixture.Properties.Get("ClassUnderTest") );
+ }
+
+ [Test]
+ public void CanDeriveFromPropertyAttribute()
+ {
+ Test test3 = (Test)fixture.Tests[2];
+ Assert.AreEqual( 5, test3.Properties.Get("Priority") );
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/RepeatedTestTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/RepeatedTestTests.cs
new file mode 100755
index 0000000..34e4e9f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/RepeatedTestTests.cs
@@ -0,0 +1,115 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+#if false
+using System;
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData.RepeatedTestFixture;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class RepeatedTestTests
+ {
+ private MethodInfo successMethod;
+ private MethodInfo failOnFirstMethod;
+ private MethodInfo failOnThirdMethod;
+
+ [SetUp]
+ public void SetUp()
+ {
+ Type testType = typeof(RepeatSuccessFixture);
+ successMethod = testType.GetMethod ("RepeatSuccess");
+ testType = typeof(RepeatFailOnFirstFixture);
+ failOnFirstMethod = testType.GetMethod("RepeatFailOnFirst");
+ testType = typeof(RepeatFailOnThirdFixture);
+ failOnThirdMethod = testType.GetMethod("RepeatFailOnThird");
+ }
+
+ [Test]
+ public void RepeatSuccess()
+ {
+ Assert.IsNotNull (successMethod);
+ RepeatSuccessFixture fixture = new RepeatSuccessFixture();
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.IsTrue(result.ResultState == ResultState.Success);
+ Assert.AreEqual(1, fixture.FixtureSetupCount);
+ Assert.AreEqual(1, fixture.FixtureTeardownCount);
+ Assert.AreEqual(3, fixture.SetupCount);
+ Assert.AreEqual(3, fixture.TeardownCount);
+ Assert.AreEqual(3, fixture.Count);
+ }
+
+ [Test]
+ public void RepeatFailOnFirst()
+ {
+ Assert.IsNotNull (failOnFirstMethod);
+ RepeatFailOnFirstFixture fixture = new RepeatFailOnFirstFixture();
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.IsFalse(result.ResultState == ResultState.Success);
+ Assert.AreEqual(1, fixture.SetupCount);
+ Assert.AreEqual(1, fixture.TeardownCount);
+ Assert.AreEqual(1, fixture.Count);
+ }
+
+ [Test]
+ public void RepeatFailOnThird()
+ {
+ Assert.IsNotNull (failOnThirdMethod);
+ RepeatFailOnThirdFixture fixture = new RepeatFailOnThirdFixture();
+ ITestResult result = TestBuilder.RunTestFixture(fixture);
+
+ Assert.IsFalse(result.ResultState == ResultState.Success);
+ Assert.AreEqual(3, fixture.SetupCount);
+ Assert.AreEqual(3, fixture.TeardownCount);
+ Assert.AreEqual(3, fixture.Count);
+ }
+
+ [Test]
+ public void IgnoreWorksWithRepeatedTest()
+ {
+ RepeatedTestWithIgnore fixture = new RepeatedTestWithIgnore();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.AreEqual( 0, fixture.SetupCount );
+ Assert.AreEqual( 0, fixture.TeardownCount );
+ Assert.AreEqual( 0, fixture.Count );
+ }
+
+ [Test]
+ public void CategoryWorksWithRepeatedTest()
+ {
+ TestSuite suite = TestBuilder.MakeFixture(typeof(RepeatedTestWithCategory));
+ Test test = suite.Tests[0] as Test;
+ System.Collections.IList categories = test.Properties["Category"];
+ Assert.IsNotNull(categories);
+ Assert.AreEqual(1, categories.Count);
+ Assert.AreEqual("SAMPLE", categories[0]);
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/SetCultureAttributeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/SetCultureAttributeTests.cs
new file mode 100755
index 0000000..84bd92c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/SetCultureAttributeTests.cs
@@ -0,0 +1,129 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+using System.Globalization;
+using NUnit.Framework;
+using NUnit.TestData.CultureAttributeData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class SetCultureAttributeTests
+ {
+ private CultureInfo originalCulture;
+ private CultureInfo originalUICulture;
+
+ [SetUp]
+ public void Setup()
+ {
+ originalCulture = CultureInfo.CurrentCulture;
+ originalUICulture = CultureInfo.CurrentUICulture;
+ }
+
+ [Test, SetUICulture("fr-FR")]
+ public void SetUICultureOnlyToFrench()
+ {
+ Assert.AreEqual(CultureInfo.CurrentCulture, originalCulture, "Culture should not change");
+ Assert.AreEqual("fr-FR", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetUICulture("fr-CA")]
+ public void SetUICultureOnlyToFrenchCanadian()
+ {
+ Assert.AreEqual(CultureInfo.CurrentCulture, originalCulture, "Culture should not change");
+ Assert.AreEqual("fr-CA", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetUICulture("ru-RU")]
+ public void SetUICultureOnlyToRussian()
+ {
+ Assert.AreEqual(CultureInfo.CurrentCulture, originalCulture, "Culture should not change");
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetCulture("fr-FR"), SetUICulture("fr-FR")]
+ public void SetBothCulturesToFrench()
+ {
+ Assert.AreEqual("fr-FR", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("fr-FR", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetCulture("fr-CA"), SetUICulture("fr-CA")]
+ public void SetBothCulturesToFrenchCanadian()
+ {
+ Assert.AreEqual("fr-CA", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("fr-CA", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetCulture("ru-RU"), SetUICulture("ru-RU")]
+ public void SetBothCulturesToRussian()
+ {
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetCulture("fr-FR"), SetUICulture("fr-CA")]
+ public void SetMixedCulturesToFrenchAndUIFrenchCanadian()
+ {
+ Assert.AreEqual("fr-FR", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("fr-CA", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetCulture("ru-RU"), SetUICulture("en-US")]
+ public void SetMixedCulturesToRussianAndUIEnglishUS()
+ {
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("en-US", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [TestFixture, SetCulture("ru-RU"), SetUICulture("ru-RU")]
+ public class NestedBehavior
+ {
+ [Test]
+ public void InheritedRussian()
+ {
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+
+ [Test, SetUICulture("fr-FR")]
+ public void InheritedRussianWithUIFrench()
+ {
+ Assert.AreEqual("ru-RU", CultureInfo.CurrentCulture.Name, "Culture not set correctly");
+ Assert.AreEqual("fr-FR", CultureInfo.CurrentUICulture.Name, "UICulture not set correctly");
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test, SetCulture("de-DE")]
+ [TestCase(ExpectedResult="01.06.2010 00:00:00")]
+ public string UseWithParameterizedTest()
+ {
+ return new DateTime(2010, 6, 1).ToString();
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/TestCaseAttributeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/TestCaseAttributeTests.cs
new file mode 100755
index 0000000..0aa5c8a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/TestCaseAttributeTests.cs
@@ -0,0 +1,322 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData.TestCaseAttributeFixture;
+using NUnit.TestUtilities;
+using System.Collections;
+
+namespace NUnit.Framework.Tests
+{
+ [TestFixture]
+ public class TestCaseAttributeTests
+ {
+ [TestCase(12, 3, 4)]
+ [TestCase(12, 2, 6)]
+ [TestCase(12, 4, 3)]
+ [TestCase(12, 0, 0, ExpectedException = typeof(System.DivideByZeroException))]
+ [TestCase(12, 0, 0, ExpectedExceptionName = "System.DivideByZeroException")]
+ public void IntegerDivisionWithResultPassedToTest(int n, int d, int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ [TestCase(12, 3, ExpectedResult = 4)]
+ [TestCase(12, 2, ExpectedResult = 6)]
+ [TestCase(12, 4, ExpectedResult = 3)]
+ [TestCase(12, 0, ExpectedException = typeof(System.DivideByZeroException))]
+ [TestCase(12, 0, ExpectedExceptionName = "System.DivideByZeroException",
+ TestName = "DivisionByZeroThrowsException")]
+ public int IntegerDivisionWithResultCheckedByNUnit(int n, int d)
+ {
+ return n / d;
+ }
+
+ [TestCase(2, 2, ExpectedResult=4)]
+ public double CanConvertIntToDouble(double x, double y)
+ {
+ return x + y;
+ }
+
+ [TestCase("2.2", "3.3", ExpectedResult = 5.5)]
+ public decimal CanConvertStringToDecimal(decimal x, decimal y)
+ {
+ return x + y;
+ }
+
+ [TestCase(2.2, 3.3, ExpectedResult = 5.5)]
+ public decimal CanConvertDoubleToDecimal(decimal x, decimal y)
+ {
+ return x + y;
+ }
+
+ [TestCase(5, 2, ExpectedResult = 7)]
+ public decimal CanConvertIntToDecimal(decimal x, decimal y)
+ {
+ return x + y;
+ }
+
+ [TestCase(5, 2, ExpectedResult = 7)]
+ public short CanConvertSmallIntsToShort(short x, short y)
+ {
+ return (short)(x + y);
+ }
+
+ [TestCase(5, 2, ExpectedResult = 7)]
+ public byte CanConvertSmallIntsToByte(byte x, byte y)
+ {
+ return (byte)(x + y);
+ }
+
+ [TestCase(5, 2, ExpectedResult = 7)]
+ public sbyte CanConvertSmallIntsToSByte(sbyte x, sbyte y)
+ {
+ return (sbyte)(x + y);
+ }
+
+ [Test]
+ public void ConversionOverflowMakesTestNotRunnable()
+ {
+ Test test = (Test)TestBuilder.MakeParameterizedMethodSuite(
+ typeof(TestCaseAttributeFixture), "MethodCausesConversionOverflow").Tests[0];
+ Assert.AreEqual(RunState.NotRunnable, test.RunState);
+ }
+
+ [TestCase("12-October-1942")]
+ public void CanConvertStringToDateTime(DateTime dt)
+ {
+ Assert.AreEqual(1942, dt.Year);
+ }
+
+ [TestCase(42, ExpectedException = typeof(System.Exception),
+ ExpectedMessage = "Test Exception")]
+ public void CanSpecifyExceptionMessage(int a)
+ {
+ throw new System.Exception("Test Exception");
+ }
+
+ [TestCase(42, ExpectedException = typeof(System.Exception),
+ ExpectedMessage = "Test Exception",
+ MatchType=MessageMatch.StartsWith)]
+ public void CanSpecifyExceptionMessageAndMatchType(int a)
+ {
+ throw new System.Exception("Test Exception thrown here");
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestCase(null)]
+ public void CanPassNullAsFirstArgument(object a)
+ {
+ Assert.IsNull(a);
+ }
+#endif
+
+ [TestCase(new object[] { 1, "two", 3.0 })]
+ [TestCase(new object[] { "zip" })]
+ public void CanPassObjectArrayAsFirstArgument(object[] a)
+ {
+ }
+
+ [TestCase(new object[] { "a", "b" })]
+ public void CanPassArrayAsArgument(object[] array)
+ {
+ Assert.AreEqual("a", array[0]);
+ Assert.AreEqual("b", array[1]);
+ }
+
+ [TestCase("a", "b")]
+ public void ArgumentsAreCoalescedInObjectArray(object[] array)
+ {
+ Assert.AreEqual("a", array[0]);
+ Assert.AreEqual("b", array[1]);
+ }
+
+ [TestCase(1, "b")]
+ public void ArgumentsOfDifferentTypeAreCoalescedInObjectArray(object[] array)
+ {
+ Assert.AreEqual(1, array[0]);
+ Assert.AreEqual("b", array[1]);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestCase(ExpectedResult = null)]
+ public object ResultCanBeNull()
+ {
+ return null;
+ }
+#endif
+
+ [TestCase("a", "b")]
+ public void HandlesParamsArrayAsSoleArgument(params string[] array)
+ {
+ Assert.AreEqual("a", array[0]);
+ Assert.AreEqual("b", array[1]);
+ }
+
+ [TestCase("a")]
+ public void HandlesParamsArrayWithOneItemAsSoleArgument(params string[] array)
+ {
+ Assert.AreEqual("a", array[0]);
+ }
+
+ [TestCase("a", "b", "c", "d")]
+ public void HandlesParamsArrayAsLastArgument(string s1, string s2, params object[] array)
+ {
+ Assert.AreEqual("a", s1);
+ Assert.AreEqual("b", s2);
+ Assert.AreEqual("c", array[0]);
+ Assert.AreEqual("d", array[1]);
+ }
+
+ [TestCase("a", "b")]
+ public void HandlesParamsArrayWithNoItemsAsLastArgument(string s1, string s2, params object[] array)
+ {
+ Assert.AreEqual("a", s1);
+ Assert.AreEqual("b", s2);
+ Assert.AreEqual(0, array.Length);
+ }
+
+ [TestCase("a", "b", "c")]
+ public void HandlesParamsArrayWithOneItemAsLastArgument(string s1, string s2, params object[] array)
+ {
+ Assert.AreEqual("a", s1);
+ Assert.AreEqual("b", s2);
+ Assert.AreEqual("c", array[0]);
+ }
+
+ [Test]
+ public void CanSpecifyDescription()
+ {
+ Test test = (Test)TestBuilder.MakeParameterizedMethodSuite(
+ typeof(TestCaseAttributeFixture), "MethodHasDescriptionSpecified").Tests[0];
+ Assert.AreEqual("My Description", test.Properties.Get(PropertyNames.Description));
+ }
+
+ [Test]
+ public void CanSpecifyTestName()
+ {
+ Test test = (Test)TestBuilder.MakeParameterizedMethodSuite(
+ typeof(TestCaseAttributeFixture), "MethodHasTestNameSpecified").Tests[0];
+ Assert.AreEqual("XYZ", test.Name);
+ Assert.AreEqual("NUnit.TestData.TestCaseAttributeFixture.TestCaseAttributeFixture.XYZ", test.FullName);
+ }
+
+ [Test]
+ public void CanSpecifyCategory()
+ {
+ Test test = (Test)TestBuilder.MakeTestCase(
+ typeof(TestCaseAttributeFixture), "MethodHasSingleCategory").Tests[0];
+ IList categories = test.Properties["Category"];
+ Assert.AreEqual(new string[] { "XYZ" }, categories);
+ }
+
+ [Test]
+ public void CanSpecifyMultipleCategories()
+ {
+ Test test = (Test)TestBuilder.MakeTestCase(
+ typeof(TestCaseAttributeFixture), "MethodHasMultipleCategories").Tests[0];
+ IList categories = test.Properties["Category"];
+ Assert.AreEqual(new string[] { "X", "Y", "Z" }, categories);
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseAttributeFixture), "MethodThrowsExpectedException").Children[0];
+ Assert.AreEqual(ResultState.Success, result.ResultState);
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException_WrongException()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseAttributeFixture), "MethodThrowsWrongException").Children[0];
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.That(result.Message, Is.StringStarting("An unexpected exception type was thrown"));
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException_WrongMessage()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseAttributeFixture), "MethodThrowsExpectedExceptionWithWrongMessage").Children[0];
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.That(result.Message, Is.StringStarting("The exception message text was incorrect"));
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException_NoneThrown()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseAttributeFixture), "MethodThrowsNoException").Children[0];
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.AreEqual("System.ArgumentNullException was expected", result.Message);
+ }
+
+ [Test]
+ public void IgnoreTakesPrecedenceOverExpectedException()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseAttributeFixture), "MethodCallsIgnore").Children[0];
+ Assert.AreEqual(ResultState.Ignored, result.ResultState);
+ Assert.AreEqual("Ignore this", result.Message);
+ }
+
+ [Test]
+ public void CanIgnoreIndividualTestCases()
+ {
+ TestSuite test = (TestSuite)TestBuilder.MakeTestCase(
+ typeof(TestCaseAttributeFixture), "MethodWithIgnoredTestCases");
+
+ Test testCase = TestFinder.Find("MethodWithIgnoredTestCases(1)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Runnable));
+
+ testCase = TestFinder.Find("MethodWithIgnoredTestCases(2)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Ignored));
+
+ testCase = TestFinder.Find("MethodWithIgnoredTestCases(3)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Ignored));
+ Assert.That(testCase.Properties.GetSetting(PropertyNames.SkipReason, ""), Is.EqualTo("Don't Run Me!"));
+ }
+
+ [Test]
+ public void CanMarkIndividualTestCasesExplicit()
+ {
+ TestSuite test = (TestSuite)TestBuilder.MakeTestCase(
+ typeof(TestCaseAttributeFixture), "MethodWithExplicitTestCases");
+
+ Test testCase = TestFinder.Find("MethodWithExplicitTestCases(1)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Runnable));
+
+ testCase = TestFinder.Find("MethodWithExplicitTestCases(2)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Explicit));
+
+ testCase = TestFinder.Find("MethodWithExplicitTestCases(3)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Explicit));
+ Assert.That(testCase.Properties.GetSetting(PropertyNames.SkipReason, ""), Is.EqualTo("Connection failing"));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/TestCaseSourceTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/TestCaseSourceTests.cs
new file mode 100755
index 0000000..8402c03
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/TestCaseSourceTests.cs
@@ -0,0 +1,354 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.Collections;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData.TestCaseSourceAttributeFixture;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Tests
+{
+ [TestFixture]
+ public class TestCaseSourceTests
+ {
+ [Test, TestCaseSource("StaticProperty")]
+ public void SourceCanBeStaticProperty(string source)
+ {
+ Assert.AreEqual("StaticProperty", source);
+ }
+
+ internal static IEnumerable StaticProperty
+ {
+ get { return new object[] { new object[] { "StaticProperty" } }; }
+ }
+
+ [Test, TestCaseSource("InstanceProperty")]
+ public void SourceCanBeInstanceProperty(string source)
+ {
+ Assert.AreEqual("InstanceProperty", source);
+ }
+
+ internal IEnumerable InstanceProperty
+ {
+ get { return new object[] { new object[] { "InstanceProperty" } }; }
+ }
+
+ [Test, TestCaseSource("StaticMethod")]
+ public void SourceCanBeStaticMethod(string source)
+ {
+ Assert.AreEqual("StaticMethod", source);
+ }
+
+ internal static IEnumerable StaticMethod()
+ {
+ return new object[] { new object[] { "StaticMethod" } };
+ }
+
+ [Test, TestCaseSource("InstanceMethod")]
+ public void SourceCanBeInstanceMethod(string source)
+ {
+ Assert.AreEqual("InstanceMethod", source);
+ }
+
+ internal IEnumerable InstanceMethod()
+ {
+ return new object[] { new object[] { "InstanceMethod" } };
+ }
+
+ [Test, TestCaseSource("StaticField")]
+ public void SourceCanBeStaticField(string source)
+ {
+ Assert.AreEqual("StaticField", source);
+ }
+
+ internal static object[] StaticField =
+ { new object[] { "StaticField" } };
+
+ [Test, TestCaseSource("InstanceField")]
+ public void SourceCanBeInstanceField(string source)
+ {
+ Assert.AreEqual("InstanceField", source);
+ }
+
+ internal static object[] InstanceField =
+ { new object[] { "InstanceField" } };
+
+#if CLR_2_0 || CLR_4_0
+ [Test, TestCaseSource(typeof(DataSourceClass))]
+ public void SourceCanBeInstanceOfIEnumerable(string source)
+ {
+ Assert.AreEqual("DataSourceClass", source);
+ }
+
+ internal class DataSourceClass : IEnumerable
+ {
+ public IEnumerator GetEnumerator()
+ {
+ yield return "DataSourceClass";
+ }
+ }
+#endif
+
+ [Test, TestCaseSource("MyData")]
+ public void SourceMayReturnArgumentsAsObjectArray(int n, int d, int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ [TestCaseSource("MyData")]
+ public void TestAttributeIsOptional(int n, int d, int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ [Test, TestCaseSource("MyIntData")]
+ public void SourceMayReturnArgumentsAsIntArray(int n, int d, int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ [Test, TestCaseSource("EvenNumbers")]
+ public void SourceMayReturnSinglePrimitiveArgumentAlone(int n)
+ {
+ Assert.AreEqual(0, n % 2);
+ }
+
+ [Test, TestCaseSource("Params")]
+ public int SourceMayReturnArgumentsAsParamSet(int n, int d)
+ {
+ return n / d;
+ }
+
+ [Test]
+ [TestCaseSource("MyData")]
+ [TestCaseSource("MoreData", Category="Extra")]
+ [TestCase(12, 0, 0, ExpectedException = typeof(System.DivideByZeroException))]
+ public void TestMayUseMultipleSourceAttributes(int n, int d, int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ [Test, TestCaseSource("FourArgs")]
+ public void TestWithFourArguments(int n, int d, int q, int r)
+ {
+ Assert.AreEqual(q, n / d);
+ Assert.AreEqual(r, n % d);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test, TestCaseSource(typeof(DivideDataProvider), "HereIsTheData")]
+ //[Category("Top")]
+ public void SourceMayBeInAnotherClass(int n, int d, int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+#endif
+
+ [Test, TestCaseSource(typeof(DivideDataProviderWithReturnValue), "TestCases")]
+ public int SourceMayBeInAnotherClassWithReturn(int n, int d)
+ {
+ return n / d;
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseSourceAttributeFixture), "MethodThrowsExpectedException").Children[0];
+ Assert.AreEqual(ResultState.Success, result.ResultState);
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException_WrongException()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseSourceAttributeFixture), "MethodThrowsWrongException").Children[0];
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.That(result.Message, Is.StringStarting("An unexpected exception type was thrown"));
+ }
+
+ [Test]
+ public void CanSpecifyExpectedException_NoneThrown()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseSourceAttributeFixture), "MethodThrowsNoException").Children[0];
+ Assert.AreEqual(ResultState.Failure, result.ResultState);
+ Assert.AreEqual("System.ArgumentNullException was expected", result.Message);
+ }
+
+ [Test]
+ public void IgnoreTakesPrecedenceOverExpectedException()
+ {
+ ITestResult result = (ITestResult)TestBuilder.RunTestCase(
+ typeof(TestCaseSourceAttributeFixture), "MethodCallsIgnore").Children[0];
+ Assert.AreEqual(ResultState.Ignored, result.ResultState);
+ Assert.AreEqual("Ignore this", result.Message);
+ }
+
+ [Test]
+ public void CanIgnoreIndividualTestCases()
+ {
+ TestSuite test = (TestSuite)TestBuilder.MakeTestCase(
+ typeof(TestCaseSourceAttributeFixture), "MethodWithIgnoredTestCases");
+
+ Test testCase = TestFinder.MustFind("MethodWithIgnoredTestCases(1)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Runnable));
+
+ testCase = TestFinder.MustFind("MethodWithIgnoredTestCases(2)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Ignored));
+
+ testCase = TestFinder.MustFind("MethodWithIgnoredTestCases(3)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Ignored));
+ Assert.That(testCase.Properties.GetSetting(PropertyNames.SkipReason, ""), Is.EqualTo("Don't Run Me!"));
+ }
+
+ [Test]
+ public void CanMarkIndividualTestCasesExplicit()
+ {
+ TestSuite test = (TestSuite)TestBuilder.MakeTestCase(
+ typeof(TestCaseSourceAttributeFixture), "MethodWithExplicitTestCases");
+
+ Test testCase = TestFinder.Find("MethodWithExplicitTestCases(1)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Runnable));
+
+ testCase = TestFinder.Find("MethodWithExplicitTestCases(2)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Explicit));
+
+ testCase = TestFinder.Find("MethodWithExplicitTestCases(3)", test, false);
+ Assert.That(testCase.RunState, Is.EqualTo(RunState.Explicit));
+ Assert.That(testCase.Properties.GetSetting(PropertyNames.SkipReason, ""), Is.EqualTo("Connection failing"));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void HandlesExceptionInTestCaseSource()
+ {
+ Test test = (Test)TestBuilder.MakeParameterizedMethodSuite(
+ typeof(TestCaseSourceAttributeFixture), "MethodWithSourceThrowingException").Tests[0];
+ Assert.AreEqual(RunState.NotRunnable, test.RunState);
+ ITestResult result = TestBuilder.RunTest(test, null);
+ Assert.AreEqual(ResultState.NotRunnable, result.ResultState);
+ Assert.AreEqual("System.Exception : my message", result.Message);
+ }
+#endif
+
+#if !NUNITLITE
+ [TestCaseSource("exception_source"), Explicit]
+ public void HandlesExceptioninTestCaseSource_GuiDisplay(string lhs, string rhs)
+ {
+ Assert.AreEqual(lhs, rhs);
+ }
+#endif
+
+ internal object[] testCases =
+ {
+ new TestCaseData(
+ new string[] { "A" },
+ new string[] { "B" })
+ };
+
+ [Test, TestCaseSource("testCases")]
+ public void MethodTakingTwoStringArrays(string[] a, string[] b)
+ {
+ Assert.That(a, Is.TypeOf(typeof(string[])));
+ Assert.That(b, Is.TypeOf(typeof(string[])));
+ }
+
+ #region Sources used by the tests
+ internal static object[] MyData = new object[] {
+ new object[] { 12, 3, 4 },
+ new object[] { 12, 4, 3 },
+ new object[] { 12, 6, 2 } };
+
+ internal static object[] MyIntData = new object[] {
+ new int[] { 12, 3, 4 },
+ new int[] { 12, 4, 3 },
+ new int[] { 12, 6, 2 } };
+
+ internal static object[] FourArgs = new object[] {
+ new TestCaseData( 12, 3, 4, 0 ),
+ new TestCaseData( 12, 4, 3, 0 ),
+ new TestCaseData( 12, 5, 2, 2 ) };
+
+ internal static int[] EvenNumbers = new int[] { 2, 4, 6, 8 };
+
+ internal static object[] MoreData = new object[] {
+ new object[] { 12, 1, 12 },
+ new object[] { 12, 2, 6 } };
+
+ internal static object[] Params = new object[] {
+ new TestCaseData(24, 3).Returns(8),
+ new TestCaseData(24, 2).Returns(12) };
+
+#if CLR_2_0 || CLR_4_0
+ public class DivideDataProvider
+ {
+ public static IEnumerable HereIsTheData
+ {
+ get
+ {
+ yield return new TestCaseData(0, 0, 0)
+ .SetName("ThisOneShouldThrow")
+ .SetDescription("Demonstrates use of ExpectedException")
+ .SetCategory("Junk")
+ .SetProperty("MyProp", "zip")
+ .Throws(typeof(System.DivideByZeroException));
+ yield return new object[] { 100, 20, 5 };
+ yield return new object[] { 100, 4, 25 };
+ }
+ }
+ }
+#endif
+
+ public class DivideDataProviderWithReturnValue
+ {
+ public static IEnumerable TestCases
+ {
+ get
+ {
+ return new object[] {
+ new TestCaseData(12, 3).Returns(5).Throws(typeof(AssertionException)).SetName("TC1"),
+ new TestCaseData(12, 2).Returns(6).SetName("TC2"),
+ new TestCaseData(12, 4).Returns(3).SetName("TC3")
+ };
+ }
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ internal static IEnumerable exception_source
+ {
+ get
+ {
+ yield return new TestCaseData("a", "a");
+ yield return new TestCaseData("b", "b");
+
+ throw new System.Exception("my message");
+ }
+ }
+#endif
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/TestDummy.cs b/NUnitLite-0.9.0/src/tests/Attributes/TestDummy.cs
new file mode 100755
index 0000000..075bbb8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/TestDummy.cs
@@ -0,0 +1,78 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Attributes
+{
+ public class TestDummy : Test
+ {
+ public TestDummy() : base("TestDummy") { }
+
+ #region Overrides
+
+ public string TestKind
+ {
+ get { return "dummy-test"; }
+ }
+
+ public override bool HasChildren
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public override System.Collections.Generic.IList<ITest> Tests
+#else
+ public override System.Collections.IList Tests
+#endif
+ {
+ get
+ {
+ return new ITest[0];
+ }
+ }
+
+ public override XmlNode AddToXml(XmlNode parentNode, bool recursive)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override TestResult MakeTestResult()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override string XmlElementName
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/TestFixtureAttributeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/TestFixtureAttributeTests.cs
new file mode 100755
index 0000000..be81aae
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/TestFixtureAttributeTests.cs
@@ -0,0 +1,92 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Attributes
+{
+ public class TestFixtureAttributeTests
+ {
+ static object[] fixtureArgs = new object[] { 10, 20, "Charlie" };
+#if CLR_2_0 || CLR_4_0
+ static Type[] typeArgs = new Type[] { typeof(int), typeof(string) };
+ static object[] combinedArgs = new object[] { typeof(int), typeof(string), 10, 20, "Charlie" };
+#endif
+
+ [Test]
+ public void ConstructWithoutArguments()
+ {
+ TestFixtureAttribute attr = new TestFixtureAttribute();
+ Assert.That(attr.Arguments.Length == 0);
+#if CLR_2_0 || CLR_4_0
+ Assert.That(attr.TypeArgs.Length == 0);
+#endif
+ }
+
+ [Test]
+ public void ConstructWithFixtureArgs()
+ {
+ TestFixtureAttribute attr = new TestFixtureAttribute(fixtureArgs);
+ Assert.That(attr.Arguments, Is.EqualTo( fixtureArgs ) );
+#if CLR_2_0 || CLR_4_0
+ Assert.That(attr.TypeArgs.Length == 0 );
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void ConstructWithJustTypeArgs()
+ {
+ TestFixtureAttribute attr = new TestFixtureAttribute(typeArgs);
+ Assert.That(attr.Arguments.Length == 0);
+ Assert.That(attr.TypeArgs, Is.EqualTo(typeArgs));
+ }
+
+ [Test]
+ public void ConstructWithNoArgumentsAndSetTypeArgs()
+ {
+ TestFixtureAttribute attr = new TestFixtureAttribute();
+ attr.TypeArgs = typeArgs;
+ Assert.That(attr.Arguments.Length == 0);
+ Assert.That(attr.TypeArgs, Is.EqualTo(typeArgs));
+ }
+
+ [Test]
+ public void ConstructWithFixtureArgsAndSetTypeArgs()
+ {
+ TestFixtureAttribute attr = new TestFixtureAttribute(fixtureArgs);
+ attr.TypeArgs = typeArgs;
+ Assert.That(attr.Arguments, Is.EqualTo(fixtureArgs));
+ Assert.That(attr.TypeArgs, Is.EqualTo(typeArgs));
+ }
+
+ [Test]
+ public void ConstructWithCombinedArgs()
+ {
+ TestFixtureAttribute attr = new TestFixtureAttribute(combinedArgs);
+ Assert.That(attr.Arguments, Is.EqualTo(fixtureArgs));
+ Assert.That(attr.TypeArgs, Is.EqualTo(typeArgs));
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/TheoryTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/TheoryTests.cs
new file mode 100755
index 0000000..30ad0e3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/TheoryTests.cs
@@ -0,0 +1,163 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+using NUnit.TestData.TheoryFixture;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Tests
+{
+ public class TheoryTests
+ {
+ static readonly Type fixtureType = typeof(TheoryFixture);
+
+ [Test]
+ public void TheoryWithNoArgumentsIsTreatedAsTest()
+ {
+ TestAssert.IsRunnable(fixtureType, "TheoryWithNoArguments", ResultState.Success);
+ }
+
+ [Test]
+ public void TheoryWithNoDatapointsIsNotRunnable()
+ {
+ TestAssert.IsNotRunnable(fixtureType, "TheoryWithArgumentsButNoDatapoints");
+ }
+
+ [Test]
+ public void TheoryWithDatapointsIsRunnable()
+ {
+ Test test = TestBuilder.MakeTestCase(fixtureType, "TheoryWithArgumentsAndDatapoints");
+ TestAssert.IsRunnable(test);
+ Assert.That(test.TestCaseCount, Is.EqualTo(9));
+ }
+
+ [Test]
+ public void BooleanArgumentsAreSuppliedAutomatically()
+ {
+ Test test = TestBuilder.MakeTestCase(fixtureType, "TestWithBooleanArguments");
+ TestAssert.IsRunnable(test);
+ Assert.That(test.TestCaseCount, Is.EqualTo(4));
+ }
+
+ [Datapoint]
+ internal object nullObj = null;
+
+ [Theory]
+ public void NullDatapointIsOK(object o)
+ {
+ Assert.Null(o);
+ Assert.Null(nullObj); // to avoid a warning
+ }
+
+
+ [Test]
+ public void EnumArgumentsAreSuppliedAutomatically()
+ {
+ Test test = TestBuilder.MakeTestCase(fixtureType, "TestWithEnumAsArgument");
+ TestAssert.IsRunnable(test);
+#if CLR_2_0 || CLR_4_0
+ Assert.That(test.TestCaseCount, Is.EqualTo(16));
+#else
+ Assert.That(test.TestCaseCount, Is.EqualTo(15)); // No GenericParameter member
+#endif
+ Assert.That(test.TestCaseCount, Is.EqualTo(TypeHelper.GetEnumValues(typeof(AttributeTargets)).Length));
+ }
+
+ [Theory]
+ public void SquareRootWithAllGoodValues(
+ [Values(12.0, 4.0, 9.0)] double d)
+ {
+ SquareRootTest(d);
+ }
+
+ [Theory]
+ public void SquareRootWithOneBadValue(
+ [Values(12.0, -4.0, 9.0)] double d)
+ {
+ SquareRootTest(d);
+ }
+
+ [Datapoints]
+ internal string[] vals = new string[] { "xyz1", "xyz2", "xyz3" };
+
+ [Theory]
+ public void ArrayWithDatapointsAttributeIsUsed(string s)
+ {
+ Assert.That(s.StartsWith("xyz"));
+ }
+
+ private static void SquareRootTest(double d)
+ {
+ Assume.That(d > 0);
+ double root = Math.Sqrt(d);
+ Assert.That(root * root, Is.EqualTo(d).Within(0.000001));
+ Assert.That(root > 0);
+ }
+
+ [Test]
+ public void SimpleTestIgnoresDataPoints()
+ {
+ Test test = TestBuilder.MakeTestCase(fixtureType, "TestWithArguments");
+ Assert.That(test.TestCaseCount, Is.EqualTo(2));
+ }
+
+ [Theory]
+ public void TheoryFailsIfAllTestsAreInconclusive()
+ {
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "TestWithAllBadValues");
+ Assert.That(result.ResultState, Is.EqualTo(ResultState.Failure));
+ Assert.That(result.Message, Is.EqualTo("All test cases were inconclusive"));
+ }
+
+ public class SqrtTests
+ {
+ [Datapoint]
+ public double zero = 0;
+
+ [Datapoint]
+ public double positive = 1;
+
+ [Datapoint]
+ public double negative = -1;
+
+ [Datapoint]
+ public double max = double.MaxValue;
+
+ [Datapoint]
+ public double infinity = double.PositiveInfinity;
+
+ [Theory]
+ public void SqrtTimesItselfGivesOriginal(double num)
+ {
+ Assume.That(num >= 0.0 && num < double.MaxValue);
+
+ double sqrt = Math.Sqrt(num);
+
+ Assert.That(sqrt >= 0.0);
+ Assert.That(sqrt * sqrt, Is.EqualTo(num).Within(0.000001));
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/TimeoutTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/TimeoutTests.cs
new file mode 100755
index 0000000..ce4b599
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/TimeoutTests.cs
@@ -0,0 +1,91 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+using System;
+using System.Threading;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+using NUnit.TestData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Attributes
+{
+ public class TimeoutTests
+ {
+ Thread parentThread;
+ Thread setupThread;
+
+ [TestFixtureSetUp]
+ public void GetParentThreadInfo()
+ {
+ this.parentThread = Thread.CurrentThread;
+ }
+
+ [SetUp]
+ public void GetSetUpThreadInfo()
+ {
+ this.setupThread = Thread.CurrentThread;
+ }
+
+ [Test, Timeout(50)]
+ public void TestWithTimeoutRunsOnSeparateThread()
+ {
+ Assert.That(Thread.CurrentThread, Is.Not.EqualTo(parentThread));
+ }
+
+ [Test, Timeout(50)]
+ public void TestWithTimeoutRunsSetUpAndTestOnSameThread()
+ {
+ Assert.That(Thread.CurrentThread, Is.EqualTo(setupThread));
+ }
+
+ [Test]
+ [Platform(Exclude = "Mono", Reason = "Runner hangs at end when this is run")]
+ [Platform(Exclude = "Net-1.1,Net-1.0", Reason = "Cancels the run when executed")]
+ public void TestWithInfiniteLoopTimesOut()
+ {
+ TimeoutFixture fixture = new TimeoutFixture();
+ TestSuite suite = TestBuilder.MakeFixture(fixture);
+ Test test = TestFinder.Find("InfiniteLoopWith50msTimeout", suite, false);
+ ITestResult result = TestBuilder.RunTest(test, fixture);
+ Assert.That(result.ResultState, Is.EqualTo(ResultState.Failure));
+ Assert.That(result.Message, Contains.Substring("50ms"));
+ Assert.That(fixture.TearDownWasRun, "TearDown was not run");
+ }
+
+ [Test]
+ [Platform(Exclude = "Mono", Reason = "Runner hangs at end when this is run")]
+ public void TimeoutCanBeSetOnTestFixture()
+ {
+ TestResult suiteResult = TestBuilder.RunTestFixture(typeof(ThreadingFixtureWithTimeout));
+ Assert.That(suiteResult.ResultState, Is.EqualTo(ResultState.Failure));
+ Assert.That(suiteResult.Message, Is.EqualTo("One or more child tests had errors"));
+ ITestResult result = TestFinder.Find("Test2WithInfiniteLoop", suiteResult, false);
+ Assert.That(result.ResultState, Is.EqualTo(ResultState.Failure));
+ Assert.That(result.Message, Contains.Substring("50ms"));
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/ValueSourceTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/ValueSourceTests.cs
new file mode 100755
index 0000000..0d5bd8d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/ValueSourceTests.cs
@@ -0,0 +1,142 @@
+// ****************************************************************
+// Copyright 2009, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org
+// ****************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Attributes
+{
+ [TestFixture]
+ public class ValueSourceTests
+ {
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void ValueSourceCanBeStaticProperty(
+ [ValueSource("StaticProperty")] string source)
+ {
+ Assert.AreEqual("StaticProperty", source);
+ }
+
+ internal static IEnumerable StaticProperty
+ {
+ get
+ {
+ yield return "StaticProperty";
+ }
+ }
+#endif
+
+ [Test]
+ public void ValueSourceCanBeInstanceProperty(
+ [ValueSource("InstanceProperty")] string source)
+ {
+ Assert.AreEqual("InstanceProperty", source);
+ }
+
+ internal IEnumerable InstanceProperty
+ {
+ get { return new object[] { "InstanceProperty" }; }
+ }
+
+ [Test]
+ public void ValueSourceCanBeStaticMethod(
+ [ValueSource("StaticMethod")] string source)
+ {
+ Assert.AreEqual("StaticMethod", source);
+ }
+
+ internal static IEnumerable StaticMethod()
+ {
+ return new object[] { "StaticMethod" };
+ }
+
+ [Test]
+ public void ValueSourceCanBeInstanceMethod(
+ [ValueSource("InstanceMethod")] string source)
+ {
+ Assert.AreEqual("InstanceMethod", source);
+ }
+
+ internal IEnumerable InstanceMethod()
+ {
+ return new object[] { "InstanceMethod" };
+ }
+
+ [Test]
+ public void ValueSourceCanBeStaticField(
+ [ValueSource("StaticField")] string source)
+ {
+ Assert.AreEqual("StaticField", source);
+ }
+
+ internal static object[] StaticField = { "StaticField" };
+
+ [Test]
+ public void ValueSourceCanBeInstanceField(
+ [ValueSource("InstanceField")] string source)
+ {
+ Assert.AreEqual("InstanceField", source);
+ }
+
+ internal object[] InstanceField = { "InstanceField" };
+
+ [Test, Sequential]
+ public void MultipleArguments(
+ [ValueSource("Numerators")] int n,
+ [ValueSource("Denominators")] int d,
+ [ValueSource("Quotients")] int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ internal static int[] Numerators = new int[] { 12, 12, 12 };
+ internal static int[] Denominators = new int[] { 3, 4, 6 };
+ internal static int[] Quotients = new int[] { 4, 3, 2 };
+
+ [Test, Sequential]
+ public void ValueSourceMayBeInAnotherClass(
+ [ValueSource(typeof(DivideDataProvider), "Numerators")] int n,
+ [ValueSource(typeof(DivideDataProvider), "Denominators")] int d,
+ [ValueSource(typeof(DivideDataProvider), "Quotients")] int q)
+ {
+ Assert.AreEqual(q, n / d);
+ }
+
+ public class DivideDataProvider
+ {
+ internal static int[] Numerators = new int[] { 12, 12, 12 };
+ internal static int[] Denominators = new int[] { 3, 4, 6 };
+ internal static int[] Quotients = new int[] { 4, 3, 2 };
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void ValueSourceMayBeGeneric(
+ [ValueSourceAttribute(typeof(ValueProvider), "IntegerProvider")] int val)
+ {
+ Assert.That(2 * val, Is.EqualTo(val + val));
+ }
+
+ public class ValueProvider
+ {
+ public IEnumerable<int> IntegerProvider()
+ {
+ List<int> dataList = new List<int>();
+
+ dataList.Add(1);
+ dataList.Add(2);
+ dataList.Add(4);
+ dataList.Add(8);
+
+ return dataList;
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Attributes/ValuesAttributeTests.cs b/NUnitLite-0.9.0/src/tests/Attributes/ValuesAttributeTests.cs
new file mode 100755
index 0000000..57e3bcb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Attributes/ValuesAttributeTests.cs
@@ -0,0 +1,157 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Attributes
+{
+ public class ValuesAttributeTests
+ {
+ [Test]
+ public void ValuesAttributeProvidesSpecifiedValues()
+ {
+ CheckValues("MethodWithValues", 1, 2, 3);
+ }
+
+ private void MethodWithValues( [Values(1, 2, 3)] int x) { }
+
+ [Test]
+ public void CanConvertSmallIntsToShort([Values(5)]short x)
+ {
+ }
+
+ [Test]
+ public void CanConvertSmallIntsToByte([Values(5)]byte x)
+ {
+ }
+
+ [Test]
+ public void CanConvertSmallIntsToSByte([Values(5)]sbyte x)
+ {
+ }
+
+ [Test]
+ public void CanConvertIntToDecimal([Values(12)]decimal x)
+ {
+ }
+
+ [Test]
+ public void CanConverDoubleToDecimal([Values(12.5)]decimal x)
+ {
+ }
+
+ [Test]
+ public void CanConvertStringToDecimal([Values("12.5")]decimal x)
+ {
+ }
+
+ [Test]
+ public void RangeAttributeWithIntRange()
+ {
+ CheckValues("MethodWithIntRange", 11, 12, 13, 14, 15);
+ }
+
+ private void MethodWithIntRange([Range(11, 15)] int x) { }
+
+ [Test]
+ public void RangeAttributeWithIntRangeAndStep()
+ {
+ CheckValues("MethodWithIntRangeAndStep", 11, 13, 15);
+ }
+
+ private void MethodWithIntRangeAndStep([Range(11, 15, 2)] int x) { }
+
+ [Test]
+ public void RangeAttributeWithLongRangeAndStep()
+ {
+ CheckValues("MethodWithLongRangeAndStep", 11L, 13L, 15L);
+ }
+
+ private void MethodWithLongRangeAndStep([Range(11L, 15L, 2)] long x) { }
+
+ [Test]
+ public void RangeAttributeWithDoubleRangeAndStep()
+ {
+ CheckValuesWithinTolerance("MethodWithDoubleRangeAndStep", 0.7, 0.9, 1.1);
+ }
+
+ private void MethodWithDoubleRangeAndStep([Range(0.7, 1.2, 0.2)] double x) { }
+
+ [Test]
+ public void RangeAttributeWithFloatRangeAndStep()
+ {
+ CheckValuesWithinTolerance("MethodWithFloatRangeAndStep", 0.7f, 0.9f, 1.1f);
+ }
+
+ private void MethodWithFloatRangeAndStep([Range(0.7f, 1.2f, 0.2f)] float x) { }
+
+ [Test]
+ public void CanConvertIntRangeToShort([Range(1, 3)] short x) { }
+
+ [Test]
+ public void CanConvertIntRangeToByte([Range(1, 3)] byte x) { }
+
+ [Test]
+ public void CanConvertIntRangeToSByte([Range(1, 3)] sbyte x) { }
+
+ [Test]
+ public void CanConvertIntRangeToDecimal([Range(1, 3)] decimal x) { }
+
+ [Test]
+ public void CanConvertDoubleRangeToDecimal([Range(1.0, 1.3, 0.1)] decimal x) { }
+
+ [Test]
+ public void CanConvertRandomIntToShort([Random(1, 10, 3)] short x) { }
+
+ [Test]
+ public void CanConvertRandomIntToByte([Random(1, 10, 3)] byte x) { }
+
+ [Test]
+ public void CanConvertRandomIntToSByte([Random(1, 10, 3)] sbyte x) { }
+
+ [Test]
+ public void CanConvertRandomIntToDecimal([Random(1, 10, 3)] decimal x) { }
+
+ [Test]
+ public void CanConvertRandomDoubleToDecimal([Random(1.0, 10.0, 3)] decimal x) { }
+
+ #region Helper Methods
+ private void CheckValues(string methodName, params object[] expected)
+ {
+ MethodInfo method = GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
+ ParameterInfo param = method.GetParameters()[0];
+ ValuesAttribute attr = param.GetCustomAttributes(typeof(ValuesAttribute), false)[0] as ValuesAttribute;
+ Assert.That(attr.GetData(param), Is.EqualTo(expected));
+ }
+
+ private void CheckValuesWithinTolerance(string methodName, params object[] expected)
+ {
+ MethodInfo method = GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
+ ParameterInfo param = method.GetParameters()[0];
+ ValuesAttribute attr = param.GetCustomAttributes(typeof(ValuesAttribute), false)[0] as ValuesAttribute;
+ Assert.That(attr.GetData(param), Is.EqualTo(expected).Within(0.000001));
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/AllItemsConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/AllItemsConstraintTests.cs
new file mode 100755
index 0000000..d7c69d4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/AllItemsConstraintTests.cs
@@ -0,0 +1,109 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+#if CLR_2_0 || CLR_4_0
+using RangeConstraint = NUnit.Framework.Constraints.RangeConstraint<int>;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class AllItemsConstraintTests : NUnit.Framework.Assertions.MessageChecker
+ {
+ [Test]
+ public void AllItemsAreNotNull()
+ {
+ object[] c = new object[] { 1, "hello", 3, Environment.OSVersion };
+ Assert.That(c, new AllItemsConstraint(Is.Not.Null));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void AllItemsAreNotNullFails()
+ {
+ object[] c = new object[] { 1, "hello", null, 3 };
+ expectedMessage =
+ TextMessageWriter.Pfx_Expected + "all items not null" + NL +
+ TextMessageWriter.Pfx_Actual + "< 1, \"hello\", null, 3 >" + NL;
+ Assert.That(c, new AllItemsConstraint(new NotConstraint(new EqualConstraint(null))));
+ }
+
+ [Test]
+ public void AllItemsAreInRange()
+ {
+ int[] c = new int[] { 12, 27, 19, 32, 45, 99, 26 };
+ Assert.That(c, new AllItemsConstraint(new RangeConstraint(10, 100)));
+ }
+
+ [Test]
+ public void AllItemsAreInRange_UsingIComparer()
+ {
+ int[] c = new int[] { 12, 27, 19, 32, 45, 99, 26 };
+ Assert.That(c, new AllItemsConstraint(new RangeConstraint(10, 100).Using(new SimpleObjectComparer())));
+ }
+
+ [Test]
+ public void AllItemsAreInRange_UsingIComparerOfT()
+ {
+ int[] c = new int[] { 12, 27, 19, 32, 45, 99, 26 };
+ Assert.That(c, new AllItemsConstraint(new RangeConstraint(10, 100).Using(new SimpleObjectComparer())));
+ }
+
+ [Test]
+ public void AllItemsAreInRange_UsingComparisonOfT()
+ {
+ int[] c = new int[] { 12, 27, 19, 32, 45, 99, 26 };
+ Assert.That(c, new AllItemsConstraint(new RangeConstraint(10, 100).Using(new SimpleObjectComparer())));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void AllItemsAreInRangeFailureMessage()
+ {
+ int[] c = new int[] { 12, 27, 19, 32, 107, 99, 26 };
+ expectedMessage =
+ TextMessageWriter.Pfx_Expected + "all items in range (10,100)" + NL +
+ TextMessageWriter.Pfx_Actual + "< 12, 27, 19, 32, 107, 99, 26 >" + NL;
+ Assert.That(c, new AllItemsConstraint(new RangeConstraint(10, 100)));
+ }
+
+ [Test]
+ public void AllItemsAreInstancesOfType()
+ {
+ object[] c = new object[] { 'a', 'b', 'c' };
+ Assert.That(c, new AllItemsConstraint(new InstanceOfTypeConstraint(typeof(char))));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void AllItemsAreInstancesOfTypeFailureMessage()
+ {
+ object[] c = new object[] { 'a', "b", 'c' };
+ expectedMessage =
+ TextMessageWriter.Pfx_Expected + "all items instance of <System.Char>" + NL +
+ TextMessageWriter.Pfx_Actual + "< 'a', \"b\", 'c' >" + NL;
+ Assert.That(c, new AllItemsConstraint(new InstanceOfTypeConstraint(typeof(char))));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/AndConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/AndConstraintTests.cs
new file mode 100755
index 0000000..9938b7c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/AndConstraintTests.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class AndConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new AndConstraint(new GreaterThanConstraint(40), new LessThanConstraint(50));
+ expectedDescription = "greater than 40 and less than 50";
+ stringRepresentation = "<and <greaterthan 40> <lessthan 50>>";
+ }
+
+ internal object[] SuccessData = new object[] { 42 };
+
+ internal object[] FailureData = new object[] { new object[] { 37, "37" }, new object[] { 53, "53" } };
+
+ [Test]
+ public void CanCombineTestsWithAndOperator()
+ {
+ Assert.That(42, new GreaterThanConstraint(40) & new LessThanConstraint(50));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/AssignableFromConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/AssignableFromConstraintTests.cs
new file mode 100755
index 0000000..8e207e3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/AssignableFromConstraintTests.cs
@@ -0,0 +1,48 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class AssignableFromConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new AssignableFromConstraint(typeof(D1));
+ expectedDescription = string.Format("assignable from <{0}>", typeof(D1));
+ stringRepresentation = string.Format("<assignablefrom {0}>", typeof(D1));
+ }
+
+ internal object[] SuccessData = new object[] { new D1(), new B() };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( new D2(), "<NUnit.Framework.Constraints.Tests.AssignableFromConstraintTests+D2>" ) };
+
+ class B { }
+
+ class D1 : B { }
+
+ class D2 : D1 { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/AssignableToConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/AssignableToConstraintTests.cs
new file mode 100755
index 0000000..e16a978
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/AssignableToConstraintTests.cs
@@ -0,0 +1,48 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class AssignableToConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new AssignableToConstraint(typeof(D1));
+ expectedDescription = string.Format("assignable to <{0}>", typeof(D1));
+ stringRepresentation = string.Format("<assignableto {0}>", typeof(D1));
+ }
+
+ internal object[] SuccessData = new object[] { new D1(), new D2() };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( new B(), "<NUnit.Framework.Constraints.Tests.AssignableToConstraintTests+B>" ) };
+
+ class B { }
+
+ class D1 : B { }
+
+ class D2 : D1 { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/AsyncDelayedConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/AsyncDelayedConstraintTests.cs
new file mode 100755
index 0000000..fd2cc3d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/AsyncDelayedConstraintTests.cs
@@ -0,0 +1,87 @@
+#if NET_4_5
+using System;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class AsyncDelayedConstraintTests
+ {
+ [Test]
+ public void ConstraintSuccess()
+ {
+ Assert.IsTrue(new DelayedConstraint(new EqualConstraint(1), 100)
+ .Matches(async () => await One()));
+ }
+
+ [Test]
+ public void ConstraintFailure()
+ {
+ Assert.IsFalse(new DelayedConstraint(new EqualConstraint(2), 100)
+ .Matches(async () => await One()));
+ }
+
+ [Test]
+ public void ConstraintError()
+ {
+ Assert.Throws<InvalidOperationException>(() =>
+ new DelayedConstraint(new EqualConstraint(1), 100).Matches(async () => await Throw()));
+ }
+
+ [Test]
+ public void ConstraintVoidDelegateFailureAsDelegateIsNotCalled()
+ {
+ Assert.IsFalse(new DelayedConstraint(new EqualConstraint(1), 100)
+ .Matches(new TestDelegate(async () => { await One(); })));
+ }
+
+ [Test]
+ public void ConstraintVoidDelegateExceptionIsFailureAsDelegateIsNotCalled()
+ {
+ Assert.IsFalse(new DelayedConstraint(new EqualConstraint(1), 100)
+ .Matches(new TestDelegate(async () => { await Throw(); })));
+ }
+
+ [Test]
+ public void SyntaxSuccess()
+ {
+ Assert.That(async () => await One(), Is.EqualTo(1).After(100));
+ }
+
+
+ [Test]
+ public void SyntaxFailure()
+ {
+ Assert.Throws<AssertionException>(() =>
+ Assert.That(async () => await One(), Is.EqualTo(2).After(100)));
+ }
+
+ [Test]
+ public void SyntaxError()
+ {
+ Assert.Throws<InvalidOperationException>(() =>
+ Assert.That(async () => await Throw(), Is.EqualTo(1).After(100)));
+ }
+
+ [Test]
+ public void SyntaxVoidDelegateExceptionIsFailureAsCodeIsNotCalled()
+ {
+ Assert.Throws<AssertionException>(() =>
+ Assert.That(new TestDelegate(async () => await Throw()), Is.EqualTo(1).After(100)));
+ }
+
+ private static async Task<int> One()
+ {
+ return await Task.Run(() => 1);
+ }
+
+ private static async Task Throw()
+ {
+ await One();
+ throw new InvalidOperationException();
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/AttributeExistsConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/AttributeExistsConstraintTests.cs
new file mode 100755
index 0000000..9d795cf
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/AttributeExistsConstraintTests.cs
@@ -0,0 +1,70 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class AttributeExistsConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new AttributeExistsConstraint(typeof(TestFixtureAttribute));
+ expectedDescription = "type with attribute <NUnit.Framework.TestFixtureAttribute>";
+ stringRepresentation = "<attributeexists NUnit.Framework.TestFixtureAttribute>";
+ }
+
+ internal object[] SuccessData = new object[] { typeof(AttributeExistsConstraintTests) };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( typeof(D2), "<NUnit.Framework.Constraints.Tests.AttributeExistsConstraintTests+D2>" ) };
+
+ [Test, ExpectedException(typeof(System.ArgumentException))]
+ public void NonAttributeThrowsException()
+ {
+ new AttributeExistsConstraint(typeof(string));
+ }
+
+ [Test]
+ public void AttributeExistsOnMethodInfo()
+ {
+ Assert.That(
+ GetType().GetMethod("AttributeExistsOnMethodInfo"),
+ new AttributeExistsConstraint(typeof(TestAttribute)));
+ }
+
+ [Test, Description("my description")]
+ public void AttributeTestPropertyValueOnMethodInfo()
+ {
+ Assert.That(
+ GetType().GetMethod("AttributeTestPropertyValueOnMethodInfo"),
+ Has.Attribute(typeof(DescriptionAttribute)).Property("Properties").Property("Keys").Contains("Description"));
+ }
+
+ class B { }
+
+ class D1 : B { }
+
+ class D2 : D1 { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/BasicConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/BasicConstraintTests.cs
new file mode 100755
index 0000000..57b535b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/BasicConstraintTests.cs
@@ -0,0 +1,106 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class NullConstraintTest : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new NullConstraint();
+ stringRepresentation = "<null>";
+ expectedDescription = "null";
+ }
+
+ internal object[] SuccessData = new object[] { null };
+
+ internal object[] FailureData = new object[] { new object[] { "hello", "\"hello\"" } };
+ }
+
+ [TestFixture]
+ public class TrueConstraintTest : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new TrueConstraint();
+ stringRepresentation = "<true>";
+ expectedDescription = "True";
+ }
+
+ internal object[] SuccessData = new object[] { true, 2 + 2 == 4 };
+
+ internal object[] FailureData = new object[] {
+ new object[] { null, "null" },
+ new object[] { "hello", "\"hello\"" },
+ new object[] { false, "False" },
+ new object[] { 2 + 2 == 5, "False" } };
+ }
+
+ [TestFixture]
+ public class FalseConstraintTest : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new FalseConstraint();
+ stringRepresentation = "<false>";
+ expectedDescription = "False";
+ }
+
+ internal object[] SuccessData = new object[] { false, 2 + 2 == 5 };
+
+ internal object[] FailureData = new object[] {
+ new object[] { null, "null" },
+ new object[] { "hello", "\"hello\"" },
+ new object[] { true, "True" },
+ new object[] { 2 + 2 == 4, "True" } };
+ }
+
+ [TestFixture]
+ public class NaNConstraintTest : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new NaNConstraint();
+ stringRepresentation = "<nan>";
+ expectedDescription = "NaN";
+ }
+
+ internal object[] SuccessData = new object[] { double.NaN, float.NaN };
+
+ internal object[] FailureData = new object[] {
+ new object[] { null, "null" },
+ new object[] { "hello", "\"hello\"" },
+ new object[] { 42, "42" },
+ new object[] { double.PositiveInfinity, "Infinity" },
+ new object[] { double.NegativeInfinity, "-Infinity" },
+ new object[] { float.PositiveInfinity, "Infinity" },
+ new object[] { float.NegativeInfinity, "-Infinity" } };
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/BinarySerializableTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/BinarySerializableTest.cs
new file mode 100755
index 0000000..1d2b97a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/BinarySerializableTest.cs
@@ -0,0 +1,48 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !NETCF && !SILVERLIGHT
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class BinarySerializableTest : ConstraintTestBaseWithArgumentException
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new BinarySerializableConstraint();
+ expectedDescription = "binary serializable";
+ stringRepresentation = "<binaryserializable>";
+ }
+
+ object[] SuccessData = new object[] { 1, "a", new ArrayList(), new InternalWithSerializableAttributeClass() };
+
+ object[] FailureData = new object[] { new TestCaseData( new InternalClass(), "<InternalClass>" ) };
+
+ object[] InvalidData = new object[] { null };
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/CollectionContainsConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/CollectionContainsConstraintTests.cs
new file mode 100755
index 0000000..8654566
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/CollectionContainsConstraintTests.cs
@@ -0,0 +1,220 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class CollectionContainsConstraintTests
+ {
+ [Test]
+ public void CanTestContentsOfArray()
+ {
+ object item = "xyz";
+ object[] c = new object[] { 123, item, "abc" };
+ Assert.That(c, new CollectionContainsConstraint(item));
+ }
+
+#if !SILVERLIGHT
+ [Test]
+ public void CanTestContentsOfArrayList()
+ {
+ object item = "xyz";
+ ArrayList list = new ArrayList(new object[] { 123, item, "abc" });
+ Assert.That(list, new CollectionContainsConstraint(item));
+ }
+
+ [Test]
+ public void CanTestContentsOfSortedList()
+ {
+ object item = "xyz";
+ SortedList list = new SortedList();
+ list.Add("a", 123);
+ list.Add("b", item);
+ list.Add("c", "abc");
+ Assert.That(list.Values, new CollectionContainsConstraint(item));
+ Assert.That(list.Keys, new CollectionContainsConstraint("b"));
+ }
+#endif
+
+ [Test]
+ public void CanTestContentsOfCollectionNotImplementingIList()
+ {
+ SimpleObjectCollection ints = new SimpleObjectCollection(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
+ Assert.That(ints, new CollectionContainsConstraint(9));
+ }
+
+ [Test]
+ public void IgnoreCaseIsHonored()
+ {
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("WORLD").IgnoreCase);
+ }
+ [Test]
+ public void UsesProvidedIComparer()
+ {
+ MyComparer comparer = new MyComparer();
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("World").Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparer : IComparer
+ {
+ public bool Called;
+
+ public int Compare(object x, object y)
+ {
+ Called = true;
+ return 0;
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void UsesProvidedEqualityComparer()
+ {
+ MyEqualityComparer comparer = new MyEqualityComparer();
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("World").Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyEqualityComparer : IEqualityComparer
+ {
+ public bool Called;
+
+ bool IEqualityComparer.Equals(object x, object y)
+ {
+ Called = true;
+ return x == y;
+ }
+
+ int IEqualityComparer.GetHashCode(object x)
+ {
+ return x.GetHashCode();
+ }
+ }
+
+ [Test]
+ public void UsesProvidedEqualityComparerOfT()
+ {
+ MyEqualityComparerOfT<string> comparer = new MyEqualityComparerOfT<string>();
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("World").Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyEqualityComparerOfT<T> : IEqualityComparer<T>
+ {
+ public bool Called;
+
+ bool IEqualityComparer<T>.Equals(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y) == 0;
+ }
+
+ int IEqualityComparer<T>.GetHashCode(T x)
+ {
+ return x.GetHashCode();
+ }
+ }
+
+ [Test]
+ public void UsesProvidedComparerOfT()
+ {
+ MyComparer<string> comparer = new MyComparer<string>();
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("World").Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparer<T> : IComparer<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+ [Test]
+ public void UsesProvidedComparisonOfT()
+ {
+ MyComparison<string> comparer = new MyComparison<string>();
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("World").Using(new Comparison<string>(comparer.Compare)));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparison<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+ [Test]
+ public void ContainsWithRecursiveStructure()
+ {
+ SelfRecursiveEnumerable item = new SelfRecursiveEnumerable();
+ SelfRecursiveEnumerable[] container = new SelfRecursiveEnumerable[] { new SelfRecursiveEnumerable(), item };
+
+ Assert.That(container, new CollectionContainsConstraint(item));
+ }
+
+ class SelfRecursiveEnumerable : IEnumerable
+ {
+ public IEnumerator GetEnumerator()
+ {
+ yield return this;
+ }
+ }
+
+
+#if !NETCF_2_0
+ [Test]
+ public void UsesProvidedLambdaExpression()
+ {
+ Assert.That(new string[] { "Hello", "World" },
+ new CollectionContainsConstraint("WORLD").Using<string>((x, y) => StringUtil.Compare(x, y, true)));
+ }
+#endif
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/CollectionEquivalentConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/CollectionEquivalentConstraintTests.cs
new file mode 100755
index 0000000..b12e051
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/CollectionEquivalentConstraintTests.cs
@@ -0,0 +1,169 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ public class CollectionEquivalentConstraintTests
+ {
+ [Test]
+ public void EqualCollectionsAreEquivalent()
+ {
+ ICollection set1 = new SimpleObjectCollection("x", "y", "z");
+ ICollection set2 = new SimpleObjectCollection("x", "y", "z");
+
+ Assert.That(new CollectionEquivalentConstraint(set1).Matches(set2));
+ }
+
+ [Test]
+ public void WorksWithCollectionsOfArrays()
+ {
+ byte[] array1 = new byte[] { 0x20, 0x44, 0x56, 0x76, 0x1e, 0xff };
+ byte[] array2 = new byte[] { 0x42, 0x52, 0x72, 0xef };
+ byte[] array3 = new byte[] { 0x20, 0x44, 0x56, 0x76, 0x1e, 0xff };
+ byte[] array4 = new byte[] { 0x42, 0x52, 0x72, 0xef };
+
+ ICollection set1 = new SimpleObjectCollection(array1, array2);
+ ICollection set2 = new SimpleObjectCollection(array3, array4);
+
+ Constraint constraint = new CollectionEquivalentConstraint(set1);
+ Assert.That(constraint.Matches(set2));
+
+ set2 = new SimpleObjectCollection(array4, array3);
+ Assert.That(constraint.Matches(set2));
+ }
+
+ [Test]
+ public void EquivalentIgnoresOrder()
+ {
+ ICollection set1 = new SimpleObjectCollection("x", "y", "z");
+ ICollection set2 = new SimpleObjectCollection("z", "y", "x");
+
+ Assert.That(new CollectionEquivalentConstraint(set1).Matches(set2));
+ }
+
+ [Test]
+ public void EquivalentFailsWithDuplicateElementInActual()
+ {
+ ICollection set1 = new SimpleObjectCollection("x", "y", "z");
+ ICollection set2 = new SimpleObjectCollection("x", "y", "x");
+
+ Assert.False(new CollectionEquivalentConstraint(set1).Matches(set2));
+ }
+
+ [Test]
+ public void EquivalentFailsWithDuplicateElementInExpected()
+ {
+ ICollection set1 = new SimpleObjectCollection("x", "y", "x");
+ ICollection set2 = new SimpleObjectCollection("x", "y", "z");
+
+ Assert.False(new CollectionEquivalentConstraint(set1).Matches(set2));
+ }
+
+ [Test]
+ public void EquivalentHandlesNull()
+ {
+ ICollection set1 = new SimpleObjectCollection(null, "x", null, "z");
+ ICollection set2 = new SimpleObjectCollection("z", null, "x", null);
+
+ Assert.That(new CollectionEquivalentConstraint(set1).Matches(set2));
+ }
+
+ [Test]
+ public void EquivalentHonorsIgnoreCase()
+ {
+ ICollection set1 = new SimpleObjectCollection("x", "y", "z");
+ ICollection set2 = new SimpleObjectCollection("z", "Y", "X");
+
+ Assert.That(new CollectionEquivalentConstraint(set1).IgnoreCase.Matches(set2));
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF_2_0
+ [Test]
+ public void EquivalentHonorsUsing()
+ {
+ ICollection set1 = new SimpleObjectCollection("x", "y", "z");
+ ICollection set2 = new SimpleObjectCollection("z", "Y", "X");
+
+ Assert.That(new CollectionEquivalentConstraint(set1)
+ .Using<string>((x, y) => StringUtil.Compare(x, y, true))
+ .Matches(set2));
+ }
+#endif
+
+#if NET_3_5 || NET_4_0
+ [Test, Platform("Net-3.5,Mono-3.5,Net-4.0,Mono-4.0,Silverlight")]
+ public void WorksWithHashSets()
+ {
+ var hash1 = new HashSet<string>(new string[] { "presto", "abracadabra", "hocuspocus" });
+ var hash2 = new HashSet<string>(new string[] { "abracadabra", "presto", "hocuspocus" });
+
+ Assert.That(new CollectionEquivalentConstraint(hash1).Matches(hash2));
+ }
+
+ [Test, Platform("Net-3.5,Mono-3.5,Net-4.0,Mono-4.0,Silverlight")]
+ public void WorksWithHashSetAndArray()
+ {
+ var hash = new HashSet<string>(new string[] { "presto", "abracadabra", "hocuspocus" });
+ var array = new string[] { "abracadabra", "presto", "hocuspocus" };
+
+ var constraint = new CollectionEquivalentConstraint(hash);
+ Assert.That(constraint.Matches(array));
+ }
+
+ [Test, Platform("Net-3.5,Mono-3.5,Net-4.0,Mono-4.0,Silverlight")]
+ public void WorksWithArrayAndHashSet()
+ {
+ var hash = new HashSet<string>(new string[] { "presto", "abracadabra", "hocuspocus" });
+ var array = new string[] { "abracadabra", "presto", "hocuspocus" };
+
+ var constraint = new CollectionEquivalentConstraint(array);
+ Assert.That(constraint.Matches(hash));
+ }
+
+ [Test, Platform("Net-3.5,Mono-3.5,Net-4.0,Mono-4.0,Silverlight")]
+ public void FailureMessageWithHashSetAndArray()
+ {
+ var hash = new HashSet<string>(new string[] { "presto", "abracadabra", "hocuspocus" });
+ var array = new string[] { "abracadabra", "presto", "hocusfocus" };
+
+ var constraint = new CollectionEquivalentConstraint(hash);
+ Assert.False(constraint.Matches(array));
+
+ TextMessageWriter writer = new TextMessageWriter();
+ constraint.WriteMessageTo(writer);
+ Assert.That(writer.ToString(), Is.EqualTo(
+ " Expected: equivalent to < \"presto\", \"abracadabra\", \"hocuspocus\" >" + Environment.NewLine +
+ " But was: < \"abracadabra\", \"presto\", \"hocusfocus\" >" + Environment.NewLine));
+ Console.WriteLine(writer.ToString());
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/CollectionOrderedConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/CollectionOrderedConstraintTests.cs
new file mode 100755
index 0000000..82325d9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/CollectionOrderedConstraintTests.cs
@@ -0,0 +1,227 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class CollectionOrderedConstraintTests : NUnit.Framework.Assertions.MessageChecker
+ {
+ [Test]
+ public void IsOrdered()
+ {
+ ICollection collection = new SimpleObjectCollection("x", "y", "z");
+ Assert.That(collection, Is.Ordered);
+ }
+
+ [Test]
+ public void IsOrderedDescending()
+ {
+ ICollection collection = new SimpleObjectCollection("z", "y", "x");
+ Assert.That(collection, Is.Ordered.Descending);
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void IsOrdered_Fails()
+ {
+ ICollection collection = new SimpleObjectCollection("x", "z", "y");
+ expectedMessage =
+ " Expected: collection ordered" + NL +
+ " But was: < \"x\", \"z\", \"y\" >" + NL;
+
+ Assert.That(collection, Is.Ordered);
+ }
+
+ [Test]
+ public void IsOrdered_Allows_adjacent_equal_values()
+ {
+ ICollection collection = new SimpleObjectCollection("x", "x", "z");
+ Assert.That(collection, Is.Ordered);
+ }
+
+ [Test, ExpectedException(typeof(ArgumentNullException),
+ ExpectedMessage = "index 1", MatchType = MessageMatch.Contains)]
+ public void IsOrdered_Handles_null()
+ {
+ ICollection collection = new SimpleObjectCollection("x", null, "z");
+ Assert.That(collection, Is.Ordered);
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void IsOrdered_TypesMustBeComparable()
+ {
+ ICollection collection = new SimpleObjectCollection(1, "x");
+ Assert.That(collection, Is.Ordered);
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void IsOrdered_AtLeastOneArgMustImplementIComparable()
+ {
+ ICollection collection = new SimpleObjectCollection(new object(), new object());
+ Assert.That(collection, Is.Ordered);
+ }
+
+ [Test]
+ public void IsOrdered_Handles_custom_comparison()
+ {
+ ICollection collection = new SimpleObjectCollection(new object(), new object());
+
+ AlwaysEqualComparer comparer = new AlwaysEqualComparer();
+ Assert.That(collection, Is.Ordered.Using(comparer));
+ Assert.That(comparer.Called, "TestComparer was not called");
+ }
+
+ [Test]
+ public void IsOrdered_Handles_custom_comparison2()
+ {
+ ICollection collection = new SimpleObjectCollection(2, 1);
+
+ TestComparer comparer = new TestComparer();
+ Assert.That(collection, Is.Ordered.Using(comparer));
+ Assert.That(comparer.Called, "TestComparer was not called");
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void UsesProvidedComparerOfT()
+ {
+ ICollection al = new SimpleObjectCollection(1, 2);
+
+ MyComparer<int> comparer = new MyComparer<int>();
+ Assert.That(al, Is.Ordered.Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparer<T> : IComparer<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+ [Test]
+ public void UsesProvidedComparisonOfT()
+ {
+ ICollection al = new SimpleObjectCollection(1, 2);
+
+ MyComparison<int> comparer = new MyComparison<int>();
+ Assert.That(al, Is.Ordered.Using(new Comparison<int>(comparer.Compare)));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparison<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+#if !NETCF_2_0
+ [Test]
+ public void UsesProvidedLambda()
+ {
+ ICollection al = new SimpleObjectCollection(1, 2);
+
+ Comparison<int> comparer = (x, y) => x.CompareTo(y);
+ Assert.That(al, Is.Ordered.Using(comparer));
+ }
+#endif
+#endif
+
+ [Test]
+ public void IsOrderedBy()
+ {
+ ICollection collection = new SimpleObjectCollection(
+ new OrderedByTestClass(1),
+ new OrderedByTestClass(2));
+
+ Assert.That(collection, Is.Ordered.By("Value"));
+ }
+
+ [Test]
+ public void IsOrderedBy_Comparer()
+ {
+ ICollection collection = new SimpleObjectCollection(
+ new OrderedByTestClass(1),
+ new OrderedByTestClass(2));
+
+ Assert.That(collection, Is.Ordered.By("Value").Using(new SimpleObjectComparer()));
+ }
+
+ [Test]
+ public void IsOrderedBy_Handles_heterogeneous_classes_as_long_as_the_property_is_of_same_type()
+ {
+ ICollection al = new SimpleObjectCollection(
+ new OrderedByTestClass(1),
+ new OrderedByTestClass2(2));
+
+ Assert.That(al, Is.Ordered.By("Value"));
+ }
+
+ public class OrderedByTestClass
+ {
+ private int myValue;
+
+ public int Value
+ {
+ get { return myValue; }
+ set { myValue = value; }
+ }
+
+ public OrderedByTestClass(int value)
+ {
+ Value = value;
+ }
+ }
+
+ public class OrderedByTestClass2
+ {
+ private int myValue;
+ public int Value
+ {
+ get { return myValue; }
+ set { myValue = value; }
+ }
+
+ public OrderedByTestClass2(int value)
+ {
+ Value = value;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/CollectionSubsetConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/CollectionSubsetConstraintTests.cs
new file mode 100755
index 0000000..6e18f5d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/CollectionSubsetConstraintTests.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class CollectionSubsetConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new CollectionSubsetConstraint(new int[] { 1, 2, 3, 4, 5 });
+ stringRepresentation = "<subsetof System.Int32[]>";
+ expectedDescription = "subset of < 1, 2, 3, 4, 5 >";
+ }
+
+ internal object[] SuccessData = new object[] { new int[] { 1, 3, 5 }, new int[] { 1, 2, 3, 4, 5 } };
+ internal object[] FailureData = new object[] {
+ new object[] { new int[] { 1, 3, 7 }, "< 1, 3, 7 >" },
+ new object[] { new int[] { 1, 2, 2, 2, 5 }, "< 1, 2, 2, 2, 5 >" } };
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ComparisonConstraintTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/ComparisonConstraintTest.cs
new file mode 100755
index 0000000..c8ba195
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ComparisonConstraintTest.cs
@@ -0,0 +1,138 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ #region ComparisonConstraintTest
+
+ public abstract class ComparisonConstraintTest : ConstraintTestBaseWithArgumentException
+ {
+ protected ComparisonConstraint comparisonConstraint;
+
+ [Test]
+ public void UsesProvidedIComparer()
+ {
+ SimpleObjectComparer comparer = new SimpleObjectComparer();
+ comparisonConstraint.Using(comparer).Matches(0);
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void UsesProvidedComparerOfT()
+ {
+ MyComparer<int> comparer = new MyComparer<int>();
+ comparisonConstraint.Using(comparer).Matches(0);
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparer<T> : IComparer<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+ [Test]
+ public void UsesProvidedComparisonOfT()
+ {
+ MyComparison<int> comparer = new MyComparison<int>();
+ comparisonConstraint.Using(new Comparison<int>(comparer.Compare)).Matches(0);
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparison<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+#if !NETCF_2_0
+ [Test]
+ public void UsesProvidedLambda()
+ {
+ Comparison<int> comparer = (x, y) => x.CompareTo(y);
+ comparisonConstraint.Using(comparer).Matches(0);
+ }
+#endif
+#endif
+ }
+
+ #endregion
+
+ #region Comparison Test Classes
+
+ class ClassWithIComparable : IComparable
+ {
+ private int val;
+
+ public ClassWithIComparable(int val)
+ {
+ this.val = val;
+ }
+
+ public int CompareTo(object x)
+ {
+ ClassWithIComparable other = x as ClassWithIComparable;
+ if (x is ClassWithIComparable)
+ return val.CompareTo(other.val);
+
+ throw new ArgumentException();
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ class ClassWithIComparableOfT : IComparable<ClassWithIComparableOfT>
+ {
+ private int val;
+
+ public ClassWithIComparableOfT(int val)
+ {
+ this.val = val;
+ }
+
+ public int CompareTo(ClassWithIComparableOfT other)
+ {
+ return val.CompareTo(other.val);
+ }
+ }
+#endif
+
+ #endregion
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ConstraintTestBase.cs b/NUnitLite-0.9.0/src/tests/Constraints/ConstraintTestBase.cs
new file mode 100755
index 0000000..44dce2a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ConstraintTestBase.cs
@@ -0,0 +1,103 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ public abstract class ConstraintTestBaseNoData
+ {
+ protected Constraint theConstraint;
+ protected string expectedDescription = "<NOT SET>";
+ protected string stringRepresentation = "<NOT SET>";
+
+ [Test]
+ public void ProvidesProperDescription()
+ {
+ TextMessageWriter writer = new TextMessageWriter();
+ theConstraint.WriteDescriptionTo(writer);
+ Assert.That(writer.ToString(), Is.EqualTo(expectedDescription));
+ }
+
+ [Test]
+ public void ProvidesProperStringRepresentation()
+ {
+ Assert.That(theConstraint.ToString(), Is.EqualTo(stringRepresentation));
+ }
+ }
+
+ public abstract class ConstraintTestBase : ConstraintTestBaseNoData
+ {
+ [Test, TestCaseSource("SuccessData")]
+ public void SucceedsWithGoodValues(object value)
+ {
+ if (!theConstraint.Matches(value))
+ {
+ MessageWriter writer = new TextMessageWriter();
+ theConstraint.WriteMessageTo(writer);
+ Assert.Fail(writer.ToString());
+ }
+ }
+
+ [Test, TestCaseSource("FailureData")]
+ public void FailsWithBadValues(object badValue, string message)
+ {
+ string NL = Env.NewLine;
+
+ Assert.IsFalse(theConstraint.Matches(badValue));
+
+ TextMessageWriter writer = new TextMessageWriter();
+ theConstraint.WriteMessageTo(writer);
+ Assert.That( writer.ToString(), Is.EqualTo(
+ TextMessageWriter.Pfx_Expected + expectedDescription + NL +
+ TextMessageWriter.Pfx_Actual + message + NL ));
+ }
+ }
+
+ /// <summary>
+ /// Base class for testing constraints that can throw an ArgumentException
+ /// </summary>
+ public abstract class ConstraintTestBaseWithArgumentException : ConstraintTestBase
+ {
+ [Test, TestCaseSource("InvalidData")]
+ [ExpectedException(typeof(ArgumentException))]
+ public void InvalidDataThrowsArgumentException(object value)
+ {
+ theConstraint.Matches(value);
+ }
+ }
+
+ /// <summary>
+ /// Base class for tests that can throw multiple exceptions. Use
+ /// TestCaseData class to specify the expected exception type.
+ /// </summary>
+ public abstract class ConstraintTestBaseWithExceptionTests : ConstraintTestBase
+ {
+ [Test, TestCaseSource("InvalidData")]
+ public void InvalidDataThrowsException(object value)
+ {
+ theConstraint.Matches(value);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/DelayedConstraintTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/DelayedConstraintTest.cs
new file mode 100755
index 0000000..753879d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/DelayedConstraintTest.cs
@@ -0,0 +1,212 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !NETCF
+using System;
+using System.ComponentModel;
+using System.Threading;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+using ActualValueDelegate = NUnit.Framework.Constraints.ActualValueDelegate<object>;
+#else
+using ActualValueDelegate = NUnit.Framework.Constraints.ActualValueDelegate;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class DelayedConstraintTest : ConstraintTestBase
+ {
+ private static bool value;
+
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new DelayedConstraint(new EqualConstraint(true), 500);
+ expectedDescription = "True after 500 millisecond delay";
+ stringRepresentation = "<after 500 <equal True>>";
+
+ value = false;
+ //SetValueTrueAfterDelay(300);
+ }
+
+ object[] SuccessData = new object[] { true };
+ object[] FailureData = new object[] {
+ new TestCaseData( false, "False" ),
+ new TestCaseData( 0, "0" ),
+ new TestCaseData( null, "null" ) };
+
+ object[] InvalidData = new object[] { InvalidDelegate };
+
+ ActualValueDelegate[] SuccessDelegates = new ActualValueDelegate[] { DelegateReturningValue };
+ ActualValueDelegate[] FailureDelegates = new ActualValueDelegate[] { DelegateReturningFalse, DelegateReturningZero };
+
+ [Test, TestCaseSource("SuccessDelegates")]
+ public void SucceedsWithGoodDelegates(ActualValueDelegate del)
+ {
+ SetValueTrueAfterDelay(300);
+ Assert.That(theConstraint.Matches(del));
+ }
+
+ [Test, TestCaseSource("FailureDelegates")]
+ public void FailsWithBadDelegates(ActualValueDelegate del)
+ {
+ Assert.IsFalse(theConstraint.Matches(del));
+ }
+
+ [Test]
+ public void SimpleTest()
+ {
+ SetValueTrueAfterDelay(500);
+ Assert.That(DelegateReturningValue, new DelayedConstraint(new EqualConstraint(true), 5000, 200));
+ }
+
+ [Test]
+ public void SimpleTestUsingReference()
+ {
+ SetValueTrueAfterDelay(500);
+ Assert.That(ref value, new DelayedConstraint(new EqualConstraint(true), 5000, 200));
+ }
+
+ [Test]
+ public void ThatOverload_ZeroDelayIsAllowed()
+ {
+ Assert.That(DelegateReturningZero, new DelayedConstraint(new EqualConstraint(0), 0));
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void ThatOverload_DoesNotAcceptNegativeDelayValues()
+ {
+ Assert.That(DelegateReturningZero, new DelayedConstraint(new EqualConstraint(0), -1));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void SimpleTestBoolDelegate()
+ {
+ SetValueTrueAfterDelay(500);
+ Assert.That(DelegateReturningValue, new DelayedConstraint(new EqualConstraint(true), 5000, 200));
+ }
+
+ [Test]
+ public void ThatOverload_ZeroDelayIsAllowed_IntDelegate()
+ {
+ Assert.That(DelegateReturningZero, new DelayedConstraint(new EqualConstraint(0), 0));
+ }
+
+ [Test, ExpectedException(typeof(ArgumentException))]
+ public void ThatOverload_DoesNotAcceptNegativeDelayValues_IntDelegate()
+ {
+ Assert.That(DelegateReturningZero, new DelayedConstraint(new EqualConstraint(0), -1));
+ }
+
+ [Test]
+ public void CanTestContentsOfList()
+ {
+ BackgroundWorker worker = new BackgroundWorker();
+ List<int> list = new System.Collections.Generic.List<int>();
+ worker.RunWorkerCompleted += delegate { list.Add(1); };
+ worker.DoWork += delegate { Thread.Sleep(1); };
+ worker.RunWorkerAsync();
+ Assert.That(list, Has.Count.EqualTo(1).After(5000, 100));
+ }
+
+ [Test]
+ public void CanTestContentsOfRefList()
+ {
+ BackgroundWorker worker = new BackgroundWorker();
+ List<int> list = new List<int>();
+ worker.RunWorkerCompleted += delegate { list.Add(1); };
+ worker.DoWork += delegate { Thread.Sleep(1); };
+ worker.RunWorkerAsync();
+ Assert.That(ref list, Has.Count.EqualTo(1).After(5000, 100));
+ }
+
+ [Test]
+ public void CanTestContentsOfDelegateReturningList()
+ {
+ var worker = new BackgroundWorker();
+ var list = new List<int>();
+ worker.RunWorkerCompleted += delegate { list.Add(1); };
+ worker.DoWork += delegate { Thread.Sleep(1); };
+ worker.RunWorkerAsync();
+ Assert.That(() => list, Has.Count.EqualTo(1).After(5000, 100));
+ }
+
+ [Test]
+ public void CanTestInitiallyNullReference()
+ {
+ string statusString = null; // object starts off as null
+
+ BackgroundWorker worker = new BackgroundWorker();
+ worker.RunWorkerCompleted += delegate { statusString = "finished"; /* object non-null after work */ };
+ worker.DoWork += delegate { Thread.Sleep(TimeSpan.FromSeconds(1)); /* simulate work */ };
+ worker.RunWorkerAsync();
+
+ Assert.That(ref statusString, Has.Length.GreaterThan(0).After(3000, 100));
+ }
+
+ [Test]
+ public void CanTestInitiallyNullDelegate()
+ {
+ string statusString = null; // object starts off as null
+
+ BackgroundWorker worker = new BackgroundWorker();
+ worker.RunWorkerCompleted += delegate { statusString = "finished"; /* object non-null after work */ };
+ worker.DoWork += delegate { Thread.Sleep(TimeSpan.FromSeconds(1)); /* simulate work */ };
+ worker.RunWorkerAsync();
+
+ Assert.That(() => statusString, Has.Length.GreaterThan(0).After(3000, 100));
+ }
+#endif
+
+ private static int setValueTrueDelay;
+
+ private void SetValueTrueAfterDelay(int delay)
+ {
+ setValueTrueDelay = delay;
+ Thread thread = new Thread(SetValueTrueDelegate);
+ thread.Start();
+ }
+
+ private static void MethodReturningVoid() { }
+ private static TestDelegate InvalidDelegate = new TestDelegate(MethodReturningVoid);
+
+ private static object MethodReturningValue() { return value; }
+ private static ActualValueDelegate DelegateReturningValue = new ActualValueDelegate(MethodReturningValue);
+
+ private static object MethodReturningFalse() { return false; }
+ private static ActualValueDelegate DelegateReturningFalse = new ActualValueDelegate(MethodReturningFalse);
+
+ private static object MethodReturningZero() { return 0; }
+ private static ActualValueDelegate DelegateReturningZero = new ActualValueDelegate(MethodReturningZero);
+
+ private static void MethodSetsValueTrue()
+ {
+ Thread.Sleep(setValueTrueDelay);
+ value = true;
+ }
+ private ThreadStart SetValueTrueDelegate = new ThreadStart(MethodSetsValueTrue);
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/EmptyConstraintTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/EmptyConstraintTest.cs
new file mode 100755
index 0000000..0ab94c3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/EmptyConstraintTest.cs
@@ -0,0 +1,91 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class EmptyConstraintTest : ConstraintTestBaseWithArgumentException
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new EmptyConstraint();
+ expectedDescription = "<empty>";
+ stringRepresentation = "<empty>";
+ }
+
+ internal static object[] SuccessData = new object[]
+ {
+#if CLR_2_0 || CLR_4_0
+ new System.Collections.Generic.List<int>(),
+#endif
+ string.Empty,
+ new object[0],
+ new SimpleObjectCollection()
+ };
+
+ internal static object[] FailureData = new object[]
+ {
+ new TestCaseData( "Hello", "\"Hello\"" ),
+ new TestCaseData( new object[] { 1, 2, 3 }, "< 1, 2, 3 >" )
+ };
+
+ internal static object[] InvalidData = new object[]
+ {
+ null,
+ 5
+ };
+ }
+
+ [TestFixture]
+ public class NullOrEmptyStringConstraintTest : ConstraintTestBaseWithArgumentException
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new NullOrEmptyStringConstraint();
+ expectedDescription = "null or empty string";
+ stringRepresentation = "<nullorempty>";
+ }
+
+ internal static object[] SuccessData = new object[]
+ {
+ string.Empty,
+ null
+ };
+
+ internal static object[] FailureData = new object[]
+ {
+ new TestCaseData( "Hello", "\"Hello\"" )
+ };
+
+ internal static object[] InvalidData = new object[]
+ {
+ 5
+ };
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/EndsWithConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/EndsWithConstraintTests.cs
new file mode 100755
index 0000000..1aca9eb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/EndsWithConstraintTests.cs
@@ -0,0 +1,71 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class EndsWithConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new EndsWithConstraint("hello");
+ expectedDescription = "String ending with \"hello\"";
+ stringRepresentation = "<endswith \"hello\">";
+ }
+
+ internal object[] SuccessData = new object[] { "hello", "I said hello" };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( "goodbye", "\"goodbye\"" ),
+ new TestCaseData( "hello there", "\"hello there\"" ),
+ new TestCaseData( "say hello to Fred", "\"say hello to Fred\"" ),
+ new TestCaseData( string.Empty, "<string.Empty>" ),
+ new TestCaseData( null , "null" ) };
+ }
+
+ [TestFixture]
+ public class EndsWithConstraintTestsIgnoringCase : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new EndsWithConstraint("hello").IgnoreCase;
+ expectedDescription = "String ending with \"hello\", ignoring case";
+ stringRepresentation = "<endswith \"hello\">";
+ }
+
+ internal object[] SuccessData = new object[] { "HELLO", "I said Hello" };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( "goodbye", "\"goodbye\"" ),
+ new TestCaseData( "What the hell?", "\"What the hell?\"" ),
+ new TestCaseData( "hello there", "\"hello there\"" ),
+ new TestCaseData( "say hello to Fred", "\"say hello to Fred\"" ),
+ new TestCaseData( string.Empty, "<string.Empty>" ),
+ new TestCaseData( null , "null" ) };
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/EqualConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/EqualConstraintTests.cs
new file mode 100755
index 0000000..7ab346c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/EqualConstraintTests.cs
@@ -0,0 +1,459 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class EqualConstraintTest : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new EqualConstraint(4);
+ expectedDescription = "4";
+ stringRepresentation = "<equal 4>";
+ }
+
+ internal object[] SuccessData = new object[] { 4, 4.0f, 4.0d, 4.0000m };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( 5, "5" ),
+ new TestCaseData( null, "null" ),
+ new TestCaseData( "Hello", "\"Hello\"" ),
+ new TestCaseData( double.NaN, "NaN" ),
+ new TestCaseData( double.PositiveInfinity, "Infinity" ) };
+
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ [TestCase(double.NegativeInfinity)]
+ [TestCase(float.NaN)]
+ [TestCase(float.PositiveInfinity)]
+ [TestCase(float.NegativeInfinity)]
+ public void CanMatchSpecialFloatingPointValues(object value)
+ {
+ Assert.That(value, new EqualConstraint(value));
+ }
+
+ [Test]
+ public void CanMatchDates()
+ {
+ DateTime expected = new DateTime(2007, 4, 1);
+ DateTime actual = new DateTime(2007, 4, 1);
+ Assert.That(actual, new EqualConstraint(expected));
+ }
+
+ [Test]
+ public void CanMatchDatesWithinTimeSpan()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 1, 13, 1, 0);
+ TimeSpan tolerance = TimeSpan.FromMinutes(5.0);
+ Assert.That(actual, new EqualConstraint(expected).Within(tolerance));
+ }
+
+ [Test]
+ public void CanMatchDatesWithinDays()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 4, 13, 0, 0);
+ Assert.That(actual, new EqualConstraint(expected).Within(5).Days);
+ }
+
+ [Test]
+ public void CanMatchDatesWithinHours()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 1, 16, 0, 0);
+ Assert.That(actual, new EqualConstraint(expected).Within(5).Hours);
+ }
+
+ [Test]
+ public void CanMatchDatesWithinMinutes()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 1, 13, 1, 0);
+ Assert.That(actual, new EqualConstraint(expected).Within(5).Minutes);
+ }
+
+ [Test]
+ public void CanMatchTimeSpanWithinMinutes()
+ {
+ TimeSpan expected = new TimeSpan(10, 0, 0);
+ TimeSpan actual = new TimeSpan(10, 2, 30);
+ Assert.That(actual, new EqualConstraint(expected).Within(5).Minutes);
+ }
+
+ [Test]
+ public void CanMatchDatesWithinSeconds()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 1, 13, 1, 0);
+ Assert.That(actual, new EqualConstraint(expected).Within(300).Seconds);
+ }
+
+ [Test]
+ public void CanMatchDatesWithinMilliseconds()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 1, 13, 1, 0);
+ Assert.That(actual, new EqualConstraint(expected).Within(300000).Milliseconds);
+ }
+
+ [Test]
+ public void CanMatchDatesWithinTicks()
+ {
+ DateTime expected = new DateTime(2007, 4, 1, 13, 0, 0);
+ DateTime actual = new DateTime(2007, 4, 1, 13, 1, 0);
+ Assert.That(actual, new EqualConstraint(expected).Within(TimeSpan.TicksPerMinute * 5).Ticks);
+ }
+
+ #region Dictionary Tests
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF_2_0
+#if !SILVERLIGHT
+ // TODO: Move these to a separate fixture
+ [Test]
+ public void CanMatchHashtables_SameOrder()
+ {
+ Assert.AreEqual(new Hashtable { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Hashtable { { 0, 0 }, { 1, 1 }, { 2, 2 } });
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void CanMatchHashtables_Failure()
+ {
+ Assert.AreEqual(new Hashtable { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Hashtable { { 0, 0 }, { 1, 5 }, { 2, 2 } });
+ }
+
+ [Test]
+ public void CanMatchHashtables_DifferentOrder()
+ {
+ Assert.AreEqual(new Hashtable { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Hashtable { { 0, 0 }, { 2, 2 }, { 1, 1 } });
+ }
+#endif
+
+ [Test]
+ public void CanMatchDictionaries_SameOrder()
+ {
+ Assert.AreEqual(new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 } });
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void CanMatchDictionaries_Failure()
+ {
+ Assert.AreEqual(new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Dictionary<int, int> { { 0, 0 }, { 1, 5 }, { 2, 2 } });
+ }
+
+ [Test]
+ public void CanMatchDictionaries_DifferentOrder()
+ {
+ Assert.AreEqual(new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Dictionary<int, int> { { 0, 0 }, { 2, 2 }, { 1, 1 } });
+ }
+
+#if !SILVERLIGHT
+ [Test]
+ public void CanMatchHashtableWithDictionary()
+ {
+ Assert.AreEqual(new Hashtable { { 0, 0 }, { 1, 1 }, { 2, 2 } },
+ new Dictionary<int, int> { { 0, 0 }, { 2, 2 }, { 1, 1 } });
+ }
+#endif
+#endif
+
+ #endregion
+
+ [TestCase(20000000000000004.0)]
+ [TestCase(19999999999999996.0)]
+ public void CanMatchDoublesWithUlpTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(20000000000000000.0).Within(1).Ulps);
+ }
+
+ [ExpectedException(typeof(AssertionException), ExpectedMessage = "+/- 1 Ulps", MatchType = MessageMatch.Contains)]
+ [TestCase(20000000000000008.0)]
+ [TestCase(19999999999999992.0)]
+ public void FailsOnDoublesOutsideOfUlpTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(20000000000000000.0).Within(1).Ulps);
+ }
+
+ [TestCase(19999998.0f)]
+ [TestCase(20000002.0f)]
+ public void CanMatchSinglesWithUlpTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(20000000.0f).Within(1).Ulps);
+ }
+
+ [ExpectedException(typeof(AssertionException), ExpectedMessage = "+/- 1 Ulps", MatchType = MessageMatch.Contains)]
+ [TestCase(19999996.0f)]
+ [TestCase(20000004.0f)]
+ public void FailsOnSinglesOutsideOfUlpTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(20000000.0f).Within(1).Ulps);
+ }
+
+ [TestCase(9500.0)]
+ [TestCase(10000.0)]
+ [TestCase(10500.0)]
+ public void CanMatchDoublesWithRelativeTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(10000.0).Within(10.0).Percent);
+ }
+
+ [ExpectedException(typeof(AssertionException), ExpectedMessage = "+/- 10.0d Percent", MatchType = MessageMatch.Contains)]
+ [TestCase(8500.0)]
+ [TestCase(11500.0)]
+ public void FailsOnDoublesOutsideOfRelativeTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(10000.0).Within(10.0).Percent);
+ }
+
+ [TestCase(9500.0f)]
+ [TestCase(10000.0f)]
+ [TestCase(10500.0f)]
+ public void CanMatchSinglesWithRelativeTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(10000.0f).Within(10.0f).Percent);
+ }
+
+ [ExpectedException(typeof(AssertionException), ExpectedMessage = "+/- 10.0f Percent", MatchType = MessageMatch.Contains)]
+ [TestCase(8500.0f)]
+ [TestCase(11500.0f)]
+ public void FailsOnSinglesOutsideOfRelativeTolerance(object value)
+ {
+ Assert.That(value, new EqualConstraint(10000.0f).Within(10.0f).Percent);
+ }
+
+ /// <summary>Applies both the Percent and Ulps modifiers to cause an exception</summary>
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorWithPercentAndUlpsToleranceModes()
+ {
+ EqualConstraint shouldFail = new EqualConstraint(100.0f).Within(10.0f).Percent.Ulps;
+ }
+
+ /// <summary>Applies both the Ulps and Percent modifiers to cause an exception</summary>
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorWithUlpsAndPercentToleranceModes()
+ {
+ EqualConstraint shouldFail = new EqualConstraint(100.0f).Within(10.0f).Ulps.Percent;
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfPercentPrecedesWithin()
+ {
+ Assert.That(1010, Is.EqualTo(1000).Percent.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfUlpsPrecedesWithin()
+ {
+ Assert.That(1010.0, Is.EqualTo(1000.0).Ulps.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfDaysPrecedesWithin()
+ {
+ Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now).Days.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfHoursPrecedesWithin()
+ {
+ Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now).Hours.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfMinutesPrecedesWithin()
+ {
+ Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now).Minutes.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfSecondsPrecedesWithin()
+ {
+ Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now).Seconds.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfMillisecondsPrecedesWithin()
+ {
+ Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now).Milliseconds.Within(5));
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfTicksPrecedesWithin()
+ {
+ Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now).Ticks.Within(5));
+ }
+
+ [ExpectedException(typeof(InvalidOperationException))]
+ [TestCase(1000, 1010)]
+ [TestCase(1000U, 1010U)]
+ [TestCase(1000L, 1010L)]
+ [TestCase(1000UL, 1010UL)]
+ public void ErrorIfUlpsIsUsedOnIntegralType(object x, object y)
+ {
+ Assert.That(y, Is.EqualTo(x).Within(2).Ulps);
+ }
+
+ [Test, ExpectedException(typeof(InvalidOperationException))]
+ public void ErrorIfUlpsIsUsedOnDecimal()
+ {
+ Assert.That(100m, Is.EqualTo(100m).Within(2).Ulps);
+ }
+
+ [Test]
+ public void UsesProvidedIComparer()
+ {
+ SimpleObjectComparer comparer = new SimpleObjectComparer();
+ Assert.That(2 + 2, Is.EqualTo(4).Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void UsesProvidedEqualityComparer()
+ {
+ SimpleEqualityComparer comparer = new SimpleEqualityComparer();
+ Assert.That(2 + 2, Is.EqualTo(4).Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ [Test]
+ public void UsesProvidedEqualityComparerOfT()
+ {
+ SimpleEqualityComparer<int> comparer = new SimpleEqualityComparer<int>();
+ Assert.That(2 + 2, Is.EqualTo(4).Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ [Test]
+ public void UsesProvidedComparerOfT()
+ {
+ SimpleEqualityComparer<int> comparer = new SimpleEqualityComparer<int>();
+ Assert.That(2 + 2, Is.EqualTo(4).Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ [Test]
+ public void UsesProvidedComparisonOfT()
+ {
+ MyComparison<int> comparer = new MyComparison<int>();
+ Assert.That(2 + 2, Is.EqualTo(4).Using(new Comparison<int>(comparer.Compare)));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparison<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+#if !NETCF_2_0
+ [Test]
+ public void UsesProvidedLambda_IntArgs()
+ {
+ Assert.That(2 + 2, Is.EqualTo(4).Using<int>((x, y) => x.CompareTo(y)));
+ }
+
+ [Test]
+ public void UsesProvidedLambda_StringArgs()
+ {
+ Assert.That("hello", Is.EqualTo("HELLO").Using<string>((x, y) => StringUtil.Compare(x, y, true)));
+ }
+
+ [Test]
+ public void UsesProvidedListComparer()
+ {
+ var list1 = new List<int>() { 2, 3 };
+ var list2 = new List<int>() { 3, 4 };
+
+ var list11 = new List<List<int>>() { list1 };
+ var list22 = new List<List<int>>() { list2 };
+ var comparer = new IntListEqualComparer();
+
+ Assert.That(list11, new CollectionEquivalentConstraint(list22).Using(comparer));
+ }
+#endif
+
+ public class IntListEqualComparer : IEqualityComparer<List<int>>
+ {
+ public bool Equals(List<int> x, List<int> y)
+ {
+ return x.Count == y.Count;
+ }
+
+ public int GetHashCode(List<int> obj)
+ {
+ return obj.Count.GetHashCode();
+ }
+ }
+
+#if !NETCF_2_0
+ [Test]
+ public void UsesProvidedArrayComparer()
+ {
+ var array1 = new int[] { 2, 3 };
+ var array2 = new int[] { 3, 4 };
+
+ var list11 = new List<int[]>() { array1 };
+ var list22 = new List<int[]>() { array2 };
+ var comparer = new IntArrayEqualComparer();
+
+ Assert.That(list11, new CollectionEquivalentConstraint(list22).Using(comparer));
+ }
+
+ public class IntArrayEqualComparer : IEqualityComparer<int[]>
+ {
+ public bool Equals(int[] x, int[] y)
+ {
+ return x.Length == y.Length;
+ }
+
+ public int GetHashCode(int[] obj)
+ {
+ return obj.Length.GetHashCode();
+ }
+ }
+#endif
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ExactCountConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/ExactCountConstraintTests.cs
new file mode 100755
index 0000000..685e77d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ExactCountConstraintTests.cs
@@ -0,0 +1,83 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Assertions;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ public class ExactCountConstraintTests : MessageChecker
+ {
+ private static readonly string[] names = new string[] { "Charlie", "Fred", "Joe", "Charlie" };
+
+ [Test]
+ public void ZeroItemsMatch()
+ {
+ Assert.That(names, new ExactCountConstraint(0, Is.EqualTo("Sam")));
+ Assert.That(names, Has.Exactly(0).EqualTo("Sam"));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ZeroItemsMatchFails()
+ {
+ expectedMessage =
+ TextMessageWriter.Pfx_Expected + "no item \"Charlie\"" + Env.NewLine +
+ TextMessageWriter.Pfx_Actual + "< \"Charlie\", \"Fred\", \"Joe\", \"Charlie\" >" + Env.NewLine;
+ Assert.That(names, new ExactCountConstraint(0, Is.EqualTo("Charlie")));
+ }
+
+ [Test]
+ public void ExactlyOneItemMatches()
+ {
+ Assert.That(names, new ExactCountConstraint(1, Is.EqualTo("Fred")));
+ Assert.That(names, Has.Exactly(1).EqualTo("Fred"));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ExactlyOneItemMatchFails()
+ {
+ expectedMessage =
+ TextMessageWriter.Pfx_Expected + "exactly one item \"Charlie\"" + Env.NewLine +
+ TextMessageWriter.Pfx_Actual + "< \"Charlie\", \"Fred\", \"Joe\", \"Charlie\" >" + Env.NewLine;
+ Assert.That(names, new ExactCountConstraint(1, Is.EqualTo("Charlie")));
+ }
+
+ [Test]
+ public void ExactlyTwoItemsMatch()
+ {
+ Assert.That(names, new ExactCountConstraint(2, Is.EqualTo("Charlie")));
+ Assert.That(names, Has.Exactly(2).EqualTo("Charlie"));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void ExactlyTwoItemsMatchFails()
+ {
+ expectedMessage =
+ TextMessageWriter.Pfx_Expected + "exactly 2 items \"Fred\"" + Env.NewLine +
+ TextMessageWriter.Pfx_Actual + "< \"Charlie\", \"Fred\", \"Joe\", \"Charlie\" >" + Env.NewLine;
+ Assert.That(names, new ExactCountConstraint(2, Is.EqualTo("Fred")));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ExactTypeConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/ExactTypeConstraintTests.cs
new file mode 100755
index 0000000..3221c10
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ExactTypeConstraintTests.cs
@@ -0,0 +1,50 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class ExactTypeConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new ExactTypeConstraint(typeof(D1));
+ expectedDescription = string.Format("<{0}>", typeof(D1));
+ stringRepresentation = string.Format("<typeof {0}>", typeof(D1));
+ }
+
+ internal object[] SuccessData = new object[] { new D1() };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( new B(), "<NUnit.Framework.Constraints.Tests.ExactTypeConstraintTests+B>" ),
+ new TestCaseData( new D2(), "<NUnit.Framework.Constraints.Tests.ExactTypeConstraintTests+D2>" )
+ };
+
+ class B { }
+
+ class D1 : B { }
+
+ class D2 : D1 { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/FloatingPointNumericsTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/FloatingPointNumericsTest.cs
new file mode 100755
index 0000000..b5871a1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/FloatingPointNumericsTest.cs
@@ -0,0 +1,120 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class FloatingPointNumericsTest
+ {
+
+ /// <summary>Tests the floating point value comparison helper</summary>
+ [Test]
+ public void FloatEqualityWithUlps()
+ {
+ Assert.IsTrue(
+ FloatingPointNumerics.AreAlmostEqualUlps(0.00000001f, 0.0000000100000008f, 1)
+ );
+ Assert.IsFalse(
+ FloatingPointNumerics.AreAlmostEqualUlps(0.00000001f, 0.0000000100000017f, 1)
+ );
+
+ Assert.IsTrue(
+ FloatingPointNumerics.AreAlmostEqualUlps(1000000.00f, 1000000.06f, 1)
+ );
+ Assert.IsFalse(
+ FloatingPointNumerics.AreAlmostEqualUlps(1000000.00f, 1000000.13f, 1)
+ );
+ }
+
+ /// <summary>Tests the double precision floating point value comparison helper</summary>
+ [Test]
+ public void DoubleEqualityWithUlps()
+ {
+ Assert.IsTrue(
+ FloatingPointNumerics.AreAlmostEqualUlps(0.00000001, 0.000000010000000000000002, 1)
+ );
+ Assert.IsFalse(
+ FloatingPointNumerics.AreAlmostEqualUlps(0.00000001, 0.000000010000000000000004, 1)
+ );
+
+ Assert.IsTrue(
+ FloatingPointNumerics.AreAlmostEqualUlps(1000000.00, 1000000.0000000001, 1)
+ );
+ Assert.IsFalse(
+ FloatingPointNumerics.AreAlmostEqualUlps(1000000.00, 1000000.0000000002, 1)
+ );
+ }
+
+ /// <summary>Tests the integer reinterpretation functions</summary>
+ [Test]
+ public void MirroredIntegerReinterpretation()
+ {
+ Assert.AreEqual(
+ 12345.0f,
+ FloatingPointNumerics.ReinterpretAsFloat(
+ FloatingPointNumerics.ReinterpretAsInt(12345.0f)
+ )
+ );
+ }
+
+ /// <summary>Tests the long reinterpretation functions</summary>
+ [Test]
+ public void MirroredLongReinterpretation()
+ {
+ Assert.AreEqual(
+ 12345.67890,
+ FloatingPointNumerics.ReinterpretAsDouble(
+ FloatingPointNumerics.ReinterpretAsLong(12345.67890)
+ )
+ );
+ }
+
+ /// <summary>Tests the floating point reinterpretation functions</summary>
+ [Test]
+ public void MirroredFloatReinterpretation()
+ {
+ Assert.AreEqual(
+ 12345,
+ FloatingPointNumerics.ReinterpretAsInt(
+ FloatingPointNumerics.ReinterpretAsFloat(12345)
+ )
+ );
+ }
+
+
+ /// <summary>
+ /// Tests the double prevision floating point reinterpretation functions
+ /// </summary>
+ [Test]
+ public void MirroredDoubleReinterpretation()
+ {
+ Assert.AreEqual(
+ 1234567890,
+ FloatingPointNumerics.ReinterpretAsLong(
+ FloatingPointNumerics.ReinterpretAsDouble(1234567890)
+ )
+ );
+ }
+
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/GreaterThanConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/GreaterThanConstraintTests.cs
new file mode 100755
index 0000000..4762b34
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/GreaterThanConstraintTests.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class GreaterThanConstraintTests : ComparisonConstraintTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = comparisonConstraint = new GreaterThanConstraint(5);
+ expectedDescription = "greater than 5";
+ stringRepresentation = "<greaterthan 5>";
+ }
+
+ internal object[] SuccessData = new object[] { 6, 5.001 };
+
+ internal object[] FailureData = new object[] { new object[] { 4, "4" }, new object[] { 5, "5" } };
+
+ internal object[] InvalidData = new object[] { null, "xxx" };
+
+ [Test]
+ public void CanCompareIComparables()
+ {
+ ClassWithIComparable expected = new ClassWithIComparable(0);
+ ClassWithIComparable actual = new ClassWithIComparable(42);
+ Assert.That(actual, Is.GreaterThan(expected));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void CanCompareIComparablesOfT()
+ {
+ ClassWithIComparableOfT expected = new ClassWithIComparableOfT(0);
+ ClassWithIComparableOfT actual = new ClassWithIComparableOfT(42);
+ Assert.That(actual, Is.GreaterThan(expected));
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/GreaterThanOrEqualConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/GreaterThanOrEqualConstraintTests.cs
new file mode 100755
index 0000000..3c679d0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/GreaterThanOrEqualConstraintTests.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class GreaterThanOrEqualConstraintTests : ComparisonConstraintTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = comparisonConstraint = new GreaterThanOrEqualConstraint(5);
+ expectedDescription = "greater than or equal to 5";
+ stringRepresentation = "<greaterthanorequal 5>";
+ }
+
+ internal object[] SuccessData = new object[] { 6, 5 };
+
+ internal object[] FailureData = new object[] { new object[] { 4, "4" } };
+
+ internal object[] InvalidData = new object[] { null, "xxx" };
+
+ [Test]
+ public void CanCompareIComparables()
+ {
+ ClassWithIComparable expected = new ClassWithIComparable(0);
+ ClassWithIComparable actual = new ClassWithIComparable(42);
+ Assert.That(actual, Is.GreaterThanOrEqualTo(expected));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void CanCompareIComparablesOfT()
+ {
+ ClassWithIComparableOfT expected = new ClassWithIComparableOfT(0);
+ ClassWithIComparableOfT actual = new ClassWithIComparableOfT(42);
+ Assert.That(actual, Is.GreaterThanOrEqualTo(expected));
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/InstanceOfTypeConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/InstanceOfTypeConstraintTests.cs
new file mode 100755
index 0000000..32e3f25
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/InstanceOfTypeConstraintTests.cs
@@ -0,0 +1,49 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class InstanceOfTypeConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new InstanceOfTypeConstraint(typeof(D1));
+ expectedDescription = string.Format("instance of <{0}>", typeof(D1));
+ stringRepresentation = string.Format("<instanceof {0}>", typeof(D1));
+ }
+
+ internal object[] SuccessData = new object[] { new D1(), new D2() };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( new B(), "<NUnit.Framework.Constraints.Tests.InstanceOfTypeConstraintTests+B>" )
+ };
+
+ class B { }
+
+ class D1 : B { }
+
+ class D2 : D1 { }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/LessThanConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/LessThanConstraintTests.cs
new file mode 100755
index 0000000..d7e155d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/LessThanConstraintTests.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class LessThanConstraintTests : ComparisonConstraintTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = comparisonConstraint = new LessThanConstraint(5);
+ expectedDescription = "less than 5";
+ stringRepresentation = "<lessthan 5>";
+ }
+
+ internal object[] SuccessData = new object[] { 4, 4.999 };
+
+ internal object[] FailureData = new object[] { new object[] { 6, "6" }, new object[] { 5, "5" } };
+
+ internal object[] InvalidData = new object[] { null, "xxx" };
+
+ [Test]
+ public void CanCompareIComparables()
+ {
+ ClassWithIComparable expected = new ClassWithIComparable(42);
+ ClassWithIComparable actual = new ClassWithIComparable(0);
+ Assert.That(actual, Is.LessThan(expected));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void CanCompareIComparablesOfT()
+ {
+ ClassWithIComparableOfT expected = new ClassWithIComparableOfT(42);
+ ClassWithIComparableOfT actual = new ClassWithIComparableOfT(0);
+ Assert.That(actual, Is.LessThan(expected));
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/LessThanOrEqualConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/LessThanOrEqualConstraintTests.cs
new file mode 100755
index 0000000..fdb2e50
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/LessThanOrEqualConstraintTests.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class LessThanOrEqualConstraintTests : ComparisonConstraintTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = comparisonConstraint = new LessThanOrEqualConstraint(5);
+ expectedDescription = "less than or equal to 5";
+ stringRepresentation = "<lessthanorequal 5>";
+ }
+
+ internal object[] SuccessData = new object[] { 4, 5 };
+
+ internal object[] FailureData = new object[] { new object[] { 6, "6" } };
+
+ internal object[] InvalidData = new object[] { null, "xxx" };
+
+ [Test]
+ public void CanCompareIComparables()
+ {
+ ClassWithIComparable expected = new ClassWithIComparable(42);
+ ClassWithIComparable actual = new ClassWithIComparable(0);
+ Assert.That(actual, Is.LessThanOrEqualTo(expected));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void CanCompareIComparablesOfT()
+ {
+ ClassWithIComparableOfT expected = new ClassWithIComparableOfT(42);
+ ClassWithIComparableOfT actual = new ClassWithIComparableOfT(0);
+ Assert.That(actual, Is.LessThanOrEqualTo(expected));
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/MessageWriterTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/MessageWriterTests.cs
new file mode 100755
index 0000000..3718a83
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/MessageWriterTests.cs
@@ -0,0 +1,129 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Tests
+{
+ class MessageWriterTests
+ {
+ protected TextMessageWriter writer;
+
+ [SetUp]
+ public void SetUp()
+ {
+ writer = new TextMessageWriter();
+ }
+ }
+
+ [TestFixture]
+ class TestMessageWriterTests : MessageWriterTests
+ {
+ [Test]
+ public void ConnectorIsWrittenWithSurroundingSpaces()
+ {
+ writer.WriteConnector("and");
+ Assert.That(writer.ToString(), Is.EqualTo(" and "));
+ }
+
+ [Test]
+ public void PredicateIsWrittenWithTrailingSpace()
+ {
+ writer.WritePredicate("contains");
+ Assert.That(writer.ToString(), Is.EqualTo("contains "));
+ }
+
+ [TestFixture]
+ public class ExpectedValueTests : ValueTests
+ {
+ protected override void WriteValue(object obj)
+ {
+ writer.WriteExpectedValue(obj);
+ }
+ }
+
+ [TestFixture]
+ public class ActualValueTests : ValueTests
+ {
+ protected override void WriteValue(object obj)
+ {
+ writer.WriteActualValue( obj );
+ }
+ }
+
+ public abstract class ValueTests : MessageWriterTests
+ {
+ protected abstract void WriteValue( object obj);
+
+ [Test]
+ public void IntegerIsWrittenAsIs()
+ {
+ WriteValue(42);
+ Assert.That(writer.ToString(), Is.EqualTo("42"));
+ }
+
+ [Test]
+ public void StringIsWrittenWithQuotes()
+ {
+ WriteValue("Hello");
+ Assert.That(writer.ToString(), Is.EqualTo("\"Hello\""));
+ }
+
+ //[Test]
+ //public void ControlCharactersInStringsAreEscaped()
+ //{
+ // WriteValue("Best Wishes,\r\n\tCharlie\r\n");
+ // Assert.That(writer.ToString(), Is.EqualTo("\"Best Wishes,\\r\\n\\tCharlie\\r\\n\""));
+ //}
+
+ [Test]
+ public void FloatIsWrittenWithTrailingF()
+ {
+ WriteValue(0.5f);
+ Assert.That(writer.ToString(), Is.EqualTo("0.5f"));
+ }
+
+ [Test]
+ public void FloatIsWrittenToNineDigits()
+ {
+ WriteValue(0.33333333333333f);
+ int digits = writer.ToString().Length - 3; // 0.dddddddddf
+ Assert.That(digits, Is.EqualTo(9));
+ }
+
+ [Test]
+ public void DoubleIsWrittenWithTrailingD()
+ {
+ WriteValue(0.5d);
+ Assert.That(writer.ToString(), Is.EqualTo("0.5d"));
+ }
+
+ [Test]
+ public void DoubleIsWrittenToSeventeenDigits()
+ {
+ WriteValue(0.33333333333333333333333333333333333333333333d);
+ int digits = writer.ToString().Length - 3;
+ Assert.That(digits, Is.EqualTo(17));
+ }
+
+ [Test]
+ public void DecimalIsWrittenWithTrailingM()
+ {
+ WriteValue(0.5m);
+ Assert.That(writer.ToString(), Is.EqualTo("0.5m"));
+ }
+
+ [Test]
+ public void DecimalIsWrittenToTwentyNineDigits()
+ {
+ WriteValue(12345678901234567890123456789m);
+ Assert.That(writer.ToString(), Is.EqualTo("12345678901234567890123456789m"));
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/MsgUtilTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/MsgUtilTests.cs
new file mode 100755
index 0000000..65d207e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/MsgUtilTests.cs
@@ -0,0 +1,128 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ /// <summary>
+ /// Summary description for MsgUtilTests.
+ /// </summary>
+ [TestFixture]
+ public class MsgUtilTests
+ {
+ [TestCase("\n", "\\n")]
+ [TestCase("\n\n", "\\n\\n")]
+ [TestCase("\n\n\n", "\\n\\n\\n")]
+ [TestCase("\r", "\\r")]
+ [TestCase("\r\r", "\\r\\r")]
+ [TestCase("\r\r\r", "\\r\\r\\r")]
+ [TestCase("\r\n", "\\r\\n")]
+ [TestCase("\n\r", "\\n\\r")]
+ [TestCase("This is a\rtest message", "This is a\\rtest message")]
+ [TestCase("", "")]
+#if CLR_2_0 || CLR_4_0
+ [TestCase(null, null)]
+#endif
+ [TestCase("\t", "\\t")]
+ [TestCase("\t\n", "\\t\\n")]
+ [TestCase("\\r\\n", "\\\\r\\\\n")]
+ // TODO: Figure out why this fails in Mono
+ //[TestCase("\0", "\\0")]
+ [TestCase("\a", "\\a")]
+ [TestCase("\b", "\\b")]
+ [TestCase("\f", "\\f")]
+ [TestCase("\v", "\\v")]
+ [TestCase("\x0085", "\\x0085", Description = "Next line character")]
+ [TestCase("\x2028", "\\x2028", Description = "Line separator character")]
+ [TestCase("\x2029", "\\x2029", Description = "Paragraph separator character")]
+ public void EscapeControlCharsTest(string input, string expected)
+ {
+ Assert.That( MsgUtils.EscapeControlChars(input), Is.EqualTo(expected) );
+ }
+
+ [Test]
+ public void EscapeNullCharInString()
+ {
+ Assert.That(MsgUtils.EscapeControlChars("\0"), Is.EqualTo("\\0"));
+ }
+
+ private const string s52 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ [TestCase(s52, 52, 0, s52, TestName="NoClippingNeeded")]
+ [TestCase(s52, 29, 0, "abcdefghijklmnopqrstuvwxyz...", TestName="ClipAtEnd")]
+ [TestCase(s52, 29, 26, "...ABCDEFGHIJKLMNOPQRSTUVWXYZ", TestName="ClipAtStart")]
+ [TestCase(s52, 28, 26, "...ABCDEFGHIJKLMNOPQRSTUV...", TestName="ClipAtStartAndEnd")]
+ public void TestClipString(string input, int max, int start, string result)
+ {
+ System.Console.WriteLine("input= \"{0}\"", input);
+ System.Console.WriteLine("result= \"{0}\"", result);
+ Assert.That(MsgUtils.ClipString(input, max, start), Is.EqualTo(result));
+ }
+
+ //[TestCase('\0')]
+ //[TestCase('\r')]
+ //public void CharacterArgumentTest(char c)
+ //{
+ //}
+
+ [Test]
+ public void ClipExpectedAndActual_StringsFitInLine()
+ {
+ string eClip = s52;
+ string aClip = "abcde";
+ MsgUtils.ClipExpectedAndActual(ref eClip, ref aClip, 52, 5);
+ Assert.That(eClip, Is.EqualTo(s52));
+ Assert.That(aClip, Is.EqualTo("abcde"));
+
+ eClip = s52;
+ aClip = "abcdefghijklmno?qrstuvwxyz";
+ MsgUtils.ClipExpectedAndActual(ref eClip, ref aClip, 52, 15);
+ Assert.That(eClip, Is.EqualTo(s52));
+ Assert.That(aClip, Is.EqualTo("abcdefghijklmno?qrstuvwxyz"));
+ }
+
+ [Test]
+ public void ClipExpectedAndActual_StringTailsFitInLine()
+ {
+ string s1 = s52;
+ string s2 = s52.Replace('Z', '?');
+ MsgUtils.ClipExpectedAndActual(ref s1, ref s2, 29, 51);
+ Assert.That(s1, Is.EqualTo("...ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
+ }
+
+ [Test]
+ public void ClipExpectedAndActual_StringsDoNotFitInLine()
+ {
+ string s1 = s52;
+ string s2 = "abcdefghij";
+ MsgUtils.ClipExpectedAndActual(ref s1, ref s2, 29, 10);
+ Assert.That(s1, Is.EqualTo("abcdefghijklmnopqrstuvwxyz..."));
+ Assert.That(s2, Is.EqualTo("abcdefghij"));
+
+ s1 = s52;
+ s2 = "abcdefghijklmno?qrstuvwxyz";
+ MsgUtils.ClipExpectedAndActual(ref s1, ref s2, 25, 15);
+ Assert.That(s1, Is.EqualTo("...efghijklmnopqrstuvw..."));
+ Assert.That(s2, Is.EqualTo("...efghijklmno?qrstuvwxyz"));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/NUnitComparerTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/NUnitComparerTests.cs
new file mode 100755
index 0000000..e068739
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/NUnitComparerTests.cs
@@ -0,0 +1,78 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class NUnitComparerTests
+ {
+ private Tolerance tolerance;
+ private NUnitComparer comparer;
+
+ [SetUp]
+ public void SetUp()
+ {
+ tolerance = Tolerance.Empty;
+ comparer = new NUnitComparer();
+ }
+
+ [TestCase(4, 4)]
+ [TestCase(4.0d, 4.0d)]
+ [TestCase(4.0f, 4.0f)]
+ [TestCase(4, 4.0d)]
+ [TestCase(4, 4.0f)]
+ [TestCase(4.0d, 4)]
+ [TestCase(4.0d, 4.0f)]
+ [TestCase(4.0f, 4)]
+ [TestCase(4.0f, 4.0d)]
+ [TestCase(SpecialValue.Null, SpecialValue.Null)]
+#if CLR_2_0 || CLR_4_0
+ [TestCase(null, null)]
+#endif
+ public void EqualItems(object x, object y)
+ {
+ Assert.That(comparer.Compare(x, y) == 0);
+ }
+
+ [TestCase(4, 2)]
+ [TestCase(4.0d, 2.0d)]
+ [TestCase(4.0f, 2.0f)]
+ [TestCase(4, 2.0d)]
+ [TestCase(4, 2.0f)]
+ [TestCase(4.0d, 2)]
+ [TestCase(4.0d, 2.0f)]
+ [TestCase(4.0f, 2)]
+ [TestCase(4.0f, 2.0d)]
+ [TestCase(4, SpecialValue.Null)]
+#if CLR_2_0 || CLR_4_0
+ [TestCase(4, null)]
+#endif
+ public void UnequalItems(object greater, object lesser)
+ {
+ Assert.That(comparer.Compare(greater, lesser) > 0);
+ Assert.That(comparer.Compare(lesser, greater) < 0);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/NUnitEqualityComparerTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/NUnitEqualityComparerTests.cs
new file mode 100755
index 0000000..411fef1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/NUnitEqualityComparerTests.cs
@@ -0,0 +1,208 @@
+// ***********************************************************************
+// Copyright (c) 2011 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ [TestFixture]
+ public class EqualityComparerTests
+ {
+ private Tolerance tolerance;
+ private NUnitEqualityComparer comparer;
+
+ [SetUp]
+ public void Setup()
+ {
+ tolerance = Tolerance.Empty;
+ comparer = new NUnitEqualityComparer();
+ }
+
+ [TestCase(4, 4)]
+ [TestCase(4.0d, 4.0d)]
+ [TestCase(4.0f, 4.0f)]
+ [TestCase(4, 4.0d)]
+ [TestCase(4, 4.0f)]
+ [TestCase(4.0d, 4)]
+ [TestCase(4.0d, 4.0f)]
+ [TestCase(4.0f, 4)]
+ [TestCase(4.0f, 4.0d)]
+ [TestCase(SpecialValue.Null, SpecialValue.Null)]
+#if CLR_2_0 || CLR_4_0
+ [TestCase(null, null)]
+#endif
+ public void EqualItems(object x, object y)
+ {
+ Assert.That(comparer.AreEqual(x, y, ref tolerance));
+ }
+
+ [TestCase(4, 2)]
+ [TestCase(4.0d, 2.0d)]
+ [TestCase(4.0f, 2.0f)]
+ [TestCase(4, 2.0d)]
+ [TestCase(4, 2.0f)]
+ [TestCase(4.0d, 2)]
+ [TestCase(4.0d, 2.0f)]
+ [TestCase(4.0f, 2)]
+ [TestCase(4.0f, 2.0d)]
+ [TestCase(4, SpecialValue.Null)]
+#if CLR_2_0 || CLR_4_0
+ [TestCase(4, null)]
+#endif
+ public void UnequalItems(object greater, object lesser)
+ {
+ Assert.False(comparer.AreEqual(greater, lesser, ref tolerance));
+ Assert.False(comparer.AreEqual(lesser, greater, ref tolerance));
+ }
+
+ [TestCase(double.PositiveInfinity, double.PositiveInfinity)]
+ [TestCase(double.NegativeInfinity, double.NegativeInfinity)]
+ [TestCase(double.NaN, double.NaN)]
+ [TestCase(float.PositiveInfinity, float.PositiveInfinity)]
+ [TestCase(float.NegativeInfinity, float.NegativeInfinity)]
+ [TestCase(float.NaN, float.NaN)]
+ public void SpecialFloatingPointValuesCompareAsEqual(object x, object y)
+ {
+ Assert.That(comparer.AreEqual(x, y, ref tolerance));
+ }
+
+ [Test]
+ public void CanCompareArrayContainingSelfToSelf()
+ {
+ object[] array = new object[1];
+ array[0] = array;
+
+ Assert.True(comparer.AreEqual(array, array, ref tolerance));
+ }
+
+#if CLR_2_0 || CLR_4_0
+#if !NETCF
+ [Test]
+ public void IEquatableSuccess()
+ {
+ IEquatableWithoutEqualsOverridden x = new IEquatableWithoutEqualsOverridden(1);
+ IEquatableWithoutEqualsOverridden y = new IEquatableWithoutEqualsOverridden(1);
+
+ Assert.IsTrue(comparer.AreEqual(x, y, ref tolerance));
+ }
+
+ [Test]
+ public void IEquatableDifferentTypesSuccess_WhenActualImplementsIEquatable()
+ {
+ int x = 1;
+ Int32IEquatable y = new Int32IEquatable(1);
+
+ // y.Equals(x) is what gets actually called
+ // TODO: This should work both ways
+ Assert.IsTrue(comparer.AreEqual(x, y, ref tolerance));
+ }
+
+ [Test]
+ public void IEquatableDifferentTypesSuccess_WhenExpectedImplementsIEquatable()
+ {
+ int x = 1;
+ Int32IEquatable y = new Int32IEquatable(1);
+
+ // y.Equals(x) is what gets actually called
+ // TODO: This should work both ways
+ Assert.IsTrue(comparer.AreEqual(y, x, ref tolerance));
+ }
+
+ [Test]
+ public void IEquatableHasPrecedenceOverDefaultEquals()
+ {
+ NeverEqualIEquatableWithOverriddenAlwaysTrueEquals x = new NeverEqualIEquatableWithOverriddenAlwaysTrueEquals();
+ NeverEqualIEquatableWithOverriddenAlwaysTrueEquals y = new NeverEqualIEquatableWithOverriddenAlwaysTrueEquals();
+
+ Assert.IsFalse(comparer.AreEqual(x, y, ref tolerance));
+ }
+#endif
+
+ [Test]
+ public void ReferenceEqualityHasPrecedenceOverIEquatable()
+ {
+ NeverEqualIEquatable z = new NeverEqualIEquatable();
+
+ Assert.IsTrue(comparer.AreEqual(z, z, ref tolerance));
+ }
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public class NeverEqualIEquatableWithOverriddenAlwaysTrueEquals : IEquatable<NeverEqualIEquatableWithOverriddenAlwaysTrueEquals>
+ {
+ public bool Equals(NeverEqualIEquatableWithOverriddenAlwaysTrueEquals other)
+ {
+ return false;
+ }
+
+ public override bool Equals(object obj)
+ {
+ return true;
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+ }
+
+ public class Int32IEquatable : IEquatable<int>
+ {
+ private readonly int value;
+
+ public Int32IEquatable(int value)
+ {
+ this.value = value;
+ }
+
+ public bool Equals(int other)
+ {
+ return value.Equals(other);
+ }
+ }
+
+ public class NeverEqualIEquatable : IEquatable<NeverEqualIEquatable>
+ {
+ public bool Equals(NeverEqualIEquatable other)
+ {
+ return false;
+ }
+ }
+
+ public class IEquatableWithoutEqualsOverridden : IEquatable<IEquatableWithoutEqualsOverridden>
+ {
+ private readonly int value;
+
+ public IEquatableWithoutEqualsOverridden(int value)
+ {
+ this.value = value;
+ }
+
+ public bool Equals(IEquatableWithoutEqualsOverridden other)
+ {
+ return value.Equals(other.value);
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/NotConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/NotConstraintTests.cs
new file mode 100755
index 0000000..72656e9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/NotConstraintTests.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class NotConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new NotConstraint( new EqualConstraint(null) );
+ expectedDescription = "not null";
+ stringRepresentation = "<not <equal null>>";
+ }
+
+ internal object[] SuccessData = new object[] { 42, "Hello" };
+
+ internal object[] FailureData = new object[] { new object[] { null, "null" } };
+
+ [Test, ExpectedException(typeof(AssertionException), ExpectedMessage = "ignoring case", MatchType = MessageMatch.Contains)]
+ public void NotHonorsIgnoreCaseUsingConstructors()
+ {
+ Assert.That("abc", new NotConstraint(new EqualConstraint("ABC").IgnoreCase));
+ }
+
+ [Test,ExpectedException(typeof(AssertionException),ExpectedMessage="ignoring case",MatchType=MessageMatch.Contains)]
+ public void NotHonorsIgnoreCaseUsingPrefixNotation()
+ {
+ Assert.That( "abc", Is.Not.EqualTo( "ABC" ).IgnoreCase );
+ }
+
+ [Test,ExpectedException(typeof(AssertionException),ExpectedMessage="+/-",MatchType=MessageMatch.Contains)]
+ public void NotHonorsTolerance()
+ {
+ Assert.That( 4.99d, Is.Not.EqualTo( 5.0d ).Within( .05d ) );
+ }
+
+ [Test]
+ public void CanUseNotOperator()
+ {
+ Assert.That(42, !new EqualConstraint(99));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/NumericsTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/NumericsTest.cs
new file mode 100755
index 0000000..64baa38
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/NumericsTest.cs
@@ -0,0 +1,112 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class NumericsTest
+ {
+ private Tolerance tenPercent, zeroTolerance;
+
+ [SetUp]
+ public void SetUp()
+ {
+ tenPercent = new Tolerance(10.0).Percent;
+ zeroTolerance = new Tolerance(0);
+ }
+
+ [TestCase(123456789)]
+ [TestCase(123456789U)]
+ [TestCase(123456789L)]
+ [TestCase(123456789UL)]
+ [TestCase(1234.5678f)]
+ [TestCase(1234.5678)]
+ [Test]
+ public void CanMatchWithoutToleranceMode(object value)
+ {
+ Assert.IsTrue(Numerics.AreEqual(value, value, ref zeroTolerance));
+ }
+
+ // Separate test case because you can't use decimal in an attribute (24.1.3)
+ [Test]
+ public void CanMatchDecimalWithoutToleranceMode()
+ {
+ Assert.IsTrue(Numerics.AreEqual(123m, 123m, ref zeroTolerance));
+ }
+
+ [TestCase((int)9500)]
+ [TestCase((int)10000)]
+ [TestCase((int)10500)]
+ [TestCase((uint)9500)]
+ [TestCase((uint)10000)]
+ [TestCase((uint)10500)]
+ [TestCase((long)9500)]
+ [TestCase((long)10000)]
+ [TestCase((long)10500)]
+ [TestCase((ulong)9500)]
+ [TestCase((ulong)10000)]
+ [TestCase((ulong)10500)]
+ [Test]
+ public void CanMatchIntegralsWithPercentage(object value)
+ {
+ Assert.IsTrue(Numerics.AreEqual(10000, value, ref tenPercent));
+ }
+
+ [Test]
+ public void CanMatchDecimalWithPercentage()
+ {
+ Assert.IsTrue(Numerics.AreEqual(10000m, 9500m, ref tenPercent));
+ Assert.IsTrue(Numerics.AreEqual(10000m, 10000m, ref tenPercent));
+ Assert.IsTrue(Numerics.AreEqual(10000m, 10500m, ref tenPercent));
+ }
+
+ [TestCase((int)8500)]
+ [TestCase((int)11500)]
+ [TestCase((uint)8500)]
+ [TestCase((uint)11500)]
+ [TestCase((long)8500)]
+ [TestCase((long)11500)]
+ [TestCase((ulong)8500)]
+ [TestCase((ulong)11500)]
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailsOnIntegralsOutsideOfPercentage(object value)
+ {
+ Assert.IsTrue(Numerics.AreEqual(10000, value, ref tenPercent));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailsOnDecimalBelowPercentage()
+ {
+ Assert.IsTrue(Numerics.AreEqual(10000m, 8500m, ref tenPercent));
+ }
+
+ [Test, ExpectedException(typeof(AssertionException))]
+ public void FailsOnDecimalAbovePercentage()
+ {
+ Assert.IsTrue(Numerics.AreEqual(10000m, 11500m, ref tenPercent));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/OrConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/OrConstraintTests.cs
new file mode 100755
index 0000000..23b61f3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/OrConstraintTests.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class OrConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new OrConstraint(new EqualConstraint(42), new EqualConstraint(99));
+ expectedDescription = "42 or 99";
+ stringRepresentation = "<or <equal 42> <equal 99>>";
+ }
+
+ internal object[] SuccessData = new object[] { 99, 42 };
+
+ internal object[] FailureData = new object[] { new object[] { 37, "37" } };
+
+ [Test]
+ public void CanCombineTestsWithOrOperator()
+ {
+ Assert.That(99, new EqualConstraint(42) | new EqualConstraint(99) );
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/PathConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/PathConstraintTests.cs
new file mode 100755
index 0000000..6b06ba8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/PathConstraintTests.cs
@@ -0,0 +1,252 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ /// <summary>
+ /// Summary description for PathConstraintTests.
+ /// </summary>]
+ [TestFixture]
+ public class SamePathTest_Windows : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SamePathConstraint( @"C:\folder1\file.tmp" ).IgnoreCase;
+ expectedDescription = @"Path matching ""C:\folder1\file.tmp""";
+ stringRepresentation = "<samepath \"C:\\folder1\\file.tmp\" ignorecase>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ @"C:\folder1\file.tmp",
+ @"C:\Folder1\File.TMP",
+ @"C:\folder1\.\file.tmp",
+ @"C:\folder1\folder2\..\file.tmp",
+ @"C:\FOLDER1\.\folder2\..\File.TMP",
+ @"C:/folder1/file.tmp"
+ };
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData( 123, "123" ),
+ new TestCaseData( @"C:\folder2\file.tmp", "\"C:\\folder2\\file.tmp\"" ),
+ new TestCaseData( @"C:\folder1\.\folder2\..\file.temp", "\"C:\\folder1\\.\\folder2\\..\\file.temp\"" )
+ };
+
+ [Test]
+ public void RootPathEquality()
+ {
+ Assert.That("c:\\", Is.SamePath("C:\\junk\\..\\").IgnoreCase);
+ }
+ }
+
+ [TestFixture]
+ public class SamePathTest_Linux : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SamePathConstraint(@"/folder1/folder2").RespectCase;
+ expectedDescription = @"Path matching ""/folder1/folder2""";
+ stringRepresentation = @"<samepath ""/folder1/folder2"" respectcase>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ @"/folder1/folder2",
+ @"/folder1/folder2/",
+ @"/folder1/./folder2",
+ @"/folder1/./folder2/",
+ @"/folder1/junk/../folder2",
+ @"/folder1/junk/../folder2/",
+ @"/folder1/./junk/../folder2",
+ @"/folder1/./junk/../folder2/",
+ @"\folder1\folder2",
+ @"\folder1\folder2\"
+ };
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData( 123, "123" ),
+ new TestCaseData("folder1/folder2", "\"folder1/folder2\""),
+ new TestCaseData("//folder1/folder2", "\"//folder1/folder2\""),
+ new TestCaseData( @"/junk/folder2", "\"/junk/folder2\"" ),
+ new TestCaseData( @"/folder1/./junk/../file.temp", "\"/folder1/./junk/../file.temp\"" ),
+ new TestCaseData( @"/Folder1/FOLDER2", "\"/Folder1/FOLDER2\"" ),
+ new TestCaseData( @"/FOLDER1/./junk/../FOLDER2", "\"/FOLDER1/./junk/../FOLDER2\"" )
+ };
+
+ [Test]
+ public void RootPathEquality()
+ {
+ Assert.That("/", Is.SamePath("/junk/../"));
+ }
+ }
+
+ [TestFixture]
+ public class SubPathTest_Windows : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SubPathConstraint(@"C:\folder1\folder2").IgnoreCase;
+ expectedDescription = @"Path under ""C:\folder1\folder2""";
+ stringRepresentation = @"<subpath ""C:\folder1\folder2"" ignorecase>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ @"C:\folder1\folder2\folder3",
+ @"C:\folder1\.\folder2\folder3",
+ @"C:\folder1\junk\..\folder2\folder3",
+ @"C:\FOLDER1\.\junk\..\Folder2\temp\..\Folder3",
+ @"C:/folder1/folder2/folder3",
+ };
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData(123, "123"),
+ new TestCaseData(@"C:\folder1\folder3", "\"C:\\folder1\\folder3\""),
+ new TestCaseData(@"C:\folder1\.\folder2\..\file.temp", "\"C:\\folder1\\.\\folder2\\..\\file.temp\""),
+ new TestCaseData(@"C:\folder1\folder2", "\"C:\\folder1\\folder2\""),
+ new TestCaseData(@"C:\Folder1\Folder2", "\"C:\\Folder1\\Folder2\""),
+ new TestCaseData(@"C:\folder1\.\folder2", "\"C:\\folder1\\.\\folder2\""),
+ new TestCaseData(@"C:\folder1\junk\..\folder2", "\"C:\\folder1\\junk\\..\\folder2\""),
+ new TestCaseData(@"C:\FOLDER1\.\junk\..\Folder2", "\"C:\\FOLDER1\\.\\junk\\..\\Folder2\""),
+ new TestCaseData(@"C:/folder1/folder2", "\"C:/folder1/folder2\"")
+ };
+
+ [Test]
+ public void SubPathOfRoot()
+ {
+ Assert.That("C:\\junk\\file.temp", new SubPathConstraint("C:\\"));
+ }
+ }
+
+ [TestFixture]
+ public class SubPathTest_Linux : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SubPathConstraint(@"/folder1/folder2").RespectCase;
+ expectedDescription = @"Path under ""/folder1/folder2""";
+ stringRepresentation = @"<subpath ""/folder1/folder2"" respectcase>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ @"/folder1/folder2/folder3",
+ @"/folder1/./folder2/folder3",
+ @"/folder1/junk/../folder2/folder3",
+ @"\folder1\folder2\folder3",
+ };
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData(123, "123"),
+ new TestCaseData("/Folder1/Folder2", "\"/Folder1/Folder2\""),
+ new TestCaseData("/FOLDER1/./junk/../Folder2", "\"/FOLDER1/./junk/../Folder2\""),
+ new TestCaseData("/FOLDER1/./junk/../Folder2/temp/../Folder3", "\"/FOLDER1/./junk/../Folder2/temp/../Folder3\""),
+ new TestCaseData("/folder1/folder3", "\"/folder1/folder3\""),
+ new TestCaseData("/folder1/./folder2/../folder3", "\"/folder1/./folder2/../folder3\""),
+ new TestCaseData("/folder1", "\"/folder1\""),
+ new TestCaseData("/folder1/folder2", "\"/folder1/folder2\""),
+ new TestCaseData("/folder1/./folder2", "\"/folder1/./folder2\""),
+ new TestCaseData("/folder1/junk/../folder2", "\"/folder1/junk/../folder2\""),
+ new TestCaseData(@"\folder1\folder2", "\"\\folder1\\folder2\"")
+ };
+
+ [Test]
+ public void SubPathOfRoot()
+ {
+ Assert.That("/junk/file.temp", new SubPathConstraint("/"));
+ }
+ }
+
+ [TestFixture]
+ public class SamePathOrUnderTest_Windows : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SamePathOrUnderConstraint( @"C:\folder1\folder2" ).IgnoreCase;
+ expectedDescription = @"Path under or matching ""C:\folder1\folder2""";
+ stringRepresentation = @"<samepathorunder ""C:\folder1\folder2"" ignorecase>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ @"C:\folder1\folder2",
+ @"C:\Folder1\Folder2",
+ @"C:\folder1\.\folder2",
+ @"C:\folder1\junk\..\folder2",
+ @"C:\FOLDER1\.\junk\..\Folder2",
+ @"C:/folder1/folder2",
+ @"C:\folder1\folder2\folder3",
+ @"C:\folder1\.\folder2\folder3",
+ @"C:\folder1\junk\..\folder2\folder3",
+ @"C:\FOLDER1\.\junk\..\Folder2\temp\..\Folder3",
+ @"C:/folder1/folder2/folder3",
+ };
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData( 123, "123" ),
+ new TestCaseData( @"C:\folder1\folder3", "\"C:\\folder1\\folder3\"" ),
+ new TestCaseData( @"C:\folder1\.\folder2\..\file.temp", "\"C:\\folder1\\.\\folder2\\..\\file.temp\"" )
+ };
+ }
+
+ [TestFixture]
+ public class SamePathOrUnderTest_Linux : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SamePathOrUnderConstraint( @"/folder1/folder2" ).RespectCase;
+ expectedDescription = @"Path under or matching ""/folder1/folder2""";
+ stringRepresentation = @"<samepathorunder ""/folder1/folder2"" respectcase>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ @"/folder1/folder2",
+ @"/folder1/./folder2",
+ @"/folder1/junk/../folder2",
+ @"\folder1\folder2",
+ @"/folder1/folder2/folder3",
+ @"/folder1/./folder2/folder3",
+ @"/folder1/junk/../folder2/folder3",
+ @"\folder1\folder2\folder3",
+ };
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData( 123, "123" ),
+ new TestCaseData( "/Folder1/Folder2", "\"/Folder1/Folder2\"" ),
+ new TestCaseData( "/FOLDER1/./junk/../Folder2", "\"/FOLDER1/./junk/../Folder2\"" ),
+ new TestCaseData( "/FOLDER1/./junk/../Folder2/temp/../Folder3", "\"/FOLDER1/./junk/../Folder2/temp/../Folder3\"" ),
+ new TestCaseData( "/folder1/folder3", "\"/folder1/folder3\"" ),
+ new TestCaseData( "/folder1/./folder2/../folder3", "\"/folder1/./folder2/../folder3\"" ),
+ new TestCaseData( "/folder1", "\"/folder1\"" )
+ };
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/PredicateConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/PredicateConstraintTests.cs
new file mode 100755
index 0000000..aa36533
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/PredicateConstraintTests.cs
@@ -0,0 +1,58 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF_2_0
+using System;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class PredicateConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new PredicateConstraint<int>((x) => x < 5 );
+ expectedDescription = @"value matching lambda expression";
+ stringRepresentation = "<predicate>";
+ }
+
+ internal object[] SuccessData = new object[]
+ {
+ 0,
+ -5
+ };
+
+ internal object[] FailureData = new object[]
+ {
+ new TestCaseData(123, "123")
+ };
+
+ [Test]
+ public void CanUseConstraintExpressionSyntax()
+ {
+ Assert.That(123, Is.TypeOf<int>().And.Matches<int>((int x) => x > 100));
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/PropertyTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/PropertyTests.cs
new file mode 100755
index 0000000..e4b2d8d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/PropertyTests.cs
@@ -0,0 +1,104 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+// TODO: Remove NUNITLITE conditional code
+using System;
+using System.Collections;
+using NUnit.Framework.Internal;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ public class PropertyExistsTest
+#if NUNITLITE
+ : ConstraintTestBase
+#else
+ : ConstraintTestBaseWithExceptionTests
+#endif
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new PropertyExistsConstraint("Length");
+ expectedDescription = "property Length";
+ stringRepresentation = "<propertyexists Length>";
+ }
+
+ internal static object[] SuccessData = new object[] { new int[0], "hello", typeof(Array) };
+
+ internal static object[] FailureData = new object[] {
+ new TestCaseData( 42, "<System.Int32>" ),
+ new TestCaseData( new SimpleObjectCollection(), "<NUnit.TestUtilities.SimpleObjectCollection>" ),
+ new TestCaseData( typeof(Int32), "<System.Int32>" ) };
+#if !NUNITLITE
+ internal static object[] InvalidData = new TestCaseData[]
+ {
+ new TestCaseData(null).Throws(typeof(ArgumentNullException))
+ };
+#endif
+ }
+
+ public class PropertyTest
+#if NUNITLITE
+ : ConstraintTestBase
+#else
+ : ConstraintTestBaseWithExceptionTests
+#endif
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new PropertyConstraint("Length", new EqualConstraint(5));
+ expectedDescription = "property Length equal to 5";
+ stringRepresentation = "<property Length <equal 5>>";
+ }
+
+ internal static object[] SuccessData = new object[] { new int[5], "hello" };
+
+ internal static object[] FailureData = new object[] {
+ new TestCaseData( new int[3], "3" ),
+ new TestCaseData( "goodbye", "7" ) };
+#if !NUNITLITE
+ internal static object[] InvalidData = new object[]
+ {
+ new TestCaseData(null).Throws(typeof(ArgumentNullException)),
+ new TestCaseData(42).Throws(typeof(ArgumentException)),
+ new TestCaseData(new System.Collections.ArrayList()).Throws(typeof(ArgumentException))
+ };
+#endif
+
+ [Test]
+ public void PropertyEqualToValueWithTolerance()
+ {
+ Constraint c = new EqualConstraint(105m).Within(0.1m);
+ TextMessageWriter w = new TextMessageWriter();
+ c.WriteDescriptionTo(w);
+ Assert.That(w.ToString(), Is.EqualTo("105m +/- 0.1m"));
+
+ c = new PropertyConstraint("D", new EqualConstraint(105m).Within(0.1m));
+ w = new TextMessageWriter();
+ c.WriteDescriptionTo(w);
+ Assert.That(w.ToString(), Is.EqualTo("property D equal to 105m +/- 0.1m"));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/RangeConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/RangeConstraintTests.cs
new file mode 100755
index 0000000..eab4e4e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/RangeConstraintTests.cs
@@ -0,0 +1,117 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class RangeConstraintTest : ConstraintTestBaseWithArgumentException
+ {
+#if CLR_2_0 || CLR_4_0
+ RangeConstraint<int> rangeConstraint;
+#else
+ RangeConstraint rangeConstraint;
+#endif
+
+ [SetUp]
+ public void SetUp()
+ {
+#if CLR_2_0 || CLR_4_0
+ theConstraint = rangeConstraint = new RangeConstraint<int>(5, 42);
+#else
+ theConstraint = rangeConstraint = new RangeConstraint(5, 42);
+#endif
+ expectedDescription = "in range (5,42)";
+ stringRepresentation = "<range 5 42>";
+ }
+
+ internal object[] SuccessData = new object[] { 5, 23, 42 };
+
+ internal object[] FailureData = new object[] { new object[] { 4, "4" }, new object[] { 43, "43" } };
+
+ internal object[] InvalidData = new object[] { null, "xxx" };
+
+ [Test]
+ public void UsesProvidedIComparer()
+ {
+ SimpleObjectComparer comparer = new SimpleObjectComparer();
+ Assert.That(rangeConstraint.Using(comparer).Matches(19));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void UsesProvidedComparerOfT()
+ {
+ MyComparer<int> comparer = new MyComparer<int>();
+ Assert.That(rangeConstraint.Using(comparer).Matches(19));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparer<T> : IComparer<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+ [Test]
+ public void UsesProvidedComparisonOfT()
+ {
+ MyComparison<int> comparer = new MyComparison<int>();
+ Assert.That(rangeConstraint.Using(new Comparison<int>(comparer.Compare)).Matches(19));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ class MyComparison<T>
+ {
+ public bool Called;
+
+ public int Compare(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y);
+ }
+ }
+
+#if !NETCF_2_0
+ [Test]
+ public void UsesProvidedLambda()
+ {
+ Comparison<int> comparer = (x, y) => x.CompareTo(y);
+ Assert.That(rangeConstraint.Using(comparer).Matches(19));
+ }
+#endif
+#endif
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/RangeTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/RangeTests.cs
new file mode 100755
index 0000000..15b6884
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/RangeTests.cs
@@ -0,0 +1,79 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class RangeTests
+ {
+ [Test]
+ public void InRangeSucceeds()
+ {
+ Assert.That( 7, Is.InRange(5, 10) );
+ Assert.That(0.23, Is.InRange(-1.0, 1.0));
+ Assert.That(DateTime.Parse("12-December-2008"),
+ Is.InRange(DateTime.Parse("1-October-2008"), DateTime.Parse("31-December-2008")));
+ }
+
+ [Test]
+ public void InRangeFails()
+ {
+ string expectedMessage = string.Format(" Expected: in range (5,10){0} But was: 12{0}",
+ Env.NewLine);
+
+ Assert.That(
+ new TestDelegate( FailingInRangeMethod ),
+ Throws.TypeOf(typeof(AssertionException)).With.Message.EqualTo(expectedMessage));
+ }
+
+ private void FailingInRangeMethod()
+ {
+ Assert.That(12, Is.InRange(5, 10));
+ }
+
+ [Test]
+ public void NotInRangeSucceeds()
+ {
+ Assert.That(12, Is.Not.InRange(5, 10));
+ Assert.That(2.57, Is.Not.InRange(-1.0, 1.0));
+ }
+
+ [Test]
+ public void NotInRangeFails()
+ {
+ string expectedMessage = string.Format(" Expected: not in range (5,10){0} But was: 7{0}",
+ Env.NewLine);
+
+ Assert.That(
+ new TestDelegate(FailingNotInRangeMethod),
+ Throws.TypeOf(typeof(AssertionException)).With.Message.EqualTo(expectedMessage));
+ }
+
+ private void FailingNotInRangeMethod()
+ {
+ Assert.That(7, Is.Not.InRange(5, 10));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ReusableConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/ReusableConstraintTests.cs
new file mode 100755
index 0000000..209a840
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ReusableConstraintTests.cs
@@ -0,0 +1,45 @@
+// ****************************************************************
+// Copyright 2012, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ [TestFixture]
+ public class ReusableConstraintTests
+ {
+ [Datapoints]
+ internal static readonly ReusableConstraint[] constraints = new ReusableConstraint[] {
+ Is.Not.Empty,
+ Is.Not.Null,
+ Has.Length.GreaterThan(3),
+ Has.Property("Length").EqualTo(4).And.StartsWith("te")
+ };
+
+ [Theory]
+ public void CanReuseReusableConstraintMultipleTimes(ReusableConstraint c)
+ {
+ string s = "test";
+
+ Assume.That(s, c);
+
+ Assert.That(s, c, "Should pass first time");
+ Assert.That(s, c, "Should pass second time");
+ Assert.That(s, c, "Should pass third time");
+ }
+
+ [Test]
+ public void CanCreateReusableConstraintByImplicitConversion()
+ {
+ ReusableConstraint c = Is.Not.Null;
+
+ string s = "test";
+ Assert.That(s, c, "Should pass first time");
+ Assert.That(s, c, "Should pass second time");
+ Assert.That(s, c, "Should pass third time");
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/SameAsTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/SameAsTest.cs
new file mode 100755
index 0000000..8d41d94
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/SameAsTest.cs
@@ -0,0 +1,47 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class SameAsTest : ConstraintTestBase
+ {
+ private static readonly object obj1 = new object();
+ private static readonly object obj2 = new object();
+
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SameAsConstraint(obj1);
+ expectedDescription = "same as <System.Object>";
+ stringRepresentation = "<sameas System.Object>";
+ }
+
+ internal static object[] SuccessData = new object[] { obj1 };
+
+ internal static object[] FailureData = new object[] {
+ new TestCaseData( obj2, "<System.Object>" ),
+ new TestCaseData( 3, "3" ),
+ new TestCaseData( "Hello", "\"Hello\"" ) };
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/StartsWithConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/StartsWithConstraintTests.cs
new file mode 100755
index 0000000..566df12
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/StartsWithConstraintTests.cs
@@ -0,0 +1,72 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class StartsWithConstraintTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new StartsWithConstraint("hello");
+ expectedDescription = "String starting with \"hello\"";
+ stringRepresentation = "<startswith \"hello\">";
+ }
+
+ internal object[] SuccessData = new object[] { "hello", "hello there" };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( "goodbye", "\"goodbye\"" ),
+ new TestCaseData( "HELLO THERE", "\"HELLO THERE\"" ),
+ new TestCaseData( "I said hello", "\"I said hello\"" ),
+ new TestCaseData( "say hello to Fred", "\"say hello to Fred\"" ),
+ new TestCaseData( string.Empty, "<string.Empty>" ),
+ new TestCaseData( null , "null" ) };
+ }
+
+ [TestFixture]
+ public class StartsWithConstraintTestsIgnoringCase : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new StartsWithConstraint("hello").IgnoreCase;
+ expectedDescription = "String starting with \"hello\", ignoring case";
+ stringRepresentation = "<startswith \"hello\">";
+ }
+
+ internal object[] SuccessData = new object[] { "Hello", "HELLO there" };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( "goodbye", "\"goodbye\"" ),
+ new TestCaseData( "What the hell?", "\"What the hell?\"" ),
+ new TestCaseData( "I said hello", "\"I said hello\"" ),
+ new TestCaseData( "say hello to Fred", "\"say hello to Fred\"" ),
+ new TestCaseData( string.Empty, "<string.Empty>" ),
+ new TestCaseData( null , "null" ) };
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/SubstringConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/SubstringConstraintTests.cs
new file mode 100755
index 0000000..f61b856
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/SubstringConstraintTests.cs
@@ -0,0 +1,96 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class SubstringConstraintTests : ConstraintTestBase, IExpectException
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SubstringConstraint("hello");
+ expectedDescription = "String containing \"hello\"";
+ stringRepresentation = "<substring \"hello\">";
+ }
+
+ internal object[] SuccessData = new object[] { "hello", "hello there", "I said hello", "say hello to fred" };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( "goodbye", "\"goodbye\"" ),
+ new TestCaseData( "HELLO", "\"HELLO\"" ),
+ new TestCaseData( "What the hell?", "\"What the hell?\"" ),
+ new TestCaseData( string.Empty, "<string.Empty>" ),
+ new TestCaseData( null, "null" ) };
+
+ public void HandleException(Exception ex)
+ {
+ string NL = Env.NewLine;
+
+ Assert.That(ex.Message, new EqualConstraint(
+ TextMessageWriter.Pfx_Expected + "String containing \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...\"" + NL +
+ TextMessageWriter.Pfx_Actual + "\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...\"" + NL));
+ }
+ }
+
+ [TestFixture]
+ public class SubstringConstraintTestsIgnoringCase : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new SubstringConstraint("hello").IgnoreCase;
+ expectedDescription = "String containing \"hello\", ignoring case";
+ stringRepresentation = "<substring \"hello\">";
+ }
+
+ internal object[] SuccessData = new object[] { "Hello", "HellO there", "I said HELLO", "say hello to fred" };
+
+ internal object[] FailureData = new object[] {
+ new TestCaseData( "goodbye", "\"goodbye\"" ),
+ new TestCaseData( "What the hell?", "\"What the hell?\"" ),
+ new TestCaseData( string.Empty, "<string.Empty>" ),
+ new TestCaseData( null, "null" ) };
+ }
+
+ //[TestFixture]
+ //public class EqualIgnoringCaseTest : ConstraintTest
+ //{
+ // [SetUp]
+ // public void SetUp()
+ // {
+ // Matcher = new EqualConstraint("Hello World!").IgnoreCase;
+ // Description = "\"Hello World!\", ignoring case";
+ // }
+
+ // internal object[] SuccessData = new object[] { "hello world!", "Hello World!", "HELLO world!" };
+
+ // internal object[] FailureData = new object[] { "goodbye", "Hello Friends!", string.Empty, null };
+
+
+ // internal string[] ActualValues = new string[] { "\"goodbye\"", "\"Hello Friends!\"", "<string.Empty>", "null" };
+ //}
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/TestDelegates.cs b/NUnitLite-0.9.0/src/tests/Constraints/TestDelegates.cs
new file mode 100755
index 0000000..d1d45eb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/TestDelegates.cs
@@ -0,0 +1,35 @@
+// ****************************************************************
+// Copyright 2008, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnitLite.Tests
+{
+ public class TestDelegates
+ {
+ public static void ThrowsArgumentException()
+ {
+ throw new ArgumentException("myMessage", "myParam");
+ }
+
+ public static void ThrowsSystemException()
+ {
+ throw new Exception();
+ }
+
+ public static void ThrowsNothing()
+ {
+ }
+
+ public static void ThrowsDerivedException()
+ {
+ throw new DerivedException();
+ }
+
+ public class DerivedException : Exception
+ {
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ThrowsConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/ThrowsConstraintTests.cs
new file mode 100755
index 0000000..472a908
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ThrowsConstraintTests.cs
@@ -0,0 +1,107 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class ThrowsConstraintTest_ExactType : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new ThrowsConstraint(
+ new ExactTypeConstraint(typeof(ArgumentException)));
+ expectedDescription = "<System.ArgumentException>";
+ stringRepresentation = "<throws <typeof System.ArgumentException>>";
+ }
+
+ internal static object[] SuccessData = new object[]
+ {
+ new TestDelegate( TestDelegates.ThrowsArgumentException )
+ };
+
+ internal static object[] FailureData = new object[]
+ {
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsNothing ), "no exception thrown" ),
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsSystemException ), "<System.Exception>" )
+ };
+ }
+
+ [TestFixture]
+ public class ThrowsConstraintTest_InstanceOfType : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new ThrowsConstraint(
+ new InstanceOfTypeConstraint(typeof(TestDelegates.CustomException)));
+ expectedDescription = "instance of <NUnit.TestUtilities.TestDelegates+CustomException>";
+ stringRepresentation = "<throws <instanceof NUnit.TestUtilities.TestDelegates+CustomException>>";
+ }
+
+ internal static object[] SuccessData = new object[]
+ {
+ new TestDelegate( TestDelegates.ThrowsCustomException ),
+ new TestDelegate( TestDelegates.ThrowsDerivedCustomException )
+ };
+
+ internal static object[] FailureData = new object[]
+ {
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsArgumentException ), "<System.ArgumentException>" ),
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsNothing ), "no exception thrown" ),
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsSystemException ), "<System.Exception>" )
+ };
+ }
+
+// TODO: Find a different example for use with NETCF - ArgumentException does not have a ParamName member
+#if !NETCF && !SILVERLIGHT
+ public class ThrowsConstraintTest_WithConstraint : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new ThrowsConstraint(
+ new AndConstraint(
+ new ExactTypeConstraint(typeof(ArgumentException)),
+ new PropertyConstraint("ParamName", new EqualConstraint("myParam"))));
+ expectedDescription = @"<System.ArgumentException> and property ParamName equal to ""myParam""";
+ stringRepresentation = @"<throws <and <typeof System.ArgumentException> <property ParamName <equal ""myParam"">>>>";
+ }
+
+ internal static object[] SuccessData = new object[]
+ {
+ new TestDelegate( TestDelegates.ThrowsArgumentException )
+ };
+
+ internal static object[] FailureData = new object[]
+ {
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsCustomException ), "<NUnit.TestUtilities.TestDelegates+CustomException>" ),
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsNothing ), "no exception thrown" ),
+ new TestCaseData( new TestDelegate( TestDelegates.ThrowsSystemException ), "<System.Exception>" )
+ };
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/ToStringTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/ToStringTests.cs
new file mode 100755
index 0000000..efdec05
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/ToStringTests.cs
@@ -0,0 +1,69 @@
+// ****************************************************************
+// Copyright 2010, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+ public class ToStringTests
+ {
+ [Test]
+ public void CanDisplaySimpleConstraints_Unresolved()
+ {
+ Assert.That(Is.EqualTo(5).ToString(), Is.EqualTo("<equal 5>"));
+ Assert.That(Has.Property("X").ToString(), Is.EqualTo("<propertyexists X>"));
+ Assert.That(Has.Attribute(typeof(TestAttribute)).ToString(),
+ Is.EqualTo("<attributeexists NUnit.Framework.TestAttribute>"));
+ }
+
+ [Test]
+ public void CanDisplaySimpleConstraints_Resolved()
+ {
+ IResolveConstraint constraint = Is.EqualTo(5);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<equal 5>"));
+ constraint = Has.Property("X");
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<propertyexists X>"));
+ constraint = Has.Attribute(typeof(TestAttribute)).With.Property("Description").EqualTo("smoke");
+ Assert.That(constraint.Resolve().ToString(),
+ Is.EqualTo("<attribute NUnit.Framework.TestAttribute <property Description <equal \"smoke\">>>"));
+ }
+
+ [Test]
+ public void DisplayPrefixConstraints_Unresolved()
+ {
+ Assert.That(Is.Not.EqualTo(5).ToString(), Is.EqualTo("<unresolved <equal 5>>"));
+ Assert.That(Is.Not.All.EqualTo(5).ToString(), Is.EqualTo("<unresolved <equal 5>>"));
+ Assert.That(Has.Property("X").EqualTo(5).ToString(), Is.EqualTo("<unresolved <equal 5>>"));
+ Assert.That(Has.Attribute(typeof(TestAttribute)).With.Property("Description").EqualTo("smoke").ToString(),
+ Is.EqualTo("<unresolved <equal \"smoke\">>"));
+ }
+
+ [Test]
+ public void CanDisplayPrefixConstraints_Resolved()
+ {
+ IResolveConstraint constraint = Is.Not.EqualTo(5);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<not <equal 5>>"));
+ constraint = Is.Not.All.EqualTo(5);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<not <all <equal 5>>>"));
+ constraint = Has.Property("X").EqualTo(5);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<property X <equal 5>>"));
+ }
+
+ [Test]
+ public void DisplayBinaryConstraints_Resolved()
+ {
+ IResolveConstraint constraint = Is.GreaterThan(0).And.LessThan(100);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<and <greaterthan 0> <lessthan 100>>"));
+ }
+
+ [Test]
+ public void DisplayBinaryConstraints_UnResolved()
+ {
+ IResolveConstraint constraint = Is.GreaterThan(0).And.LessThan(100);
+ Assert.That(constraint.ToString(), Is.EqualTo("<unresolved <lessthan 100>>"));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/UniqueItemsConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Constraints/UniqueItemsConstraintTests.cs
new file mode 100755
index 0000000..41bcc8c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/UniqueItemsConstraintTests.cs
@@ -0,0 +1,42 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Internal;
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class UniqueItemsTests : ConstraintTestBase
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new UniqueItemsConstraint();
+ stringRepresentation = "<uniqueitems>";
+ expectedDescription = "all items unique";
+ }
+
+ internal object[] SuccessData = new object[] { new int[] { 1, 3, 17, -2, 34 }, new object[0] };
+ internal object[] FailureData = new object[] { new object[] { new int[] { 1, 3, 17, 3, 34 }, "< 1, 3, 17, 3, 34 >" } };
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Constraints/XmlSerializableTest.cs b/NUnitLite-0.9.0/src/tests/Constraints/XmlSerializableTest.cs
new file mode 100755
index 0000000..cfe4c14
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Constraints/XmlSerializableTest.cs
@@ -0,0 +1,65 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !SILVERLIGHT
+
+using System;
+using System.Collections;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Constraints.Tests
+{
+ [TestFixture]
+ public class XmlSerializableTest : ConstraintTestBaseWithArgumentException
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ theConstraint = new XmlSerializableConstraint();
+ expectedDescription = "xml serializable";
+ stringRepresentation = "<xmlserializable>";
+ }
+
+ internal object[] SuccessData = new object[] { 1, "a", new ArrayList() };
+
+ internal object[] FailureData = new object[] {
+#if CLR_2_0 || CLR_4_0
+ new TestCaseData( new Dictionary<string, string>(), "<Dictionary`2>" ),
+#endif
+ new TestCaseData( new InternalClass(), "<InternalClass>" ),
+ new TestCaseData( new InternalWithSerializableAttributeClass(), "<InternalWithSerializableAttributeClass>" )
+ };
+
+ internal object[] InvalidData = new object[] { null };
+ }
+
+ internal class InternalClass
+ { }
+
+ [Serializable]
+ internal class InternalWithSerializableAttributeClass
+ { }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Framework/StackFilterTest.cs b/NUnitLite-0.9.0/src/tests/Framework/StackFilterTest.cs
new file mode 100755
index 0000000..1fc6381
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Framework/StackFilterTest.cs
@@ -0,0 +1,80 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Tests
+{
+ [TestFixture]
+ class StackFilterTest
+ {
+ private static readonly string NL = NUnit.Env.NewLine;
+
+ private static readonly string rawTrace1 =
+ @" at NUnit.Framework.Assert.Fail(String message) in D:\Dev\NUnitLite\NUnitLite\Framework\Assert.cs:line 56" + NL +
+ @" at NUnit.Framework.Assert.That(String label, Object actual, Matcher expectation, String message) in D:\Dev\NUnitLite\NUnitLite\Framework\Assert.cs:line 50" + NL +
+ @" at NUnit.Framework.Assert.That(Object actual, Matcher expectation) in D:\Dev\NUnitLite\NUnitLite\Framework\Assert.cs:line 19" + NL +
+ @" at NUnit.Tests.GreaterThanMatcherTest.MatchesGoodValue() in D:\Dev\NUnitLite\NUnitLiteTests\GreaterThanMatcherTest.cs:line 12" + NL;
+
+ private static readonly string filteredTrace1 =
+ @" at NUnit.Tests.GreaterThanMatcherTest.MatchesGoodValue() in D:\Dev\NUnitLite\NUnitLiteTests\GreaterThanMatcherTest.cs:line 12" + NL;
+
+ private static readonly string rawTrace2 =
+ @" at NUnit.Framework.Assert.Fail(String message, Object[] args)" + NL +
+ @" at MyNamespace.MyAppsTests.AssertFailTest()" + NL +
+ @" at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)" + NL +
+ @" at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean verifyAccess, StackCrawlMark& stackMark)" + NL +
+ @" at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)" + NL +
+ @" at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)" + NL +
+ @" at NUnitLite.ProxyTestCase.InvokeMethod(MethodInfo method, Object[] args)" + NL +
+ @" at NUnit.Framework.TestCase.RunTest()" + NL +
+ @" at NUnit.Framework.TestCase.RunBare()" + NL +
+ @" at NUnit.Framework.TestCase.Run(TestResult result, TestListener listener)" + NL +
+ @" at NUnit.Framework.TestCase.Run(TestListener listener)" + NL +
+ @" at NUnit.Framework.TestSuite.Run(TestListener listener)" + NL +
+ @" at NUnit.Framework.TestSuite.Run(TestListener listener)" + NL +
+ @" at NUnitLite.Runner.TestRunner.Run(ITest test)" + NL +
+ @" at NUnitLite.Runner.ConsoleUI.Run(ITest test)" + NL +
+ @" at NUnitLite.Runner.TestRunner.Run(Assembly assembly)" + NL +
+ @" at NUnitLite.Runner.ConsoleUI.Run()" + NL +
+ @" at NUnitLite.Runner.ConsoleUI.Main(String[] args)" + NL +
+ @" at OpenNETCF.Linq.Demo.Program.Main(String[] args)" + NL;
+
+ private static readonly string filteredTrace2 =
+ @" at MyNamespace.MyAppsTests.AssertFailTest()" + NL +
+ @" at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)" + NL +
+ @" at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean verifyAccess, StackCrawlMark& stackMark)" + NL +
+ @" at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)" + NL +
+ @" at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)" + NL +
+ @" at NUnitLite.ProxyTestCase.InvokeMethod(MethodInfo method, Object[] args)" + NL +
+ @" at NUnit.Framework.TestCase.RunTest()" + NL +
+ @" at NUnit.Framework.TestCase.RunBare()" + NL +
+ @" at NUnit.Framework.TestCase.Run(TestResult result, TestListener listener)" + NL +
+ @" at NUnit.Framework.TestCase.Run(TestListener listener)" + NL +
+ @" at NUnit.Framework.TestSuite.Run(TestListener listener)" + NL +
+ @" at NUnit.Framework.TestSuite.Run(TestListener listener)" + NL +
+ @" at NUnitLite.Runner.TestRunner.Run(ITest test)" + NL +
+ @" at NUnitLite.Runner.ConsoleUI.Run(ITest test)" + NL +
+ @" at NUnitLite.Runner.TestRunner.Run(Assembly assembly)" + NL +
+ @" at NUnitLite.Runner.ConsoleUI.Run()" + NL +
+ @" at NUnitLite.Runner.ConsoleUI.Main(String[] args)" + NL +
+ @" at OpenNETCF.Linq.Demo.Program.Main(String[] args)" + NL;
+
+ [Test]
+ public void FilterFailureTrace1()
+ {
+ Assert.That(StackFilter.Filter(rawTrace1), Is.EqualTo(filteredTrace1));
+ }
+
+ [Test]
+ public void FilterFailureTrace2()
+ {
+ Assert.That(StackFilter.Filter(rawTrace2), Is.EqualTo(filteredTrace2));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Framework/SyntaxTests.cs b/NUnitLite-0.9.0/src/tests/Framework/SyntaxTests.cs
new file mode 100755
index 0000000..9d845c4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Framework/SyntaxTests.cs
@@ -0,0 +1,196 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Constraints;
+
+namespace NUnitLite.Tests
+{
+ [TestFixture]
+ public class SyntaxTests
+ {
+ [Test]
+ public void NullTests()
+ {
+ object myObject = null;
+ Assert.That(myObject, Is.Null);
+ Assert.Null(null);
+ }
+
+ [Test]
+ public void NotNullTests()
+ {
+ Assert.That(42, Is.Not.Null);
+ Assert.NotNull(42);
+ }
+
+ [Test]
+ public void TrueTests()
+ {
+ Assert.That(true, Is.True);
+ Assert.True(true);
+ }
+
+ [Test]
+ public void FalseTests()
+ {
+ Assert.That(false, Is.False);
+ Assert.False(false);
+ }
+
+ [Test]
+ public void NaNTests()
+ {
+ Assert.That(double.NaN, Is.NaN);
+ Assert.That(float.NaN, Is.NaN);
+ }
+
+ [Test]
+ public void EmptyTests()
+ {
+ Assert.That("", Is.Empty);
+ Assert.That(new bool[0], Is.Empty);
+ Assert.That(new int[] { 1, 2, 3 }, Is.Not.Empty);
+ }
+
+ [Test]
+ public void TypeTests()
+ {
+ Assert.That("Hello", Is.TypeOf(typeof(string)));
+ Assert.That("Hello", Is.InstanceOf(typeof(string)));
+ Assert.That("Hello".GetType(), Is.EqualTo(typeof(string)));
+ Assert.That("Hello".GetType().FullName, Is.EqualTo("System.String"));
+ }
+
+ [Test]
+ public void StringTests()
+ {
+ string phrase = "Hello World!";
+ Assert.That(phrase, Is.Not.Empty);
+ Assert.That(phrase, Is.StringContaining("World"));
+ Assert.That(phrase, Is.StringStarting("Hello"));
+ Assert.That(phrase, Is.StringEnding("!"));
+ Assert.That(phrase, Is.EqualTo("hello world!").IgnoreCase);
+ Assert.That(new string[] { "Hello", "World" }, Is.EqualTo( new object[] { "HELLO", "WORLD" } ).IgnoreCase);
+ Assert.That("", Is.Empty);
+ }
+
+ [Test]
+ public void EqualToTests()
+ {
+ Assert.That(2 + 2, Is.EqualTo(4));
+ Assert.That(2 + 2 == 4);
+ Assert.That(new int[] { 1, 2, 3 }, Is.EqualTo(new double[] { 1.0, 2.0, 3.0 }));
+ }
+
+ [Test]
+ public void ComparisonTests()
+ {
+ Assert.That(7, Is.GreaterThan(3));
+ Assert.That(7, Is.GreaterThanOrEqualTo(3));
+ Assert.That(7, Is.AtLeast(3));
+ Assert.That(7, Is.GreaterThanOrEqualTo(7));
+ Assert.That(7, Is.AtLeast(7));
+
+ Assert.That(3, Is.LessThan(7));
+ Assert.That(3, Is.LessThanOrEqualTo(7));
+ Assert.That(3, Is.AtMost(7));
+ Assert.That(3, Is.LessThanOrEqualTo(3));
+ Assert.That(3, Is.AtMost(3));
+ }
+
+ [Test]
+ public void AllItemsTests()
+ {
+ object[] c = new object[] { 1, 2, 3, 4 };
+ Assert.That(c, Is.All.Not.Null);
+ Assert.That(c, Is.All.InstanceOf(typeof(int)));
+ }
+
+ [Test]
+ public void CollectionContainsTests()
+ {
+ Assert.That(new int[] { 1, 2, 3 }, Contains.Item(3));
+ Assert.That(new string[] { "a", "b", "c" }, Contains.Item("b"));
+ }
+
+ [Test]
+ public void CollectionEquivalenceTests()
+ {
+ int[] ints1to5 = new int[] { 1, 2, 3, 4, 5 };
+ Assert.That(new int[] { 2, 1, 4, 3, 5 }, Is.EquivalentTo(ints1to5));
+ Assert.That(new int[] { 2, 2, 4, 3, 5 }, Is.Not.EquivalentTo(ints1to5));
+ Assert.That(new int[] { 2, 4, 3, 5 }, Is.Not.EquivalentTo(ints1to5));
+ Assert.That(new int[] { 2, 2, 1, 1, 4, 3, 5 }, Is.Not.EquivalentTo(ints1to5));
+ Assert.That(new int[] { 1, 2, 2, 2, 5 }, Is.Not.EquivalentTo(ints1to5));
+ }
+
+ [Test]
+ public void SubsetTests()
+ {
+ int[] ints1to5 = new int[] { 1, 2, 3, 4, 5 };
+ Assert.That(new int[] { 1, 3, 5 }, Is.SubsetOf(ints1to5));
+ Assert.That(new int[] { 1, 2, 3, 4, 5 }, Is.SubsetOf(ints1to5));
+ Assert.That(new int[] { 2, 4, 6 }, Is.Not.SubsetOf(ints1to5));
+ }
+
+ [Test]
+ public void NotTests()
+ {
+ Assert.That(42, Is.Not.Null);
+ Assert.That(42, Is.Not.True);
+ Assert.That(42, Is.Not.False);
+ Assert.That(42, !Is.Null);
+ Assert.That(2.5, Is.Not.NaN);
+ Assert.That(2 + 2, Is.Not.EqualTo(3));
+ Assert.That(2 + 2, Is.Not.Not.EqualTo(4));
+ Assert.That(2 + 2, Is.Not.Not.Not.EqualTo(5));
+ }
+
+ [Test]
+ public void AndTests()
+ {
+ Assert.That(7, Is.GreaterThan(5) & Is.LessThan(10));
+ }
+
+ [Test]
+ public void OrTests()
+ {
+ Assert.That(3, Is.LessThan(5) | Is.GreaterThan(10));
+ }
+
+ [Test]
+ public void ComplexTests()
+ {
+ Assert.That(7, Is.Not.Null & Is.Not.LessThan(5) & Is.Not.GreaterThan(10));
+ Assert.That(7, !Is.Null & !Is.LessThan(5) & !Is.GreaterThan(10));
+// TODO: Remove #if when mono compiler can handle null
+#if MONO
+ Constraint x = null;
+ Assert.That(7, !x & !Is.LessThan(5) & !Is.GreaterThan(10));
+#else
+ Assert.That(7, !(Constraint)null & !Is.LessThan(5) & !Is.GreaterThan(10));
+#endif
+ }
+
+ // This method contains assertions that should not compile
+ // You can check by uncommenting it.
+ //public void WillNotCompile()
+ //{
+ // Assert.That(42, Is.Not);
+ // Assert.That(42, Is.All);
+ // Assert.That(42, Is.Null.Not);
+ // Assert.That(42, Is.Not.Null.GreaterThan(10));
+ // Assert.That(42, Is.GreaterThan(10).LessThan(99));
+
+ // object[] c = new object[0];
+ // Assert.That(c, Is.Null.All);
+ // Assert.That(c, Is.Not.All);
+ // Assert.That(c, Is.All.Not);
+ //}
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Framework/TestContextTests.cs b/NUnitLite-0.9.0/src/tests/Framework/TestContextTests.cs
new file mode 100755
index 0000000..64a8d8c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Framework/TestContextTests.cs
@@ -0,0 +1,103 @@
+// ****************************************************************
+// Copyright 2012, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org
+// ****************************************************************
+
+using System;
+using System.IO;
+using NUnit.Framework;
+using NUnit.TestData.TestContextData;
+using NUnit.TestUtilities;
+using System.Reflection;
+
+namespace NUnit.Framework.Tests
+{
+ [TestFixture]
+ public class TestContextTests
+ {
+ [Test]
+ public void TestCanAccessItsOwnName()
+ {
+ Assert.That(TestContext.CurrentContext.Test.Name, Is.EqualTo("TestCanAccessItsOwnName"));
+ }
+
+ [Test]
+ public void TestCanAccessItsOwnFullName()
+ {
+ Assert.That(TestContext.CurrentContext.Test.FullName,
+ Is.EqualTo("NUnit.Framework.Tests.TestContextTests.TestCanAccessItsOwnFullName"));
+ }
+
+ [Test]
+ [Property("Answer", 42)]
+ public void TestCanAccessItsOwnProperties()
+ {
+ Assert.That(TestContext.CurrentContext.Test.Properties.Get("Answer"), Is.EqualTo(42));
+ }
+
+#if !NETCF
+ [Test]
+ public void TestCanAccessTestDirectory()
+ {
+ string testDirectory = TestContext.CurrentContext.TestDirectory;
+ Assert.NotNull(testDirectory);
+ Assert.That(Directory.Exists(testDirectory), "Directory not found: {0}", testDirectory);
+ Assert.That(File.Exists(Path.Combine(testDirectory, "nunitlite.tests.exe")));
+ }
+#endif
+
+ [Test]
+ public void TestCanAccessWorkDirectory()
+ {
+ string workDirectory = TestContext.CurrentContext.WorkDirectory;
+ Assert.NotNull(workDirectory);
+ Assert.That(Directory.Exists(workDirectory), string.Format("Directory {0} does not exist", workDirectory));
+ }
+
+ [Test]
+ public void TestCanAccessTestState_PassingTest()
+ {
+ TestStateRecordingFixture fixture = new TestStateRecordingFixture();
+ TestBuilder.RunTestFixture(fixture);
+ Assert.That(fixture.stateList, Is.EqualTo("Inconclusive=>Inconclusive=>Passed"));
+ //Assert.That(fixture.statusList, Is.EqualTo("Inconclusive=>Inconclusive=>Passed"));
+ }
+
+ [Test]
+ public void TestCanAccessTestState_FailureInSetUp()
+ {
+ TestStateRecordingFixture fixture = new TestStateRecordingFixture();
+ fixture.setUpFailure = true;
+ TestBuilder.RunTestFixture(fixture);
+ Assert.That(fixture.stateList, Is.EqualTo("Inconclusive=>=>Failed"));
+ //Assert.That(fixture.statusList, Is.EqualTo("Inconclusive=>=>Failed"));
+ }
+
+ [Test]
+ public void TestCanAccessTestState_FailingTest()
+ {
+ TestStateRecordingFixture fixture = new TestStateRecordingFixture();
+ fixture.testFailure = true;
+ TestBuilder.RunTestFixture(fixture);
+ Assert.That(fixture.stateList, Is.EqualTo("Inconclusive=>Inconclusive=>Failed"));
+ //Assert.That(fixture.statusList, Is.EqualTo("Inconclusive=>Inconclusive=>Failed"));
+ }
+
+ [Test]
+ public void TestCanAccessTestState_IgnoredInSetUp()
+ {
+ TestStateRecordingFixture fixture = new TestStateRecordingFixture();
+ fixture.setUpIgnore = true;
+ TestBuilder.RunTestFixture(fixture);
+ Assert.That(fixture.stateList, Is.EqualTo("Inconclusive=>=>Skipped:Ignored"));
+ //Assert.That(fixture.statusList, Is.EqualTo("Inconclusive=>=>Skipped"));
+ }
+
+ //[Test, RequiresThread]
+ //public void CanAccessTestContextOnSeparateThread()
+ //{
+ // Assert.That(TestContext.CurrentContext.Test.Name, Is.EqualTo("CanAccessTestContextOnSeparateThread"));
+ //}
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Framework/TestResultTests.cs b/NUnitLite-0.9.0/src/tests/Framework/TestResultTests.cs
new file mode 100755
index 0000000..8de0089
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Framework/TestResultTests.cs
@@ -0,0 +1,83 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Tests
+{
+ [TestFixture]
+ public class TestResultTests
+ {
+ private static readonly string MESSAGE = "my message";
+ private static readonly string STACKTRACE = "stack trace";
+
+ private TestResult result;
+
+ [SetUp]
+ public void SetUp()
+ {
+ result = new TestCaseResult(null);
+ }
+
+ void VerifyResultState(ResultState expectedState, string message )
+ {
+ Assert.That( result.ResultState , Is.EqualTo( expectedState ) );
+ //if ( expectedState == ResultState.Error )
+ // Assert.That(result.Message, Is.EqualTo("System.Exception : " + message));
+ //else
+ Assert.That(result.Message, Is.EqualTo(message));
+ }
+
+ [Test]
+ public void DefaultStateIsInconclusive()
+ {
+ VerifyResultState(ResultState.Inconclusive, null);
+ }
+
+ [Test]
+ public void CanMarkAsSuccess()
+ {
+ result.SetResult(ResultState.Success);
+ VerifyResultState(ResultState.Success, null);
+ }
+
+ [Test]
+ public void CanMarkAsFailure()
+ {
+ result.SetResult(ResultState.Failure, MESSAGE, STACKTRACE);
+ VerifyResultState(ResultState.Failure, MESSAGE);
+ Assert.That( result.StackTrace, Is.EqualTo( STACKTRACE ) );
+ }
+
+ [Test]
+ public void CanMarkAsError()
+ {
+ Exception caught;
+ try
+ {
+ throw new Exception(MESSAGE);
+ }
+ catch(Exception ex)
+ {
+ caught = ex;
+ }
+
+ result.SetResult(ResultState.Error, caught.Message, caught.StackTrace);
+ VerifyResultState(ResultState.Error, MESSAGE);
+ Assert.That( result.StackTrace, Is.EqualTo( caught.StackTrace ) );
+ }
+
+ [Test]
+ public void CanMarkAsIgnored()
+ {
+ result.SetResult(ResultState.Ignored, MESSAGE);
+ VerifyResultState(ResultState.Ignored, MESSAGE);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/AssemblyHelperTests.cs b/NUnitLite-0.9.0/src/tests/Internal/AssemblyHelperTests.cs
new file mode 100755
index 0000000..01803fb
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/AssemblyHelperTests.cs
@@ -0,0 +1,84 @@
+// ***********************************************************************
+// Copyright (c) 2012 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if !NETCF
+using System;
+using System.IO;
+using System.Reflection;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class AssemblyHelperTests
+ {
+ [Test]
+ public void GetPathForAssembly()
+ {
+ string path = AssemblyHelper.GetAssemblyPath(this.GetType().Assembly);
+ Assert.That(Path.GetFileName(path), Is.EqualTo("nunitlite.tests.exe").IgnoreCase);
+ Assert.That(File.Exists(path));
+ }
+
+ //[Test]
+ //public void GetPathForType()
+ //{
+ // string path = AssemblyHelper.GetAssemblyPath(this.GetType());
+ // Assert.That(Path.GetFileName(path), Is.EqualTo("nunitlite.tests.exe").IgnoreCase);
+ // Assert.That(File.Exists(path));
+ //}
+
+ // The following tests are only useful to the extent that the test cases
+ // match what will actually be provided to the method in production.
+ // As currently used, NUnit's codebase can only use the file: schema,
+ // since we don't load assemblies from anything but files. The uri's
+ // provided can be absolute file paths or UNC paths.
+
+ // Local paths - Windows Drive
+ [TestCase(@"file:///C:/path/to/assembly.dll", @"C:\path\to\assembly.dll")]
+ [TestCase(@"file:///C:/my path/to my/assembly.dll", @"C:/my path/to my/assembly.dll")]
+ [TestCase(@"file:///C:/dev/C#/assembly.dll", @"C:\dev\C#\assembly.dll")]
+ [TestCase(@"file:///C:/dev/funnychars?:=/assembly.dll", @"C:\dev\funnychars?:=\assembly.dll")]
+ // Local paths - Linux or Windows absolute without a drive
+ [TestCase(@"file:///path/to/assembly.dll", @"/path/to/assembly.dll")]
+ [TestCase(@"file:///my path/to my/assembly.dll", @"/my path/to my/assembly.dll")]
+ [TestCase(@"file:///dev/C#/assembly.dll", @"/dev/C#/assembly.dll")]
+ [TestCase(@"file:///dev/funnychars?:=/assembly.dll", @"/dev/funnychars?:=/assembly.dll")]
+ // Windows drive specified as if it were a server - odd case, sometimes seen
+ [TestCase(@"file://C:/path/to/assembly.dll", @"C:\path\to\assembly.dll")]
+ [TestCase(@"file://C:/my path/to my/assembly.dll", @"C:\my path\to my\assembly.dll")]
+ [TestCase(@"file://C:/dev/C#/assembly.dll", @"C:\dev\C#\assembly.dll")]
+ [TestCase(@"file://C:/dev/funnychars?:=/assembly.dll", @"C:\dev\funnychars?:=\assembly.dll")]
+ // UNC format with server and path
+ [TestCase(@"file://server/path/to/assembly.dll", @"//server/path/to/assembly.dll")]
+ [TestCase(@"file://server/my path/to my/assembly.dll", @"//server/my path/to my/assembly.dll")]
+ [TestCase(@"file://server/dev/C#/assembly.dll", @"//server/dev/C#/assembly.dll")]
+ [TestCase(@"file://server/dev/funnychars?:=/assembly.dll", @"//server/dev/funnychars?:=/assembly.dll")]
+ //[TestCase(@"http://server/path/to/assembly.dll", "//server/path/to/assembly.dll")]
+ public void GetAssemblyPathFromCodeBase(string uri, string expectedPath)
+ {
+ string localPath = AssemblyHelper.GetAssemblyPathFromCodeBase(uri);
+ Assert.That(localPath, Is.SamePath(expectedPath));
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Internal/AsyncTestMethodTests.cs b/NUnitLite-0.9.0/src/tests/Internal/AsyncTestMethodTests.cs
new file mode 100755
index 0000000..08491de
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/AsyncTestMethodTests.cs
@@ -0,0 +1,113 @@
+#if NET_4_5
+using System.Collections;
+using System.Reflection;
+using System.Threading;
+using NUnit.Framework.Api;
+using NUnit.Framework.Builders;
+using NUnit.TestData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class NUnitAsyncTestMethodTests
+ {
+ private NUnitTestCaseBuilder _builder;
+ private object _testObject;
+
+ [SetUp]
+ public void Setup()
+ {
+ _builder = new NUnitTestCaseBuilder();
+ _testObject = new AsyncRealFixture();
+ }
+
+ public IEnumerable TestCases
+ {
+ get
+ {
+ yield return new object[] { Method("AsyncVoidSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncVoidFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("AsyncVoidError"), ResultState.Error, 0 };
+
+ yield return new object[] { Method("AsyncTaskSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncTaskFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("AsyncTaskError"), ResultState.Error, 0 };
+
+ yield return new object[] { Method("AsyncTaskResultSuccess"), ResultState.NotRunnable, 0 };
+ yield return new object[] { Method("AsyncTaskResultFailure"), ResultState.NotRunnable, 0 };
+ yield return new object[] { Method("AsyncTaskResultError"), ResultState.NotRunnable, 0 };
+
+ yield return new object[] { Method("AsyncTaskResultCheckSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncVoidTestCaseWithParametersSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncTaskResultCheckSuccessReturningNull"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncTaskResultCheckFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("AsyncTaskResultCheckError"), ResultState.Failure, 0 };
+
+ yield return new object[] { Method("AsyncVoidExpectedException"), ResultState.Success, 0 };
+ yield return new object[] { Method("AsyncTaskExpectedException"), ResultState.Success, 0 };
+ yield return new object[] { Method("AsyncTaskResultExpectedException"), ResultState.NotRunnable, 0 };
+
+ yield return new object[] { Method("NestedAsyncVoidSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("NestedAsyncVoidFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("NestedAsyncVoidError"), ResultState.Error, 0 };
+
+ yield return new object[] { Method("NestedAsyncTaskSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("NestedAsyncTaskFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("NestedAsyncTaskError"), ResultState.Error, 0 };
+
+ yield return new object[] { Method("AsyncVoidMultipleSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncVoidMultipleFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("AsyncVoidMultipleError"), ResultState.Error, 0 };
+
+ yield return new object[] { Method("AsyncTaskMultipleSuccess"), ResultState.Success, 1 };
+ yield return new object[] { Method("AsyncTaskMultipleFailure"), ResultState.Failure, 1 };
+ yield return new object[] { Method("AsyncTaskMultipleError"), ResultState.Error, 0 };
+
+ yield return new object[] { Method("VoidCheckTestContextAcrossTasks"), ResultState.Success, 2 };
+ yield return new object[] { Method("VoidCheckTestContextWithinTestBody"), ResultState.Success, 2 };
+ yield return new object[] { Method("TaskCheckTestContextAcrossTasks"), ResultState.Success, 2 };
+ yield return new object[] { Method("TaskCheckTestContextWithinTestBody"), ResultState.Success, 2 };
+
+ yield return new object[] { Method("VoidAsyncVoidChildCompletingEarlierThanTest"), ResultState.Success, 0 };
+ yield return new object[] { Method("VoidAsyncVoidChildThrowingImmediately"), ResultState.Success, 0 };
+ }
+ }
+
+ [Test]
+ [TestCaseSource("TestCases")]
+ public void RunTests(MethodInfo method, ResultState resultState, int assertionCount)
+ {
+ var test = _builder.BuildFrom(method);
+ var result = TestBuilder.RunTest(test, _testObject);
+
+ Assert.That(result.ResultState, Is.EqualTo(resultState), "Wrong result state");
+ Assert.That(result.AssertCount, Is.EqualTo(assertionCount), "Wrong assertion count");
+ }
+
+ [Test]
+ public void SynchronizationContextSwitching()
+ {
+ var context = new CustomSynchronizationContext();
+
+ SynchronizationContext.SetSynchronizationContext(context);
+
+ var test = _builder.BuildFrom(Method("AsyncVoidAssertSynchronizationContext"));
+ var result = TestBuilder.RunTest(test, _testObject);
+
+ Assert.AreSame(context, SynchronizationContext.Current);
+ Assert.That(result.ResultState, Is.EqualTo(ResultState.Success), "Wrong result state");
+ Assert.That(result.AssertCount, Is.EqualTo(0), "Wrong assertion count");
+ }
+
+ private static MethodInfo Method(string name)
+ {
+ return typeof (AsyncRealFixture).GetMethod(name);
+ }
+
+ public class CustomSynchronizationContext : SynchronizationContext
+ {
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Internal/CultureSettingAndDetectionTests.cs b/NUnitLite-0.9.0/src/tests/Internal/CultureSettingAndDetectionTests.cs
new file mode 100755
index 0000000..7b50729
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/CultureSettingAndDetectionTests.cs
@@ -0,0 +1,181 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+using System.Globalization;
+using NUnit.Framework.Api;
+using NUnit.TestData.CultureAttributeData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Summary description for CultureDetectionTests.
+ /// </summary>
+ [TestFixture]
+ public class CultureSettingAndDetectionTests
+ {
+ private NUnit.Framework.Internal.CultureDetector detector = new NUnit.Framework.Internal.CultureDetector("fr-FR");
+
+ private void ExpectMatch( string culture )
+ {
+ if ( !detector.IsCultureSupported( culture ) )
+ Assert.Fail( string.Format( "Failed to match \"{0}\"" , culture ) );
+ }
+
+ private void ExpectMatch( CultureAttribute attr )
+ {
+ if ( !detector.IsCultureSupported( attr ) )
+ Assert.Fail( string.Format( "Failed to match attribute with Include=\"{0}\",Exclude=\"{1}\"", attr.Include, attr.Exclude ) );
+ }
+
+ private void ExpectFailure( string culture )
+ {
+ if ( detector.IsCultureSupported( culture ) )
+ Assert.Fail( string.Format( "Should not match \"{0}\"" , culture ) );
+ Assert.AreEqual( "Only supported under culture " + culture, detector.Reason );
+ }
+
+ private void ExpectFailure( CultureAttribute attr, string msg )
+ {
+ if ( detector.IsCultureSupported( attr ) )
+ Assert.Fail( string.Format( "Should not match attribute with Include=\"{0}\",Exclude=\"{1}\"",
+ attr.Include, attr.Exclude ) );
+ Assert.AreEqual( msg, detector.Reason );
+ }
+
+ [Test]
+ public void CanMatchStrings()
+ {
+ ExpectMatch( "fr-FR" );
+ ExpectMatch( "fr" );
+ ExpectMatch( "fr-FR,fr-BE,fr-CA" );
+ ExpectMatch( "en,de,fr,it" );
+ ExpectFailure( "en-GB" );
+ ExpectFailure( "en" );
+ ExpectFailure( "fr-CA" );
+ ExpectFailure( "fr-BE,fr-CA" );
+ ExpectFailure( "en,de,it" );
+ }
+
+ [Test]
+ public void CanMatchAttributeWithInclude()
+ {
+ ExpectMatch( new CultureAttribute( "fr-FR" ) );
+ ExpectMatch( new CultureAttribute( "fr-FR,fr-BE,fr-CA" ) );
+ ExpectFailure( new CultureAttribute( "en" ), "Only supported under culture en" );
+ ExpectFailure( new CultureAttribute( "en,de,it" ), "Only supported under culture en,de,it" );
+ }
+
+ [Test]
+ public void CanMatchAttributeWithExclude()
+ {
+ CultureAttribute attr = new CultureAttribute();
+ attr.Exclude = "en";
+ ExpectMatch( attr );
+ attr.Exclude = "en,de,it";
+ ExpectMatch( attr );
+ attr.Exclude = "fr";
+ ExpectFailure( attr, "Not supported under culture fr");
+ attr.Exclude = "fr-FR,fr-BE,fr-CA";
+ ExpectFailure( attr, "Not supported under culture fr-FR,fr-BE,fr-CA" );
+ }
+
+ [Test]
+ public void CanMatchAttributeWithIncludeAndExclude()
+ {
+ CultureAttribute attr = new CultureAttribute( "en,fr,de,it" );
+ attr.Exclude="fr-CA,fr-BE";
+ ExpectMatch( attr );
+ attr.Exclude = "fr-FR";
+ ExpectFailure( attr, "Not supported under culture fr-FR" );
+ }
+
+#if !NETCF
+ [Test,SetCulture("fr-FR")]
+ public void LoadWithFrenchCulture()
+ {
+ Assert.AreEqual( "fr-FR", CultureInfo.CurrentCulture.Name, "Culture not set correctly" );
+ TestSuite fixture = TestBuilder.MakeFixture( typeof( FixtureWithCultureAttribute ) );
+ Assert.AreEqual( RunState.Runnable, fixture.RunState, "Fixture" );
+ foreach( Test test in fixture.Tests )
+ {
+ RunState expected = test.Name == "FrenchTest" ? RunState.Runnable : RunState.Skipped;
+ Assert.AreEqual( expected, test.RunState, test.Name );
+ }
+ }
+
+ [Test,SetCulture("fr-CA")]
+ public void LoadWithFrenchCanadianCulture()
+ {
+ Assert.AreEqual( "fr-CA", CultureInfo.CurrentCulture.Name, "Culture not set correctly" );
+ TestSuite fixture = TestBuilder.MakeFixture( typeof( FixtureWithCultureAttribute ) );
+ Assert.AreEqual( RunState.Runnable, fixture.RunState, "Fixture" );
+ foreach( Test test in fixture.Tests )
+ {
+ RunState expected = test.Name.StartsWith( "French" ) ? RunState.Runnable : RunState.Skipped;
+ Assert.AreEqual( expected, test.RunState, test.Name );
+ }
+ }
+
+ [Test,SetCulture("ru-RU")]
+ public void LoadWithRussianCulture()
+ {
+ Assert.AreEqual( "ru-RU", CultureInfo.CurrentCulture.Name, "Culture not set correctly" );
+ TestSuite fixture = TestBuilder.MakeFixture( typeof( FixtureWithCultureAttribute ) );
+ Assert.AreEqual( RunState.Skipped, fixture.RunState, "Fixture" );
+ foreach( Test test in fixture.Tests )
+ Assert.AreEqual( RunState.Skipped, test.RunState, test.Name );
+ }
+
+ [Test]
+ public void SettingInvalidCultureOnFixtureGivesError()
+ {
+ ITestResult result = TestBuilder.RunTestFixture(typeof(FixtureWithInvalidSetCultureAttribute));
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+ Assert.That(result.Message, Is.StringStarting("System.ArgumentException").Or.StringStarting("System.Globalization.CultureNotFoundException"));
+ Assert.That(result.Message, Is.StringContaining("xx-XX").IgnoreCase);
+ }
+
+ [Test]
+ public void SettingInvalidCultureOnTestGivesError()
+ {
+ ITestResult result = TestBuilder.RunTestCase(typeof(FixtureWithInvalidSetCultureAttributeOnTest), "InvalidCultureSet");
+ Assert.AreEqual(ResultState.Error, result.ResultState);
+ Assert.That(result.Message, Is.StringStarting("System.ArgumentException").Or.StringStarting("System.Globalization.CultureNotFoundException"));
+ Assert.That(result.Message, Is.StringContaining("xx-XX").IgnoreCase);
+ }
+
+ [TestFixture, SetCulture("en-GB")]
+ public class NestedFixture
+ {
+ [Test]
+ public void CanSetCultureOnFixture()
+ {
+ Assert.AreEqual( "en-GB", CultureInfo.CurrentCulture.Name );
+ }
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/DeduceTypeArgsFromArgs.cs b/NUnitLite-0.9.0/src/tests/Internal/DeduceTypeArgsFromArgs.cs
new file mode 100755
index 0000000..a495f83
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/DeduceTypeArgsFromArgs.cs
@@ -0,0 +1,51 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ [Category("Generics")]
+ [TestFixture(100.0, 42)]
+ [TestFixture(42, 100.0)]
+ public class DeduceTypeArgsFromArgs<T1, T2>
+ {
+ T1 t1;
+ T2 t2;
+
+ public DeduceTypeArgsFromArgs(T1 t1, T2 t2)
+ {
+ this.t1 = t1;
+ this.t2 = t2;
+ }
+
+ [TestCase(5, 7)]
+ public void TestMyArgTypes(T1 t1, T2 t2)
+ {
+ Assert.That(t1, Is.TypeOf<T1>());
+ Assert.That(t2, Is.TypeOf<T2>());
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Internal/GenericTestFixtureTests.cs b/NUnitLite-0.9.0/src/tests/Internal/GenericTestFixtureTests.cs
new file mode 100755
index 0000000..ddce40d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/GenericTestFixtureTests.cs
@@ -0,0 +1,64 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if CLR_2_0 || CLR_4_0
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture(typeof(List<int>))]
+ [TestFixture(TypeArgs = new Type[] { typeof(List<object>) })]
+#if !SILVERLIGHT
+ [TestFixture(typeof(ArrayList))]
+#endif
+ // TODO: Why doesn't this work?
+ //[TestFixture(TypeArgs = new Type[] { typeof(SimpleObjectList) })]
+ public class GenericTestFixture_IList<T> where T : IList, new()
+ {
+ [Test]
+ public void TestCollectionCount()
+ {
+ IList list = new T();
+ list.Add(1);
+ list.Add(2);
+ list.Add(3);
+ Assert.AreEqual(3, list.Count);
+ }
+ }
+
+ [TestFixture(typeof(double))]
+ public class GenericTestFixture_Numeric<T>
+ {
+ [TestCase(5)]
+ [TestCase(1.23)]
+ public void TestMyArgType(T x)
+ {
+ Assert.That(x, Is.TypeOf(typeof(T)));
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Internal/GenericTestMethodTests.cs b/NUnitLite-0.9.0/src/tests/Internal/GenericTestMethodTests.cs
new file mode 100755
index 0000000..70d8097
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/GenericTestMethodTests.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+using System;
+using System.Collections.Generic;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ class GenericTestMethodTests
+ {
+ [TestCase(5, 2, "ABC")]
+ [TestCase(5.0, 2.0, "ABC")]
+ [TestCase(5, 2.0, "ABC")]
+ [TestCase(5.0, 2L, "ABC")]
+ public void GenericTestMethodWithOneTypeParameter<T>(T x, T y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+
+ [TestCase(5, 2, "ABC")]
+ [TestCase(5.0, 2.0, "ABC")]
+ [TestCase(5, 2.0, "ABC")]
+ [TestCase(5.0, 2L, "ABC")]
+ public void GenericTestMethodWithTwoTypeParameters<T1, T2>(T1 x, T2 y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+
+ [TestCase(5, 2, "ABC")]
+ [TestCase(5.0, 2.0, "ABC")]
+ [TestCase(5, 2.0, "ABC")]
+ [TestCase(5.0, 2L, "ABC")]
+ public void GenericTestMethodWithTwoTypeParameters_Reversed<T1, T2>(T2 x, T1 y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Internal/NUnitTestCaseBuilderTests.cs b/NUnitLite-0.9.0/src/tests/Internal/NUnitTestCaseBuilderTests.cs
new file mode 100755
index 0000000..01ed8f0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/NUnitTestCaseBuilderTests.cs
@@ -0,0 +1,41 @@
+#if NET_4_5
+using System.Reflection;
+using NUnit.Framework.Api;
+using NUnit.Framework.Builders;
+using NUnit.TestData;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class NUnitTestCaseBuilderTests
+ {
+ private static readonly System.Type fixtureType = typeof(AsyncDummyFixture);
+
+ [TestCase("AsyncVoid", RunState.Runnable)]
+ [TestCase("AsyncTask", RunState.Runnable)]
+ [TestCase("AsyncGenericTask", RunState.NotRunnable)]
+ [TestCase("NonAsyncTask", RunState.NotRunnable)]
+ [TestCase("NonAsyncGenericTask", RunState.NotRunnable)]
+ public void AsyncTests(string methodName, RunState expectedState)
+ {
+ var test = TestBuilder.MakeTestCase(fixtureType, methodName);
+ Assert.That(test.RunState, Is.EqualTo(expectedState));
+ }
+
+ [TestCase("AsyncVoidTestCase", RunState.Runnable)]
+ [TestCase("AsyncVoidTestCaseWithExpectedResult", RunState.NotRunnable)]
+ [TestCase("AsyncTaskTestCase", RunState.Runnable)]
+ [TestCase("AsyncTaskTestCaseWithExpectedResult", RunState.NotRunnable)]
+ [TestCase("AsyncGenericTaskTestCase", RunState.NotRunnable)]
+ [TestCase("AsyncGenericTaskTestCaseWithExpectedResult", RunState.Runnable)]
+ [TestCase("AsyncGenericTaskTestCaseWithExpectedException", RunState.Runnable)]
+ public void AsyncTestCases(string methodName, RunState expectedState)
+ {
+ var suite = TestBuilder.MakeTestCase(fixtureType, methodName);
+ var testCase = (Test)suite.Tests[0];
+ Assert.That(testCase.RunState, Is.EqualTo(expectedState));
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Internal/PlatformDetectionTests.cs b/NUnitLite-0.9.0/src/tests/Internal/PlatformDetectionTests.cs
new file mode 100755
index 0000000..0d0668a
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/PlatformDetectionTests.cs
@@ -0,0 +1,443 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Summary description for PlatformHelperTests.
+ /// </summary>
+ [TestFixture]
+ public class PlatformDetectionTests
+ {
+ private static readonly PlatformHelper win95Helper = new PlatformHelper(
+ new OSPlatform( PlatformID.Win32Windows , new Version( 4, 0 ) ),
+ new RuntimeFramework( RuntimeType.Net, new Version( 1, 1, 4322, 0 ) ) );
+
+ private static readonly PlatformHelper winXPHelper = new PlatformHelper(
+ new OSPlatform( PlatformID.Win32NT , new Version( 5,1 ) ),
+ new RuntimeFramework( RuntimeType.Net, new Version( 1, 1, 4322, 0 ) ) );
+
+ private void CheckOSPlatforms( OSPlatform os,
+ string expectedPlatforms )
+ {
+ CheckPlatforms(
+ new PlatformHelper( os, RuntimeFramework.CurrentFramework ),
+ expectedPlatforms,
+ PlatformHelper.OSPlatforms );
+ }
+
+ private void CheckRuntimePlatforms( RuntimeFramework runtimeFramework,
+ string expectedPlatforms )
+ {
+ CheckPlatforms(
+ new PlatformHelper( OSPlatform.CurrentPlatform, runtimeFramework ),
+ expectedPlatforms,
+ PlatformHelper.RuntimePlatforms + ",NET-1.0,NET-1.1,NET-2.0,NET-3.0,NET-3.5,NET-4.0,MONO-1.0,MONO-2.0,MONO-3.0,MONO-3.5,MONO-4.0,MONOTOUCH,SL-3.0,SL-4.0,SL-5.0" );
+ }
+
+ private void CheckPlatforms( PlatformHelper helper,
+ string expectedPlatforms, string checkPlatforms )
+ {
+ string[] expected = expectedPlatforms.Split( new char[] { ',' } );
+ string[] check = checkPlatforms.Split( new char[] { ',' } );
+
+ //foreach (string platform in expected)
+ //{
+ // bool isValid = false;
+
+ // foreach (string testPlatform in check)
+ // if (isValid = platform.ToLower() == testPlatform.ToLower())
+ // break;
+
+ // if (!isValid)
+ // Assert.Fail("Invalid platform: {0}", platform);
+ //}
+
+ foreach( string testPlatform in check )
+ {
+ bool shouldPass = false;
+
+ foreach( string platform in expected )
+ if ( shouldPass = platform.ToLower() == testPlatform.ToLower() )
+ break;
+
+ bool didPass = helper.IsPlatformSupported( testPlatform );
+
+ if ( shouldPass && !didPass )
+ Assert.Fail( "Failed to detect {0}", testPlatform );
+ else if ( didPass && !shouldPass )
+ Assert.Fail( "False positive on {0}", testPlatform );
+ else if ( !shouldPass && !didPass )
+ Assert.AreEqual( "Only supported on " + testPlatform, helper.Reason );
+ }
+ }
+
+ [Test]
+ public void DetectWin95()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32Windows, new Version( 4, 0 ) ),
+ "Win95,Win32Windows,Win32,Win" );
+ }
+
+ [Test]
+ public void DetectWin98()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32Windows, new Version( 4, 10 ) ),
+ "Win98,Win32Windows,Win32,Win" );
+ }
+
+ [Test]
+ public void DetectWinMe()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32Windows, new Version( 4, 90 ) ),
+ "WinMe,Win32Windows,Win32,Win" );
+ }
+
+ // WinCE isn't defined in .NET 1.0.
+ [Test, Platform(Exclude="Net-1.0")]
+ public void DetectWinCE()
+ {
+ PlatformID winCE = (PlatformID)Enum.Parse(typeof(PlatformID), "WinCE", false);
+ CheckOSPlatforms(
+ new OSPlatform(winCE, new Version(1, 0)),
+ "WinCE,Win32,Win" );
+ }
+
+ [Test]
+ public void DetectNT3()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32NT, new Version( 3, 51 ) ),
+ "NT3,Win32NT,Win32,Win" );
+ }
+
+ [Test]
+ public void DetectNT4()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32NT, new Version( 4, 0 ) ),
+ "NT4,Win32NT,Win32,Win,Win-4.0" );
+ }
+
+ [Test]
+ public void DetectWin2K()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32NT, new Version( 5, 0 ) ),
+ "Win2K,NT5,Win32NT,Win32,Win,Win-5.0" );
+ }
+
+ [Test]
+ public void DetectWinXP()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32NT, new Version( 5, 1 ) ),
+ "WinXP,NT5,Win32NT,Win32,Win,Win-5.1" );
+ }
+
+ [Test]
+ public void DetectWinXPProfessionalX64()
+ {
+ CheckOSPlatforms(
+ new OSPlatform( PlatformID.Win32NT, new Version( 5, 2 ), OSPlatform.ProductType.WorkStation ),
+ "WinXP,NT5,Win32NT,Win32,Win,Win-5.1" );
+ }
+
+ [Test]
+ public void DetectWin2003Server()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.Win32NT, new Version(5, 2), OSPlatform.ProductType.Server),
+ "Win2003Server,NT5,Win32NT,Win32,Win,Win-5.2");
+ }
+
+ [Test]
+ public void DetectVista()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.Win32NT, new Version(6, 0), OSPlatform.ProductType.WorkStation),
+ "Vista,NT6,Win32NT,Win32,Win,Win-6.0");
+ }
+
+ [Test]
+ public void DetectWin2008ServerOriginal()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.Win32NT, new Version(6, 0), OSPlatform.ProductType.Server),
+ "Win2008Server,NT6,Win32NT,Win32,Win,Win-6.0");
+ }
+
+ [Test]
+ public void DetectWin2008ServerR2()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.Win32NT, new Version(6, 1), OSPlatform.ProductType.Server),
+ "Win2008Server,Win2008ServerR2,NT6,Win32NT,Win32,Win,Win-6.0");
+ }
+
+ [Test]
+ public void DetectWindows7()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.Win32NT, new Version(6, 1), OSPlatform.ProductType.WorkStation),
+ "Windows7,NT6,Win32NT,Win32,Win,Win-6.1");
+ }
+
+ [Test]
+ public void DetectUnixUnderMicrosoftDotNet()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(OSPlatform.UnixPlatformID_Microsoft, new Version(0,0)),
+ "UNIX,Linux");
+ }
+
+ // This throws under Microsoft .Net due to the invlaid enumeration value of 128
+ [Test]
+ public void DetectUnixUnderMono()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(OSPlatform.UnixPlatformID_Mono, new Version(0,0)),
+ "UNIX,Linux");
+ }
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ [Test]
+ public void DetectXbox()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.Xbox, new Version(0,0)),
+ "Xbox");
+ }
+
+ [Test]
+ public void DetectMacOSX()
+ {
+ CheckOSPlatforms(
+ new OSPlatform(PlatformID.MacOSX, new Version(0, 0)),
+ "MacOSX");
+ }
+#endif
+
+ [Test]
+ public void DetectNet10()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.Net, new Version( 1, 0, 3705, 0 ) ),
+ "NET,NET-1.0" );
+ }
+
+ [Test]
+ public void DetectNet11()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.Net, new Version( 1, 1, 4322, 0 ) ),
+ "NET,NET-1.1" );
+ }
+
+ [Test]
+ public void DetectNet20()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.Net, new Version( 2, 0, 50727, 0 ) ),
+ "Net,Net-2.0" );
+ }
+
+ [Test]
+ public void DetectNet30()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Net, new Version(3, 0)),
+ "Net,Net-2.0,Net-3.0");
+ }
+
+ [Test]
+ public void DetectNet35()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Net, new Version(3, 5)),
+ "Net,Net-2.0,Net-3.0,Net-3.5");
+ }
+
+ [Test]
+ public void DetectNet40()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Net, new Version(4, 0, 30319, 0)),
+ "Net,Net-4.0");
+ }
+
+ [Test]
+ public void DetectNetCF()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.NetCF, new Version( 1, 1, 4322, 0 ) ),
+ "NetCF" );
+ }
+
+ [Test]
+ public void DetectSSCLI()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.SSCLI, new Version( 1, 0, 3, 0 ) ),
+ "SSCLI,Rotor" );
+ }
+
+ [Test]
+ public void DetectMono10()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.Mono, new Version( 1, 1, 4322, 0 ) ),
+ "Mono,Mono-1.0" );
+ }
+
+ [Test]
+ public void DetectMono20()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework( RuntimeType.Mono, new Version( 2, 0, 50727, 0 ) ),
+ "Mono,Mono-2.0" );
+ }
+
+ [Test]
+ public void DetectMono30()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Mono, new Version(3, 0)),
+ "Mono,Mono-2.0,Mono-3.0");
+ }
+
+ [Test]
+ public void DetectMono35()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Mono, new Version(3, 5)),
+ "Mono,Mono-2.0,Mono-3.0,Mono-3.5");
+ }
+
+ [Test]
+ public void DetectMono40()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Mono, new Version(4, 0, 30319)),
+ "Mono,Mono-4.0");
+ }
+
+ [Test]
+ public void DetectMonoTouch()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.MonoTouch, new Version(4, 0, 30319)),
+ "MonoTouch");
+ }
+
+ [Test]
+ public void DetectSilverlight30()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Silverlight, new Version(3, 0)),
+ "Silverlight,SL-3.0");
+ }
+
+ [Test]
+ public void DetectSilverlight40()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Silverlight, new Version(4, 0)),
+ "Silverlight,SL-4.0");
+ }
+
+ [Test]
+ public void DetectSilverlight50()
+ {
+ CheckRuntimePlatforms(
+ new RuntimeFramework(RuntimeType.Silverlight, new Version(5, 0)),
+ "Silverlight,SL-5.0");
+ }
+
+ [Test]
+ public void DetectExactVersion()
+ {
+ Assert.IsTrue( winXPHelper.IsPlatformSupported( "net-1.1.4322" ) );
+ Assert.IsTrue( winXPHelper.IsPlatformSupported( "net-1.1.4322.0" ) );
+ Assert.IsFalse( winXPHelper.IsPlatformSupported( "net-1.1.4323.0" ) );
+ Assert.IsFalse( winXPHelper.IsPlatformSupported( "net-1.1.4322.1" ) );
+ }
+
+ [Test]
+ public void ArrayOfPlatforms()
+ {
+ string[] platforms = new string[] { "NT4", "Win2K", "WinXP" };
+ Assert.IsTrue( winXPHelper.IsPlatformSupported( platforms ) );
+ Assert.IsFalse( win95Helper.IsPlatformSupported( platforms ) );
+ }
+
+ [Test]
+ public void PlatformAttribute_Include()
+ {
+ PlatformAttribute attr = new PlatformAttribute( "Win2K,WinXP,NT4" );
+ Assert.IsTrue( winXPHelper.IsPlatformSupported( attr ) );
+ Assert.IsFalse( win95Helper.IsPlatformSupported( attr ) );
+ Assert.AreEqual("Only supported on Win2K,WinXP,NT4", win95Helper.Reason);
+ }
+
+ [Test]
+ public void PlatformAttribute_Exclude()
+ {
+ PlatformAttribute attr = new PlatformAttribute();
+ attr.Exclude = "Win2K,WinXP,NT4";
+ Assert.IsFalse( winXPHelper.IsPlatformSupported( attr ) );
+ Assert.AreEqual( "Not supported on Win2K,WinXP,NT4", winXPHelper.Reason );
+ Assert.IsTrue( win95Helper.IsPlatformSupported( attr ) );
+ }
+
+ [Test]
+ public void PlatformAttribute_IncludeAndExclude()
+ {
+ PlatformAttribute attr = new PlatformAttribute( "Win2K,WinXP,NT4" );
+ attr.Exclude = "Mono";
+ Assert.IsFalse( win95Helper.IsPlatformSupported( attr ) );
+ Assert.AreEqual( "Only supported on Win2K,WinXP,NT4", win95Helper.Reason );
+ Assert.IsTrue( winXPHelper.IsPlatformSupported( attr ) );
+ attr.Exclude = "Net";
+ Assert.IsFalse( win95Helper.IsPlatformSupported( attr ) );
+ Assert.AreEqual( "Only supported on Win2K,WinXP,NT4", win95Helper.Reason );
+ Assert.IsFalse( winXPHelper.IsPlatformSupported( attr ) );
+ Assert.AreEqual( "Not supported on Net", winXPHelper.Reason );
+ }
+
+ [Test]
+ public void PlatformAttribute_InvalidPlatform()
+ {
+ PlatformAttribute attr = new PlatformAttribute( "Net-1.0,Net11,Mono" );
+ Assert.IsFalse( winXPHelper.IsPlatformSupported( attr ) );
+ Assert.That( winXPHelper.Reason, Is.StringStarting("Invalid platform name"));
+ Assert.That( winXPHelper.Reason, Is.StringContaining("Net11"));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/PropertyBagTests.cs b/NUnitLite-0.9.0/src/tests/Internal/PropertyBagTests.cs
new file mode 100755
index 0000000..0595454
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/PropertyBagTests.cs
@@ -0,0 +1,184 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class PropertyBagTests
+ {
+ PropertyBag bag;
+
+ [SetUp]
+ public void SetUp()
+ {
+ bag = new PropertyBag();
+ bag.Add("Answer", 42);
+ bag.Add("Tag", "bug");
+ bag.Add("Tag", "easy");
+ }
+
+ [Test]
+ public void CountReflectsNumberOfPairs()
+ {
+ Assert.That(bag.Count, Is.EqualTo(3));
+ }
+
+ [Test]
+ public void IndexGetsListOfValues()
+ {
+ Assert.That(bag["Answer"].Count, Is.EqualTo(1));
+ Assert.That(bag["Answer"], Contains.Item(42));
+
+ Assert.That(bag["Tag"].Count, Is.EqualTo(2));
+ Assert.That(bag["Tag"], Contains.Item("bug"));
+ Assert.That(bag["Tag"], Contains.Item("easy"));
+ }
+
+ [Test]
+ public void IndexGetsEmptyListIfNameIsNotPresent()
+ {
+ Assert.That(bag["Level"].Count, Is.EqualTo(0));
+ }
+
+ [Test]
+ public void IndexSetsListOfValues()
+ {
+ bag["Zip"] = new string[] {"junk", "more junk"};
+ Assert.That(bag["Zip"].Count, Is.EqualTo(2));
+ Assert.That(bag["Zip"], Contains.Item("junk"));
+ Assert.That(bag["Zip"], Contains.Item("more junk"));
+ }
+
+ [Test]
+ public void CanClearTheBag()
+ {
+ bag.Clear();
+ Assert.That(bag.Keys.Count, Is.EqualTo(0));
+ Assert.That(bag.Count, Is.EqualTo(0));
+ }
+
+ [Test]
+ public void AllKeysAreListed()
+ {
+ Assert.That(bag.Keys.Count, Is.EqualTo(2));
+ Assert.That(bag.Keys, Has.Member("Answer"));
+ Assert.That(bag.Keys, Has.Member("Tag"));
+ }
+
+ [Test]
+ public void ContainsKey()
+ {
+ Assert.That(bag.ContainsKey("Answer"));
+ Assert.That(bag.ContainsKey("Tag"));
+ Assert.False(bag.ContainsKey("Target"));
+ }
+
+ [Test]
+ public void ContainsKeyAndValue()
+ {
+ Assert.That(bag.Contains("Answer", 42));
+ }
+
+ [Test]
+ public void ContainsPropertyEntry()
+ {
+ Assert.That(bag.Contains(new PropertyEntry("Answer", 42)));
+ }
+
+ [Test]
+ public void CanRemoveKey()
+ {
+ bag.Remove("Tag");
+ Assert.That(bag.Keys.Count, Is.EqualTo(1));
+ Assert.That(bag.Count, Is.EqualTo(1));
+ Assert.That(bag.Keys, Has.No.Member("Tag"));
+ }
+
+ [Test]
+ public void CanRemoveMissingKeyWithoutError()
+ {
+ bag.Remove("Zip");
+ }
+
+ [Test]
+ public void CanRemoveNameAndValue()
+ {
+ bag.Remove("Tag", "easy");
+ Assert.That(bag["Tag"].Contains("bug"));
+ Assert.False(bag["Tag"].Contains("easy"));
+ Assert.That(bag.Count, Is.EqualTo(2));
+ }
+
+ [Test]
+ public void CanRemoveNameAndMissingValueWithoutError()
+ {
+ bag.Remove("Tag", "wishlist");
+ }
+
+ [Test]
+ public void CanRemovePropertyEntry()
+ {
+ bag.Remove(new PropertyEntry("Tag", "easy"));
+ Assert.That(bag["Tag"].Contains("bug"));
+ Assert.False(bag["Tag"].Contains("easy"));
+ Assert.That(bag.Count, Is.EqualTo(2));
+ }
+
+ [Test]
+ public void GetReturnsSingleValue()
+ {
+ Assert.That(bag.Get("Answer"), Is.EqualTo(42));
+ Assert.That(bag.Get("Tag"), Is.EqualTo("bug"));
+ }
+
+ [Test]
+ public void SetAddsNewSingleValue()
+ {
+ bag.Set("Zip", "ZAP");
+ Assert.That(bag["Zip"].Count, Is.EqualTo(1));
+ Assert.That(bag["Zip"], Has.Member("ZAP"));
+ Assert.That(bag.Get("Zip"), Is.EqualTo("ZAP"));
+ }
+
+ [Test]
+ public void SetReplacesOldValues()
+ {
+ bag.Set("Tag", "ZAPPED");
+ Assert.That(bag["Tag"].Count, Is.EqualTo(1));
+ Assert.That(bag.Get("Tag"), Is.EqualTo("ZAPPED"));
+ }
+
+ [Test]
+ public void EnumeratorReturnsAllEntries()
+ {
+ int count = 0;
+ // NOTE: Ignore unsuppressed warning about entry in .NET 1.1 build
+ foreach (PropertyEntry entry in bag)
+ ++count;
+ Assert.That(count, Is.EqualTo(3));
+
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/RandomGeneratorTests.cs b/NUnitLite-0.9.0/src/tests/Internal/RandomGeneratorTests.cs
new file mode 100755
index 0000000..a4918d0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/RandomGeneratorTests.cs
@@ -0,0 +1,132 @@
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Tests.Internal
+{
+ public class RandomGeneratorTests
+ {
+ #region Properties & Constructor
+ public RandomGeneratorTests()
+ {
+ }
+ #endregion
+
+ #region Ints
+ [Test]
+ public void RandomIntsAreUnique()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ int[] values = new int[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetInt();
+
+ Assert.That(values, Is.Unique);
+ }
+ [TestCase(-300,300)]
+ public void RandomIntsAreUnique(int min, int max)
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ int[] values = new int[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetInt(min,max);
+
+ Assert.That(values, Is.Unique);
+ }
+ #endregion
+
+ #region Shorts
+ [Test]
+ public void RandomShortsAreUnique()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ short[] values = new short[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetShort();
+
+ Assert.That(values, Is.Unique);
+ }
+ [TestCase(short.MinValue,short.MaxValue)]
+ public void RandomShortsAreUnique(short min, short max)
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ short[] values = new short[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetShort(min, max);
+
+ Assert.That(values, Is.Unique);
+ }
+ #endregion
+
+ #region Btyes
+ [Test]
+ public void RandomBytesAreUnique()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ byte[] values = new byte[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetByte();
+
+ Assert.That(values, Is.Unique);
+ }
+
+ [TestCase(byte.MinValue,byte.MaxValue)]
+ public void RandomBytesAreUnique(byte min, byte max)
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ byte[] values = new byte[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetByte();
+
+ Assert.That(values, Is.Unique);
+ }
+ #endregion
+
+ #region Bool
+ [Test]
+ public void CanGetRandomBool()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ bool[] values = new bool[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetBool();
+ Assert.That(values, Contains.Item(true));
+ Assert.That(values, Contains.Item(false));
+ }
+
+ public void CanGetRandomBoolWithProbability()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ for (int i = 0; i < 10; i++)
+ {
+ Assert.True(r.GetBool(.0));
+ Assert.False(r.GetBool(1.0));
+ }
+ }
+ #endregion
+
+ #region Doubles & Floats
+ [Test]
+ public void RandomDoublesAreUnique()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ double[] values = new double[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetDouble();
+
+ Assert.That(values, Is.Unique);
+ }
+
+ [Test]
+ public void RandomFloatsAreUnique()
+ {
+ RandomGenerator r = new RandomGenerator(new Random().Next());
+ double[] values = new double[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.GetFloat();
+
+ Assert.That(values, Is.Unique);
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/RandomizerTests.cs b/NUnitLite-0.9.0/src/tests/Internal/RandomizerTests.cs
new file mode 100755
index 0000000..6799eee
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/RandomizerTests.cs
@@ -0,0 +1,185 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Framework.Internal
+{
+ public class RandomizerTests
+ {
+ [Test]
+ public void RandomSeedsAreUnique()
+ {
+ int[] seeds = new int[10];
+ for (int i = 0; i < 10; i++)
+ seeds[i] = Randomizer.RandomSeed;
+
+ Assert.That(seeds, Is.Unique);
+ }
+
+ [Test]
+ public void RandomIntsAreUnique()
+ {
+ Randomizer r = new Randomizer();
+
+ int[] values = new int[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.Next();
+
+ Assert.That(values, Is.Unique);
+ }
+
+ [Test]
+ public void RandomDoublesAreUnique()
+ {
+ Randomizer r = new Randomizer();
+
+ double[] values = new double[10];
+ for (int i = 0; i < 10; i++)
+ values[i] = r.NextDouble();
+
+ Assert.That(values, Is.Unique);
+ }
+
+ [Test]
+ public void CanGetArrayOfRandomInts()
+ {
+ Randomizer r = new Randomizer();
+
+ int[] ints = r.GetInts(1, 100, 10);
+ Assert.That(ints.Length, Is.EqualTo(10));
+ foreach (int i in ints)
+ Assert.That(i, Is.InRange(1, 100));
+ }
+
+ [Test]
+ public void CanGetArrayOfRandomDoubles()
+ {
+ Randomizer r = new Randomizer();
+
+ double[] doubles = r.GetDoubles(0.5, 1.5, 10);
+ Assert.That(doubles.Length, Is.EqualTo(10));
+ foreach (double d in doubles)
+ Assert.That(d, Is.InRange(0.5, 1.5));
+
+ // Heuristic: Could fail occasionally
+ Assert.That(doubles, Is.Unique);
+ }
+
+ [Test]
+ public void CanGetArrayOfRandomEnums()
+ {
+ Randomizer r = new Randomizer();
+
+ object[] enums = r.GetEnums(10, typeof(AttributeTargets));
+ Assert.That(enums.Length, Is.EqualTo(10));
+ foreach (object e in enums)
+ Assert.That(e, Is.TypeOf(typeof(AttributeTargets)));
+ }
+
+ [Test]
+ public void RandomizersWithSameSeedsReturnSameValues()
+ {
+ Randomizer r1 = new Randomizer(1234);
+ Randomizer r2 = new Randomizer(1234);
+
+ for (int i = 0; i < 10; i++)
+ Assert.That(r1.NextDouble(), Is.EqualTo(r2.NextDouble()));
+ }
+
+ [Test]
+ public void RandomizersWithDifferentSeedsReturnDifferentValues()
+ {
+ Randomizer r1 = new Randomizer(1234);
+ Randomizer r2 = new Randomizer(4321);
+
+ for (int i = 0; i < 10; i++)
+ Assert.That(r1.NextDouble(), Is.Not.EqualTo(r2.NextDouble()));
+ }
+
+ [Test]
+ public void ReturnsSameRandomizerForSameParameter()
+ {
+ ParameterInfo p = testMethod1.GetParameters()[0];
+ Randomizer r1 = Randomizer.GetRandomizer(p);
+ Randomizer r2 = Randomizer.GetRandomizer(p);
+ Assert.That(r1, Is.SameAs(r2));
+ }
+
+ [Test]
+ public void ReturnsSameRandomizerForDifferentParametersOfSameMethod()
+ {
+ ParameterInfo p1 = testMethod1.GetParameters()[0];
+ ParameterInfo p2 = testMethod1.GetParameters()[1];
+ Randomizer r1 = Randomizer.GetRandomizer(p1);
+ Randomizer r2 = Randomizer.GetRandomizer(p2);
+ Assert.That(r1, Is.SameAs(r2));
+ }
+
+ [Test]
+ public void ReturnsSameRandomizerForSameMethod()
+ {
+ Randomizer r1 = Randomizer.GetRandomizer(testMethod1);
+ Randomizer r2 = Randomizer.GetRandomizer(testMethod1);
+ Assert.That(r1, Is.SameAs(r2));
+ }
+
+ [Test]
+ public void ReturnsDifferentRandomizersForDifferentMethods()
+ {
+ Randomizer r1 = Randomizer.GetRandomizer(testMethod1);
+ Randomizer r2 = Randomizer.GetRandomizer(testMethod2);
+ Assert.That(r1, Is.Not.SameAs(r2));
+ }
+
+ static readonly MethodInfo testMethod1 =
+ typeof(RandomizerTests).GetMethod("TestMethod1", BindingFlags.NonPublic | BindingFlags.Instance);
+ private void TestMethod1(int x, int y)
+ {
+ }
+
+ static readonly MethodInfo testMethod2 =
+ typeof(RandomizerTests).GetMethod("TestMethod2", BindingFlags.NonPublic | BindingFlags.Instance);
+ private void TestMethod2(int x, int y)
+ {
+ }
+
+ private int CountUniqueValues(Array array)
+ {
+ int uniqueCount = 0;
+
+ for (int index = 0; index < array.Length; index++)
+ {
+ bool isUnique = true;
+ for (int index2 = 0; index2 < index; index2++)
+ if (array.GetValue(index).Equals(array.GetValue(index2)))
+ isUnique = false;
+ if (isUnique)
+ uniqueCount++;
+ }
+
+ return uniqueCount;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/RuntimeFrameworkTests.cs b/NUnitLite-0.9.0/src/tests/Internal/RuntimeFrameworkTests.cs
new file mode 100755
index 0000000..8e48898
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/RuntimeFrameworkTests.cs
@@ -0,0 +1,287 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using Microsoft.Win32;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class RuntimeFrameworkTests
+ {
+ [Test]
+ public void CanGetCurrentFramework()
+ {
+ Version expectedClrVersion = Environment.Version;
+ Version expectedFrameworkVersion = new Version(expectedClrVersion.Major, expectedClrVersion.Minor);
+
+#if SILVERLIGHT
+ RuntimeType expectedRuntime = RuntimeType.Silverlight;
+ expectedClrVersion = new RuntimeFramework(expectedRuntime, expectedFrameworkVersion).ClrVersion;
+#else
+ RuntimeType expectedRuntime = Type.GetType("Mono.Runtime", false) != null
+ ? RuntimeType.Mono
+ : Environment.OSVersion.Platform == PlatformID.WinCE
+ ? RuntimeType.NetCF
+ : RuntimeType.Net;
+
+ // TODO: Remove duplication of RuntimeFramework code
+ switch (expectedRuntime)
+ {
+ case RuntimeType.Mono:
+ if (expectedFrameworkVersion.Major == 1)
+ expectedFrameworkVersion = new Version(1,0);
+ else if (expectedFrameworkVersion.Major == 2)
+ expectedFrameworkVersion = new Version(3,5);
+ break;
+
+ case RuntimeType.Net:
+ case RuntimeType.NetCF:
+ if (expectedFrameworkVersion.Major == 2)
+ {
+ RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework");
+ if (key != null)
+ {
+ string installRoot = key.GetValue("InstallRoot") as string;
+ if (installRoot != null)
+ {
+ if (Directory.Exists(Path.Combine(installRoot, "v3.5")))
+ expectedFrameworkVersion = new Version(3,5);
+ else if (Directory.Exists(Path.Combine(installRoot, "v3.0")))
+ expectedFrameworkVersion = new Version(3,0);
+ }
+ }
+ }
+ break;
+ }
+#endif
+
+ RuntimeFramework framework = RuntimeFramework.CurrentFramework;
+
+ Assert.That(framework.Runtime, Is.EqualTo(expectedRuntime));
+ Assert.That(framework.ClrVersion, Is.EqualTo(expectedClrVersion));
+ Assert.That(framework.FrameworkVersion, Is.EqualTo(expectedFrameworkVersion));
+ }
+
+ [Test]
+ public void CurrentFrameworkHasBuildSpecified()
+ {
+ Assert.That(RuntimeFramework.CurrentFramework.ClrVersion.Build, Is.GreaterThan(0));
+ }
+
+#if !NUNITLITE
+ [Test, Platform(Exclude="NETCF", Reason="NYI")]
+ public void CurrentFrameworkMustBeAvailable()
+ {
+ Assert.That(RuntimeFramework.CurrentFramework.IsAvailable);
+ }
+
+ [Test, Platform(Exclude="NETCF", Reason="NYI")]
+ public void CanListAvailableFrameworks()
+ {
+ RuntimeFramework[] available = RuntimeFramework.AvailableFrameworks;
+ Assert.That(available, Has.Length.GreaterThan(0) );
+ bool foundCurrent = false;
+ foreach (RuntimeFramework framework in available)
+ {
+ Console.WriteLine("Available: {0}", framework.DisplayName);
+ foundCurrent |= RuntimeFramework.CurrentFramework.Supports(framework);
+ }
+ Assert.That(foundCurrent, "CurrentFramework not listed");
+ }
+#endif
+
+ [TestCaseSource("frameworkData")]
+ public void CanCreateUsingFrameworkVersion(FrameworkData data)
+ {
+ RuntimeFramework framework = new RuntimeFramework(data.runtime, data.frameworkVersion);
+ Assert.AreEqual(data.runtime, framework.Runtime);
+ Assert.AreEqual(data.frameworkVersion, framework.FrameworkVersion);
+ Assert.AreEqual(data.clrVersion, framework.ClrVersion);
+ }
+
+ [TestCaseSource("frameworkData")]
+ public void CanCreateUsingClrVersion(FrameworkData data)
+ {
+ Assume.That(data.frameworkVersion.Major != 3);
+
+ RuntimeFramework framework = new RuntimeFramework(data.runtime, data.clrVersion);
+ Assert.AreEqual(data.runtime, framework.Runtime);
+ Assert.AreEqual(data.frameworkVersion, framework.FrameworkVersion);
+ Assert.AreEqual(data.clrVersion, framework.ClrVersion);
+ }
+
+ [TestCaseSource("frameworkData")]
+ public void CanParseRuntimeFramework(FrameworkData data)
+ {
+ RuntimeFramework framework = RuntimeFramework.Parse(data.representation);
+ Assert.AreEqual(data.runtime, framework.Runtime);
+ Assert.AreEqual(data.clrVersion, framework.ClrVersion);
+ }
+
+ [TestCaseSource("frameworkData")]
+ public void CanDisplayFrameworkAsString(FrameworkData data)
+ {
+ RuntimeFramework framework = new RuntimeFramework(data.runtime, data.frameworkVersion);
+ Assert.AreEqual(data.representation, framework.ToString());
+ Assert.AreEqual(data.displayName, framework.DisplayName);
+ }
+
+ [TestCaseSource("matchData")]
+ public bool CanMatchRuntimes(RuntimeFramework f1, RuntimeFramework f2)
+ {
+ return f1.Supports(f2);
+ }
+
+ internal static TestCaseData[] matchData = new TestCaseData[] {
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(3,5)),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Net, new Version(3,5)))
+ .Returns(false),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(3,5)),
+ new RuntimeFramework(RuntimeType.Net, new Version(3,5)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0,50727)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0,50727)),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0,50727)),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Mono, new Version(2,0)))
+ .Returns(false),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Net, new Version(1,1)))
+ .Returns(false),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0,50727)),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0,40607)))
+ .Returns(false),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Mono, new Version(1,1)), // non-existent version but it works
+ new RuntimeFramework(RuntimeType.Mono, new Version(1,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Mono, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Any, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Any, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Mono, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Any, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Any, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Any, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Any, new Version(4,0)))
+ .Returns(false),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, RuntimeFramework.DefaultVersion),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Net, RuntimeFramework.DefaultVersion))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Any, RuntimeFramework.DefaultVersion),
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)))
+ .Returns(true),
+ new TestCaseData(
+ new RuntimeFramework(RuntimeType.Net, new Version(2,0)),
+ new RuntimeFramework(RuntimeType.Any, RuntimeFramework.DefaultVersion))
+ .Returns(true)
+ };
+
+ public struct FrameworkData
+ {
+ public RuntimeType runtime;
+ public Version frameworkVersion;
+ public Version clrVersion;
+ public string representation;
+ public string displayName;
+
+ public FrameworkData(RuntimeType runtime, Version frameworkVersion, Version clrVersion,
+ string representation, string displayName)
+ {
+ this.runtime = runtime;
+ this.frameworkVersion = frameworkVersion;
+ this.clrVersion = clrVersion;
+ this.representation = representation;
+ this.displayName = displayName;
+ }
+
+ public override string ToString()
+ {
+ return string.Format("<{0},{1},{2}>", this.runtime, this.frameworkVersion, this.clrVersion);
+ }
+ }
+
+ internal FrameworkData[] frameworkData = new FrameworkData[] {
+ new FrameworkData(RuntimeType.Net, new Version(1,0), new Version(1,0,3705), "net-1.0", "Net 1.0"),
+ //new FrameworkData(RuntimeType.Net, new Version(1,0,3705), new Version(1,0,3705), "net-1.0.3705", "Net 1.0.3705"),
+ //new FrameworkData(RuntimeType.Net, new Version(1,0), new Version(1,0,3705), "net-1.0.3705", "Net 1.0.3705"),
+ new FrameworkData(RuntimeType.Net, new Version(1,1), new Version(1,1,4322), "net-1.1", "Net 1.1"),
+ //new FrameworkData(RuntimeType.Net, new Version(1,1,4322), new Version(1,1,4322), "net-1.1.4322", "Net 1.1.4322"),
+ new FrameworkData(RuntimeType.Net, new Version(2,0), new Version(2,0,50727), "net-2.0", "Net 2.0"),
+ //new FrameworkData(RuntimeType.Net, new Version(2,0,40607), new Version(2,0,40607), "net-2.0.40607", "Net 2.0.40607"),
+ //new FrameworkData(RuntimeType.Net, new Version(2,0,50727), new Version(2,0,50727), "net-2.0.50727", "Net 2.0.50727"),
+ new FrameworkData(RuntimeType.Net, new Version(3,0), new Version(2,0,50727), "net-3.0", "Net 3.0"),
+ new FrameworkData(RuntimeType.Net, new Version(3,5), new Version(2,0,50727), "net-3.5", "Net 3.5"),
+ new FrameworkData(RuntimeType.Net, new Version(4,0), new Version(4,0,30319), "net-4.0", "Net 4.0"),
+ new FrameworkData(RuntimeType.Net, RuntimeFramework.DefaultVersion, RuntimeFramework.DefaultVersion, "net", "Net"),
+ new FrameworkData(RuntimeType.Mono, new Version(1,0), new Version(1,1,4322), "mono-1.0", "Mono 1.0"),
+ new FrameworkData(RuntimeType.Mono, new Version(2,0), new Version(2,0,50727), "mono-2.0", "Mono 2.0"),
+ //new FrameworkData(RuntimeType.Mono, new Version(2,0,50727), new Version(2,0,50727), "mono-2.0.50727", "Mono 2.0.50727"),
+ new FrameworkData(RuntimeType.Mono, new Version(3,5), new Version(2,0,50727), "mono-3.5", "Mono 3.5"),
+ new FrameworkData(RuntimeType.Mono, new Version(4,0), new Version(4,0,30319), "mono-4.0", "Mono 4.0"),
+ new FrameworkData(RuntimeType.Mono, RuntimeFramework.DefaultVersion, RuntimeFramework.DefaultVersion, "mono", "Mono"),
+ new FrameworkData(RuntimeType.Any, new Version(1,1), new Version(1,1,4322), "v1.1", "v1.1"),
+ new FrameworkData(RuntimeType.Any, new Version(2,0), new Version(2,0,50727), "v2.0", "v2.0"),
+ //new FrameworkData(RuntimeType.Any, new Version(2,0,50727), new Version(2,0,50727), "v2.0.50727", "v2.0.50727"),
+ new FrameworkData(RuntimeType.Any, new Version(3,5), new Version(2,0,50727), "v3.5", "v3.5"),
+ new FrameworkData(RuntimeType.Any, new Version(4,0), new Version(4,0,30319), "v4.0", "v4.0"),
+ new FrameworkData(RuntimeType.Any, RuntimeFramework.DefaultVersion, RuntimeFramework.DefaultVersion, "any", "Any")
+ };
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/SetUpTest.cs b/NUnitLite-0.9.0/src/tests/Internal/SetUpTest.cs
new file mode 100755
index 0000000..30285e8
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/SetUpTest.cs
@@ -0,0 +1,161 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.TestUtilities;
+using NUnit.TestData.SetUpData;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class SetUpTest
+ {
+ [Test]
+ public void SetUpAndTearDownCounter()
+ {
+ SetUpAndTearDownCounterFixture fixture = new SetUpAndTearDownCounterFixture();
+ TestBuilder.RunTestFixture( fixture );
+
+ Assert.AreEqual(3, fixture.setUpCounter);
+ Assert.AreEqual(3, fixture.tearDownCounter);
+ }
+
+
+ [Test]
+ public void MakeSureSetUpAndTearDownAreCalled()
+ {
+ SetUpAndTearDownFixture fixture = new SetUpAndTearDownFixture();
+ TestBuilder.RunTestFixture( fixture );
+
+ Assert.IsTrue(fixture.wasSetUpCalled);
+ Assert.IsTrue(fixture.wasTearDownCalled);
+ }
+
+ [Test]
+ public void CheckInheritedSetUpAndTearDownAreCalled()
+ {
+ InheritSetUpAndTearDown fixture = new InheritSetUpAndTearDown();
+ TestBuilder.RunTestFixture( fixture );
+
+ Assert.IsTrue(fixture.wasSetUpCalled);
+ Assert.IsTrue(fixture.wasTearDownCalled);
+ }
+
+ [Test]
+ public void CheckOverriddenSetUpAndTearDownAreNotCalled()
+ {
+ DefineInheritSetUpAndTearDown fixture = new DefineInheritSetUpAndTearDown();
+ TestBuilder.RunTestFixture( fixture );
+
+ Assert.IsFalse(fixture.wasSetUpCalled);
+ Assert.IsFalse(fixture.wasTearDownCalled);
+ Assert.IsTrue(fixture.derivedSetUpCalled);
+ Assert.IsTrue(fixture.derivedTearDownCalled);
+ }
+
+ [Test]
+ public void MultipleSetUpAndTearDownMethodsAreCalled()
+ {
+ MultipleSetUpTearDownFixture fixture = new MultipleSetUpTearDownFixture();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.IsTrue(fixture.wasSetUp1Called, "SetUp1");
+ Assert.IsTrue(fixture.wasSetUp2Called, "SetUp2");
+ Assert.IsTrue(fixture.wasSetUp3Called, "SetUp3");
+ Assert.IsTrue(fixture.wasTearDown1Called, "TearDown1");
+ Assert.IsTrue(fixture.wasTearDown2Called, "TearDown2");
+ }
+
+ [Test]
+ public void BaseSetUpIsCalledFirstTearDownLast()
+ {
+ DerivedClassWithSeparateSetUp fixture = new DerivedClassWithSeparateSetUp();
+ TestBuilder.RunTestFixture(fixture);
+
+ Assert.IsTrue(fixture.wasSetUpCalled, "Base SetUp Called");
+ Assert.IsTrue(fixture.wasTearDownCalled, "Base TearDown Called");
+ Assert.IsTrue(fixture.wasDerivedSetUpCalled, "Derived SetUp Called");
+ Assert.IsTrue(fixture.wasDerivedTearDownCalled, "Derived TearDown Called");
+ Assert.IsTrue(fixture.wasBaseSetUpCalledFirst, "SetUp Order");
+ Assert.IsTrue(fixture.wasBaseTearDownCalledLast, "TearDown Order");
+ }
+
+ [Test]
+ public void SetupRecordsOriginalExceptionThownByTestCase()
+ {
+ Exception e = new Exception("Test message for exception thrown from setup");
+ SetupAndTearDownExceptionFixture fixture = new SetupAndTearDownExceptionFixture();
+ fixture.setupException = e;
+ TestResult suiteResult = TestBuilder.RunTestFixture(fixture);
+ Assert.IsTrue(suiteResult.HasChildren, "Fixture test should have child result.");
+ TestResult result = (TestResult)suiteResult.Children[0];
+ Assert.AreEqual(result.ResultState, ResultState.Error, "Test should be in error state");
+ string expected = string.Format("{0} : {1}", e.GetType().FullName, e.Message);
+ Assert.AreEqual(expected, result.Message);
+ }
+
+ [Test]
+ public void TearDownRecordsOriginalExceptionThownByTestCase()
+ {
+ Exception e = new Exception("Test message for exception thrown from tear down");
+ SetupAndTearDownExceptionFixture fixture = new SetupAndTearDownExceptionFixture();
+ fixture.tearDownException = e;
+ TestResult suiteResult = TestBuilder.RunTestFixture(fixture);
+ Assert.That(suiteResult.HasChildren, "Fixture test should have child result.");
+ TestResult result = (TestResult)suiteResult.Children[0];
+ Assert.AreEqual(result.ResultState, ResultState.Error, "Test should be in error state");
+ string expected = string.Format("TearDown : {0} : {1}", e.GetType().FullName, e.Message);
+ Assert.AreEqual(expected, result.Message);
+ }
+
+ public class SetupCallBase
+ {
+ protected int setupCount = 0;
+ public virtual void Init()
+ {
+ setupCount++;
+ }
+ public virtual void AssertCount()
+ {
+ }
+ }
+
+ [TestFixture]
+ // Test for bug 441022
+ public class SetupCallDerived : SetupCallBase
+ {
+ [SetUp]
+ public override void Init()
+ {
+ setupCount++;
+ base.Init();
+ }
+ [Test]
+ public override void AssertCount()
+ {
+ Assert.AreEqual(2, setupCount);
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/SimpleGenericMethods.cs b/NUnitLite-0.9.0/src/tests/Internal/SimpleGenericMethods.cs
new file mode 100755
index 0000000..86f9213
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/SimpleGenericMethods.cs
@@ -0,0 +1,67 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+using System;
+using System.Collections.Generic;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture,Category("Generics")]
+ class SimpleGenericMethods
+ {
+ [TestCase(5, 2, "ABC")]
+ [TestCase(5.0, 2.0, "ABC")]
+ [TestCase(5, 2.0, "ABC")]
+ [TestCase(5.0, 2L, "ABC")]
+ public void GenericTestMethodWithOneTypeParameter<T>(T x, T y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+
+ [TestCase(5, 2, "ABC")]
+ [TestCase(5.0, 2.0, "ABC")]
+ [TestCase(5, 2.0, "ABC")]
+ [TestCase(5.0, 2L, "ABC")]
+ public void GenericTestMethodWithTwoTypeParameters<T1, T2>(T1 x, T2 y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+
+ [TestCase(5, 2, "ABC")]
+ [TestCase(5.0, 2.0, "ABC")]
+ [TestCase(5, 2.0, "ABC")]
+ [TestCase(5.0, 2L, "ABC")]
+ public void GenericTestMethodWithTwoTypeParameters_Reversed<T1, T2>(T2 x, T1 y, string label)
+ {
+ Assert.AreEqual(5, x);
+ Assert.AreEqual(2, y);
+ Assert.AreEqual("ABC", label);
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TestExecutionContextTests.cs b/NUnitLite-0.9.0/src/tests/Internal/TestExecutionContextTests.cs
new file mode 100755
index 0000000..9f8cac7
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TestExecutionContextTests.cs
@@ -0,0 +1,242 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+using System.Globalization;
+using NUnit.Framework;
+#if !NETCF && !SILVERLIGHT
+using System.Security.Principal;
+#endif
+#if !NUNITLITE
+using NUnit.TestData.TestContextData;
+using NUnit.TestUtilities;
+#endif
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Summary description for TestExecutionContextTests.
+ /// </summary>
+ [TestFixture][Property("Question", "Why?")]
+ public class TestExecutionContextTests
+ {
+ TestExecutionContext fixtureContext;
+ TestExecutionContext setupContext;
+
+#if !NETCF
+ CultureInfo currentCulture;
+ CultureInfo currentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ string currentDirectory;
+ IPrincipal currentPrincipal;
+#endif
+
+ [TestFixtureSetUp]
+ public void OneTimeSetUp()
+ {
+ fixtureContext = TestExecutionContext.CurrentContext;
+ }
+
+ [TestFixtureTearDown]
+ public void OneTimeTearDown()
+ {
+ // TODO: We put some tests in one time teardown to verify that
+ // the context is still valid. It would be better if these tests
+ // were placed in a second-level test, invoked from this test class.
+ TestExecutionContext ec = TestExecutionContext.CurrentContext;
+ Assert.That(ec.CurrentTest.Name, Is.EqualTo("TestExecutionContextTests"));
+ Assert.That(ec.CurrentTest.FullName,
+ Is.EqualTo("NUnit.Framework.Internal.TestExecutionContextTests"));
+ Assert.That(fixtureContext.CurrentTest.Id, Is.GreaterThan(0));
+ Assert.That(fixtureContext.CurrentTest.Properties.Get("Question"), Is.EqualTo("Why?"));
+ }
+
+ /// <summary>
+ /// Since we are testing the mechanism that saves and
+ /// restores contexts, we save manually here
+ /// </summary>
+ [SetUp]
+ public void Initialize()
+ {
+ setupContext = new TestExecutionContext(TestExecutionContext.CurrentContext);
+#if !NETCF
+ currentCulture = CultureInfo.CurrentCulture;
+ currentUICulture = CultureInfo.CurrentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ currentDirectory = Environment.CurrentDirectory;
+ currentPrincipal = Thread.CurrentPrincipal;
+#endif
+ }
+
+ [TearDown]
+ public void Cleanup()
+ {
+#if !NETCF
+ Thread.CurrentThread.CurrentCulture = currentCulture;
+ Thread.CurrentThread.CurrentUICulture = currentUICulture;
+#endif
+
+#if !NETCF && !SILVERLIGHT
+ Environment.CurrentDirectory = currentDirectory;
+ Thread.CurrentPrincipal = currentPrincipal;
+#endif
+
+ Assert.That(
+ TestExecutionContext.CurrentContext.CurrentTest.FullName,
+ Is.EqualTo(setupContext.CurrentTest.FullName),
+ "Context at TearDown failed to match that saved from SetUp");
+ }
+
+ [Test]
+ public void FixtureSetUpCanAccessFixtureName()
+ {
+ Assert.That(fixtureContext.CurrentTest.Name, Is.EqualTo("TestExecutionContextTests"));
+ }
+
+ [Test]
+ public void FixtureSetUpCanAccessFixtureFullName()
+ {
+ Assert.That(fixtureContext.CurrentTest.FullName,
+ Is.EqualTo("NUnit.Framework.Internal.TestExecutionContextTests"));
+ }
+
+ [Test]
+ public void FixtureSetUpCanAccessFixtureId()
+ {
+ Assert.That(fixtureContext.CurrentTest.Id, Is.GreaterThan(0));
+ }
+
+ [Test]
+ public void FixtureSetUpCanAccessFixtureProperties()
+ {
+ Assert.That(fixtureContext.CurrentTest.Properties.Get("Question"), Is.EqualTo("Why?"));
+ }
+
+ [Test]
+ public void SetUpCanAccessTestName()
+ {
+ Assert.That(setupContext.CurrentTest.Name, Is.EqualTo("SetUpCanAccessTestName"));
+ }
+
+ [Test]
+ public void SetUpCanAccessTestFullName()
+ {
+ Assert.That(setupContext.CurrentTest.FullName,
+ Is.EqualTo("NUnit.Framework.Internal.TestExecutionContextTests.SetUpCanAccessTestFullName"));
+ }
+
+ [Test]
+ public void SetUpCanAccessTestId()
+ {
+ Assert.That(setupContext.CurrentTest.Id, Is.GreaterThan(0));
+ }
+
+ [Test]
+ [Property("Answer", 42)]
+ public void SetUpCanAccessTestProperties()
+ {
+ Assert.That(setupContext.CurrentTest.Properties.Get("Answer"), Is.EqualTo(42));
+ }
+
+ [Test]
+ public void TestCanAccessItsOwnName()
+ {
+ Assert.That(TestExecutionContext.CurrentContext.CurrentTest.Name, Is.EqualTo("TestCanAccessItsOwnName"));
+ }
+
+ [Test]
+ public void TestCanAccessItsOwnFullName()
+ {
+ Assert.That(TestExecutionContext.CurrentContext.CurrentTest.FullName,
+ Is.EqualTo("NUnit.Framework.Internal.TestExecutionContextTests.TestCanAccessItsOwnFullName"));
+ }
+
+ [Test]
+ public void TestCanAccessItsOwnId()
+ {
+ Assert.That(TestExecutionContext.CurrentContext.CurrentTest.Id, Is.GreaterThan(0));
+ }
+
+ [Test]
+ [Property("Answer", 42)]
+ public void TestCanAccessItsOwnProperties()
+ {
+ Assert.That(TestExecutionContext.CurrentContext.CurrentTest.Properties.Get("Answer"), Is.EqualTo(42));
+ }
+
+#if !NETCF
+ [Test]
+ public void SetAndRestoreCurrentCulture()
+ {
+ Assert.AreEqual(setupContext.CurrentCulture, CultureInfo.CurrentCulture, "Culture not in initial context");
+
+ TestExecutionContext context = setupContext.Save();
+
+ try
+ {
+ CultureInfo otherCulture =
+ new CultureInfo(currentCulture.Name == "fr-FR" ? "en-GB" : "fr-FR");
+ context.CurrentCulture = otherCulture;
+ Assert.AreEqual(otherCulture, CultureInfo.CurrentCulture, "Culture was not set");
+ Assert.AreEqual(otherCulture, context.CurrentCulture, "Culture not in new context");
+ }
+ finally
+ {
+ context = context.Restore();
+ }
+
+ Assert.AreEqual(currentCulture, CultureInfo.CurrentCulture, "Culture was not restored");
+ Assert.AreEqual(currentCulture, context.CurrentCulture, "Culture not in final context");
+ }
+
+ [Test]
+ public void SetAndRestoreCurrentUICulture()
+ {
+ Assert.AreEqual(currentUICulture, setupContext.CurrentUICulture, "UICulture not in initial context");
+
+ TestExecutionContext context = setupContext.Save();
+
+ try
+ {
+ CultureInfo otherCulture =
+ new CultureInfo(currentUICulture.Name == "fr-FR" ? "en-GB" : "fr-FR");
+ context.CurrentUICulture = otherCulture;
+ Assert.AreEqual(otherCulture, CultureInfo.CurrentUICulture, "UICulture was not set");
+ Assert.AreEqual(otherCulture, context.CurrentUICulture, "UICulture not in new context");
+ }
+ finally
+ {
+ context = context.Restore();
+ }
+
+ Assert.AreEqual(currentUICulture, CultureInfo.CurrentUICulture, "UICulture was not restored");
+ Assert.AreEqual(currentUICulture, context.CurrentUICulture, "UICulture not in final context");
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TestFixtureTests.cs b/NUnitLite-0.9.0/src/tests/Internal/TestFixtureTests.cs
new file mode 100755
index 0000000..382d9aa
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TestFixtureTests.cs
@@ -0,0 +1,406 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Api;
+using NUnit.TestData.FixtureSetUpTearDownData;
+using NUnit.TestUtilities;
+using NUnit.TestData.TestFixtureData;
+using IgnoredFixture = NUnit.TestData.TestFixtureData.IgnoredFixture;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Tests of the NUnitTestFixture class
+ /// </summary>
+ [TestFixture]
+ public class TestFixtureTests
+ {
+ private static void CanConstructFrom(Type fixtureType)
+ {
+ CanConstructFrom(fixtureType, fixtureType.Name);
+ }
+
+ private static void CanConstructFrom(Type fixtureType, string expectedName)
+ {
+ TestSuite fixture = TestBuilder.MakeFixture(fixtureType);
+ Assert.AreEqual(expectedName, fixture.Name);
+ Assert.AreEqual(fixtureType.FullName, fixture.FullName);
+ }
+
+ [Test]
+ public void ConstructFromType()
+ {
+ CanConstructFrom(typeof(FixtureWithTestFixtureAttribute));
+ }
+
+ [Test]
+ public void ConstructFromNestedType()
+ {
+ CanConstructFrom(typeof(OuterClass.NestedTestFixture), "OuterClass+NestedTestFixture");
+ }
+
+ [Test]
+ public void ConstructFromDoublyNestedType()
+ {
+ CanConstructFrom(typeof(OuterClass.NestedTestFixture.DoublyNestedTestFixture),
+ "OuterClass+NestedTestFixture+DoublyNestedTestFixture");
+ }
+
+ public void ConstructFromTypeWithoutTestFixtureAttributeContainingTest()
+ {
+ CanConstructFrom(typeof(FixtureWithoutTestFixtureAttributeContainingTest));
+ }
+
+ [Test]
+ public void ConstructFromTypeWithoutTestFixtureAttributeContainingTestCase()
+ {
+ CanConstructFrom(typeof(FixtureWithoutTestFixtureAttributeContainingTestCase));
+ }
+
+ [Test]
+ public void ConstructFromTypeWithoutTestFixtureAttributeContainingTestCaseSource()
+ {
+ CanConstructFrom(typeof(FixtureWithoutTestFixtureAttributeContainingTestCaseSource));
+ }
+
+#if !NUNITLITE
+ [Test]
+ public void ConstructFromTypeWithoutTestFixtureAttributeContainingTheory()
+ {
+ CanConstructFrom(typeof(FixtureWithoutTestFixtureAttributeContainingTheory));
+ }
+#endif
+
+ [Test]
+ public void CannotRunConstructorWithArgsNotSupplied()
+ {
+ TestAssert.IsNotRunnable(typeof(NoDefaultCtorFixture));
+ }
+
+ [Test]
+ public void CanRunConstructorWithArgsSupplied()
+ {
+ TestAssert.IsRunnable(typeof(FixtureWithArgsSupplied), ResultState.Success);
+ }
+
+ [Test]
+ public void CannotRunBadConstructor()
+ {
+ TestAssert.IsNotRunnable(typeof(BadCtorFixture));
+ }
+
+ [Test]
+ public void CanRunMultipleSetUp()
+ {
+ TestAssert.IsRunnable(typeof(MultipleSetUpAttributes), ResultState.Success);
+ }
+
+ [Test]
+ public void CanRunMultipleTearDown()
+ {
+ TestAssert.IsRunnable(typeof(MultipleTearDownAttributes), ResultState.Success);
+ }
+
+ [Test]
+ public void CannotRunIgnoredFixture()
+ {
+ TestSuite suite = TestBuilder.MakeFixture( typeof( IgnoredFixture ) );
+ Assert.AreEqual( RunState.Ignored, suite.RunState );
+ Assert.AreEqual( "testing ignore a fixture", suite.Properties.Get(PropertyNames.SkipReason) );
+ }
+
+// [Test]
+// public void CannotRunAbstractFixture()
+// {
+// TestAssert.IsNotRunnable(typeof(AbstractTestFixture));
+// }
+
+ [Test]
+ public void CanRunFixtureDerivedFromAbstractTestFixture()
+ {
+ TestAssert.IsRunnable(typeof(DerivedFromAbstractTestFixture), ResultState.Success);
+ }
+
+ [Test]
+ public void CanRunFixtureDerivedFromAbstractDerivedTestFixture()
+ {
+ TestAssert.IsRunnable(typeof(DerivedFromAbstractDerivedTestFixture), ResultState.Success);
+ }
+
+// [Test]
+// public void CannotRunAbstractDerivedFixture()
+// {
+// TestAssert.IsNotRunnable(typeof(AbstractDerivedTestFixture));
+// }
+
+ [Test]
+ public void FixtureInheritingTwoTestFixtureAttributesIsLoadedOnlyOnce()
+ {
+ TestSuite suite = TestBuilder.MakeFixture(typeof(DoubleDerivedClassWithTwoInheritedAttributes));
+ Assert.That(suite, Is.TypeOf(typeof(TestFixture)));
+ Assert.That(suite.Tests.Count, Is.EqualTo(0));
+ }
+
+ [Test]
+ public void CanRunMultipleTestFixtureSetUp()
+ {
+ TestAssert.IsRunnable(typeof(MultipleFixtureSetUpAttributes), ResultState.Success);
+ }
+
+ [Test]
+ public void CanRunMultipleTestFixtureTearDown()
+ {
+ TestAssert.IsRunnable(typeof(MultipleFixtureTearDownAttributes), ResultState.Success);
+ }
+
+ [Test]
+ public void CanRunTestFixtureWithNoTests()
+ {
+ TestAssert.IsRunnable(typeof(FixtureWithNoTests), ResultState.Success);
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void ConstructFromStaticTypeWithoutTestFixtureAttribute()
+ {
+ CanConstructFrom(typeof(StaticFixtureWithoutTestFixtureAttribute));
+ }
+
+ [Test]
+ public void CanRunStaticFixture()
+ {
+ TestAssert.IsRunnable(typeof(StaticFixtureWithoutTestFixtureAttribute), ResultState.Success);
+ }
+
+#if !NETCF
+ [Test, Platform(Exclude = "NETCF", Reason = "NYI")]
+ public void CanRunGenericFixtureWithProperArgsProvided()
+ {
+ TestSuite suite = TestBuilder.MakeFixture(
+ typeof(NUnit.TestData.TestFixtureData.GenericFixtureWithProperArgsProvided<>));
+ Assert.That(suite.RunState, Is.EqualTo(RunState.Runnable));
+ Assert.That(suite is ParameterizedFixtureSuite);
+ Assert.That(suite.Tests.Count, Is.EqualTo(2));
+ }
+
+// [Test]
+// public void CannotRunGenericFixtureWithNoTestFixtureAttribute()
+// {
+// TestSuite suite = TestBuilder.MakeFixture(
+// GetTestDataType("NUnit.TestData.TestFixtureData.GenericFixtureWithNoTestFixtureAttribute`1"));
+//
+// Assert.That(suite.RunState, Is.EqualTo(RunState.NotRunnable));
+// Assert.That(suite.Properties.Get(PropertyNames.SkipReason),
+// Is.StringStarting("Fixture type contains generic parameters"));
+// }
+
+ [Test, Platform(Exclude = "NETCF", Reason = "NYI")]
+ public void CannotRunGenericFixtureWithNoArgsProvided()
+ {
+ TestSuite suite = TestBuilder.MakeFixture(
+ typeof(NUnit.TestData.TestFixtureData.GenericFixtureWithNoArgsProvided<>));
+
+ Test fixture = (Test)suite.Tests[0];
+ Assert.That(fixture.RunState, Is.EqualTo(RunState.NotRunnable));
+ Assert.That((string)fixture.Properties.Get(PropertyNames.SkipReason), Is.StringStarting("Fixture type contains generic parameters"));
+ }
+
+ [Test, Platform(Exclude = "NETCF", Reason = "NYI")]
+ public void CannotRunGenericFixtureDerivedFromAbstractFixtureWithNoArgsProvided()
+ {
+ TestSuite suite = TestBuilder.MakeFixture(
+ typeof(NUnit.TestData.TestFixtureData.GenericFixtureDerivedFromAbstractFixtureWithNoArgsProvided<>));
+ TestAssert.IsNotRunnable((Test)suite.Tests[0]);
+ }
+
+ [Test, Platform(Exclude = "NETCF", Reason = "NYI")]
+ public void CanRunGenericFixtureDerivedFromAbstractFixtureWithArgsProvided()
+ {
+ TestSuite suite = TestBuilder.MakeFixture(
+ typeof(NUnit.TestData.TestFixtureData.GenericFixtureDerivedFromAbstractFixtureWithArgsProvided<>));
+ Assert.That(suite.RunState, Is.EqualTo(RunState.Runnable));
+ Assert.That(suite is ParameterizedFixtureSuite);
+ Assert.That(suite.Tests.Count, Is.EqualTo(2));
+ }
+#endif
+#endif
+
+ #region SetUp Signature
+ [Test]
+ public void CannotRunPrivateSetUp()
+ {
+ TestAssert.IsNotRunnable(typeof(PrivateSetUp));
+ }
+
+#if !SL_3_0 && !SL_4_0
+ [Test]
+ public void CanRunProtectedSetUp()
+ {
+ TestAssert.IsRunnable(typeof(ProtectedSetUp), ResultState.Success);
+ }
+#endif
+
+ /// <summary>
+ /// Determines whether this instance [can run static set up].
+ /// </summary>
+ [Test]
+ public void CanRunStaticSetUp()
+ {
+ TestAssert.IsRunnable(typeof(StaticSetUp), ResultState.Success);
+ }
+
+ [Test]
+ public void CannotRunSetupWithReturnValue()
+ {
+ TestAssert.IsNotRunnable(typeof(SetUpWithReturnValue));
+ }
+
+ [Test]
+ public void CannotRunSetupWithParameters()
+ {
+ TestAssert.IsNotRunnable(typeof(SetUpWithParameters));
+ }
+ #endregion
+
+ #region TearDown Signature
+ [Test]
+ public void CannotRunPrivateTearDown()
+ {
+ TestAssert.IsNotRunnable(typeof(PrivateTearDown));
+ }
+
+#if !SL_3_0 && !SL_4_0
+ [Test]
+ public void CanRunProtectedTearDown()
+ {
+ TestAssert.IsRunnable(typeof(ProtectedTearDown), ResultState.Success);
+ }
+#endif
+
+ [Test]
+ public void CanRunStaticTearDown()
+ {
+ TestAssert.IsRunnable(typeof(StaticTearDown), ResultState.Success);
+ }
+
+ [Test]
+ public void CannotRunTearDownWithReturnValue()
+ {
+ TestAssert.IsNotRunnable(typeof(TearDownWithReturnValue));
+ }
+
+ [Test]
+ public void CannotRunTearDownWithParameters()
+ {
+ TestAssert.IsNotRunnable(typeof(TearDownWithParameters));
+ }
+ #endregion
+
+ #region TestFixtureSetUp Signature
+ [Test]
+ public void CannotRunPrivateFixtureSetUp()
+ {
+ TestAssert.IsNotRunnable(typeof(PrivateFixtureSetUp));
+ }
+
+#if !SL_3_0 && !SL_4_0
+ [Test]
+ public void CanRunProtectedFixtureSetUp()
+ {
+ TestAssert.IsRunnable(typeof(ProtectedFixtureSetUp), ResultState.Success);
+ }
+#endif
+
+ [Test]
+ public void CanRunStaticFixtureSetUp()
+ {
+ TestAssert.IsRunnable(typeof(StaticFixtureSetUp), ResultState.Success);
+ }
+
+ [Test]
+ public void CannotRunFixtureSetupWithReturnValue()
+ {
+ TestAssert.IsNotRunnable(typeof(FixtureSetUpWithReturnValue));
+ }
+
+ [Test]
+ public void CannotRunFixtureSetupWithParameters()
+ {
+ TestAssert.IsNotRunnable(typeof(FixtureSetUpWithParameters));
+ }
+ #endregion
+
+ #region TestFixtureTearDown Signature
+
+ [Test]
+ public void CannotRunPrivateFixtureTearDown()
+ {
+ TestAssert.IsNotRunnable(typeof(PrivateFixtureTearDown));
+ }
+
+#if !SL_3_0 && !SL_4_0
+ [Test]
+ public void CanRunProtectedFixtureTearDown()
+ {
+ TestAssert.IsRunnable(typeof(ProtectedFixtureTearDown), ResultState.Success);
+ }
+#endif
+
+ [Test]
+ public void CanRunStaticFixtureTearDown()
+ {
+ TestAssert.IsRunnable(typeof(StaticFixtureTearDown), ResultState.Success);
+ }
+
+// [TestFixture]
+// [Category("fixture category")]
+// [Category("second")]
+// private class HasCategories
+// {
+// [Test] public void OneTest()
+// {}
+// }
+//
+// [Test]
+// public void LoadCategories()
+// {
+// TestSuite fixture = LoadFixture("NUnit.Core.Tests.TestFixtureBuilderTests+HasCategories");
+// Assert.IsNotNull(fixture);
+// Assert.AreEqual(2, fixture.Categories.Count);
+// }
+
+ [Test]
+ public void CannotRunFixtureTearDownWithReturnValue()
+ {
+ TestAssert.IsNotRunnable(typeof(FixtureTearDownWithReturnValue));
+ }
+
+ [Test]
+ public void CannotRunFixtureTearDownWithParameters()
+ {
+ TestAssert.IsNotRunnable(typeof(FixtureTearDownWithParameters));
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TestMethodSignatureTests.cs b/NUnitLite-0.9.0/src/tests/Internal/TestMethodSignatureTests.cs
new file mode 100755
index 0000000..125f4be
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TestMethodSignatureTests.cs
@@ -0,0 +1,198 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Api;
+using NUnit.TestData.TestMethodSignatureFixture;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class TestMethodSignatureTests
+ {
+ private static Type fixtureType = typeof(TestMethodSignatureFixture);
+
+ [Test]
+ public void InstanceTestMethodIsRunnable()
+ {
+ TestAssert.IsRunnable(fixtureType, "InstanceTestMethod", ResultState.Success);
+ }
+
+ [Test]
+ public void StaticTestMethodIsRunnable()
+ {
+ TestAssert.IsRunnable(fixtureType, "StaticTestMethod", ResultState.Success);
+ }
+
+ [Test]
+ public void TestMethodWithoutParametersWithArgumentsProvidedIsNotRunnable()
+ {
+ TestAssert.FirstChildIsNotRunnable(fixtureType, "TestMethodWithoutParametersWithArgumentsProvided");
+ }
+
+ [Test]
+ public void TestMethodWithArgumentsNotProvidedIsNotRunnable()
+ {
+ TestAssert.IsNotRunnable(fixtureType, "TestMethodWithArgumentsNotProvided");
+ }
+
+ [Test]
+ public void TestMethodWithArgumentsProvidedIsRunnable()
+ {
+ TestAssert.IsRunnable(fixtureType, "TestMethodWithArgumentsProvided", ResultState.Success);
+ }
+
+ [Test]
+ public void TestMethodWithWrongNumberOfArgumentsProvidedIsNotRunnable()
+ {
+ TestAssert.FirstChildIsNotRunnable(fixtureType, "TestMethodWithWrongNumberOfArgumentsProvided");
+ }
+
+ [Test]
+ public void TestMethodWithWrongArgumentTypesProvidedGivesError()
+ {
+ TestAssert.IsRunnable(fixtureType, "TestMethodWithWrongArgumentTypesProvided", ResultState.Error);
+ }
+
+ [Test]
+ public void StaticTestMethodWithArgumentsNotProvidedIsNotRunnable()
+ {
+ TestAssert.IsNotRunnable(fixtureType, "StaticTestMethodWithArgumentsNotProvided");
+ }
+
+ [Test]
+ public void StaticTestMethodWithArgumentsProvidedIsRunnable()
+ {
+ TestAssert.IsRunnable(fixtureType, "StaticTestMethodWithArgumentsProvided", ResultState.Success);
+ }
+
+ [Test]
+ public void StaticTestMethodWithWrongNumberOfArgumentsProvidedIsNotRunnable()
+ {
+ TestAssert.FirstChildIsNotRunnable(fixtureType, "StaticTestMethodWithWrongNumberOfArgumentsProvided");
+ }
+
+ [Test]
+ public void StaticTestMethodWithWrongArgumentTypesProvidedGivesError()
+ {
+ TestAssert.IsRunnable(fixtureType, "StaticTestMethodWithWrongArgumentTypesProvided", ResultState.Error);
+ }
+
+ [Test]
+ public void TestMethodWithConvertibleArgumentsIsRunnable()
+ {
+ TestAssert.IsRunnable(fixtureType, "TestMethodWithConvertibleArguments", ResultState.Success);
+ }
+
+ [Test]
+ public void TestMethodWithNonConvertibleArgumentsGivesError()
+ {
+ TestAssert.IsRunnable(fixtureType, "TestMethodWithNonConvertibleArguments", ResultState.Error);
+ }
+
+ [Test]
+ public void ProtectedTestMethodIsNotRunnable()
+ {
+ TestAssert.IsNotRunnable( fixtureType, "ProtectedTestMethod" );
+ }
+
+ [Test]
+ public void PrivateTestMethodIsNotRunnable()
+ {
+ TestAssert.IsNotRunnable( fixtureType, "PrivateTestMethod" );
+ }
+
+ [Test]
+ public void TestMethodWithReturnTypeIsNotRunnable()
+ {
+ TestAssert.IsNotRunnable( fixtureType, "TestMethodWithReturnType" );
+ }
+
+ [Test]
+ public void TestMethodWithMultipleTestCasesExecutesMultipleTimes()
+ {
+ ITestResult result = TestBuilder.RunTestCase(fixtureType, "TestMethodWithMultipleTestCases");
+
+ Assert.That( result.ResultState, Is.EqualTo(ResultState.Success) );
+ ResultSummary summary = new ResultSummary(result);
+ Assert.That(summary.TestsRun, Is.EqualTo(3));
+ }
+
+ [Test]
+ public void TestMethodWithMultipleTestCasesUsesCorrectNames()
+ {
+ string name = "TestMethodWithMultipleTestCases";
+ string fullName = typeof (TestMethodSignatureFixture).FullName + "." + name;
+
+ TestSuite suite = TestBuilder.MakeParameterizedMethodSuite(fixtureType, name);
+ Assert.That(suite.TestCaseCount, Is.EqualTo(3));
+
+ string[] names = new string[suite.Tests.Count];
+ string[] fullNames = new string[suite.Tests.Count];
+
+ int index = 0;
+ foreach (Test test in suite.Tests)
+ {
+ names[index] = test.Name;
+ fullNames[index] = test.FullName;
+ index++;
+ }
+
+ Assert.That(names, Has.Member(name + "(12,3,4)"));
+ Assert.That(names, Has.Member(name + "(12,2,6)"));
+ Assert.That(names, Has.Member(name + "(12,4,3)"));
+
+ Assert.That(fullNames, Has.Member(fullName + "(12,3,4)"));
+ Assert.That(fullNames, Has.Member(fullName + "(12,2,6)"));
+ Assert.That(fullNames, Has.Member(fullName + "(12,4,3)"));
+ }
+
+ [Test]
+ public void RunningTestsThroughFixtureGivesCorrectResults()
+ {
+ ITestResult result = TestBuilder.RunTestFixture(fixtureType);
+ ResultSummary summary = new ResultSummary(result);
+
+ Assert.That(
+ summary.ResultCount,
+ Is.EqualTo(TestMethodSignatureFixture.Tests));
+ Assert.That(
+ summary.TestsRun,
+ Is.EqualTo(TestMethodSignatureFixture.Runnable));
+ //Assert.That(
+ // summary.NotRunnable,
+ // Is.EqualTo(TestMethodSignatureFixture.NotRunnable));
+ //Assert.That(
+ // summary.Errors,
+ // Is.EqualTo(TestMethodSignatureFixture.Errors));
+ Assert.That(
+ summary.Failures,
+ Is.EqualTo(TestMethodSignatureFixture.Failures + TestMethodSignatureFixture.Errors));
+ Assert.That(
+ summary.TestsNotRun,
+ Is.EqualTo(TestMethodSignatureFixture.NotRunnable));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TestResultTests.cs b/NUnitLite-0.9.0/src/tests/Internal/TestResultTests.cs
new file mode 100755
index 0000000..89ab1f2
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TestResultTests.cs
@@ -0,0 +1,680 @@
+// ***********************************************************************
+// Copyright (c) 2010 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System.IO;
+using System.Text;
+using NUnit.Framework.Api;
+using NUnit.TestUtilities;
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ /// <summary>
+ /// Summary description for TestResultTests.
+ /// </summary>
+ [TestFixture]
+ public abstract class TestResultTests
+ {
+ protected TestResult testResult;
+ protected TestResult suiteResult;
+ protected TestMethod test;
+
+ protected string ignoredChildMessage = "One or more child tests were ignored";
+ protected string failingChildMessage = "One or more child tests had errors";
+
+ [SetUp]
+ public void SetUp()
+ {
+ TestSuite suite = new TestSuite(typeof(DummySuite));
+ suite.Properties.Set(PropertyNames.Description, "Suite description");
+ suite.Properties.Add(PropertyNames.Category, "Fast");
+ suite.Properties.Add("Value", 3);
+ suiteResult = suite.MakeTestResult();
+
+ test = new TestMethod(typeof(DummySuite).GetMethod("DummyMethod"), suite);
+ test.Properties.Set(PropertyNames.Description, "Test description");
+ test.Properties.Add(PropertyNames.Category, "Dubious");
+ test.Properties.Set("Priority", "low");
+ testResult = test.MakeTestResult();
+
+ SimulateTestRun();
+ }
+
+ [Test]
+ public void TestResultBasicInfo()
+ {
+ Assert.AreEqual("DummyMethod", testResult.Name);
+ Assert.AreEqual("NUnit.Framework.Internal.TestResultTests+DummySuite.DummyMethod", testResult.FullName);
+ }
+
+ [Test]
+ public void SuiteResultBasicInfo()
+ {
+ Assert.AreEqual("TestResultTests+DummySuite", suiteResult.Name);
+ Assert.AreEqual("NUnit.Framework.Internal.TestResultTests+DummySuite", suiteResult.FullName);
+ }
+
+ [Test]
+ public void TestResultBasicInfo_XmlNode()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ //Assert.True(testNode is XmlElement);
+ Assert.NotNull(testNode.Attributes["id"]);
+ Assert.AreEqual("test-case", testNode.Name);
+ Assert.AreEqual("DummyMethod", testNode.Attributes["name"]);
+ Assert.AreEqual("NUnit.Framework.Internal.TestResultTests+DummySuite.DummyMethod", testNode.Attributes["fullname"]);
+
+ Assert.AreEqual("Test description", testNode.FindDescendant("properties/property[@name='Description']").Attributes["value"]);
+ Assert.AreEqual("Dubious", testNode.FindDescendant("properties/property[@name='Category']").Attributes["value"]);
+ Assert.AreEqual("low", testNode.FindDescendant("properties/property[@name='Priority']").Attributes["value"]);
+
+ Assert.AreEqual(0, testNode.FindDescendants("test-case").Count);
+ }
+
+ [Test]
+ public void TestResultBasicInfo_WriteXml()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ string expected = GenerateExpectedXml(testResult);
+
+ StringBuilder actual = new StringBuilder();
+ StringWriter sw = new StringWriter(actual);
+#if CLR_2_0 || CLR_4_0
+ System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
+ settings.CloseOutput = true;
+ settings.ConformanceLevel = System.Xml.ConformanceLevel.Fragment;
+ System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(sw, settings);
+#else
+ System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(sw);
+#endif
+ testNode.WriteTo(writer);
+ writer.Close();
+
+ Assert.That(actual.ToString(), Is.EqualTo(expected));
+ }
+
+ [Test]
+ public void SuiteResultBasicInfo_XmlNode()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ //Assert.True(suiteNode is XmlElement);
+ Assert.NotNull(suiteNode.Attributes["id"]);
+ Assert.AreEqual("test-suite", suiteNode.Name);
+ Assert.AreEqual("TestResultTests+DummySuite", suiteNode.Attributes["name"]);
+ Assert.AreEqual("NUnit.Framework.Internal.TestResultTests+DummySuite", suiteNode.Attributes["fullname"]);
+
+ Assert.AreEqual("Suite description", suiteNode.FindDescendant("properties/property[@name='Description']").Attributes["value"]);
+ Assert.AreEqual("Fast", suiteNode.FindDescendant("properties/property[@name='Category']").Attributes["value"]);
+ Assert.AreEqual("3", suiteNode.FindDescendant("properties/property[@name='Value']").Attributes["value"]);
+ }
+
+ [Test]
+ public void SuiteResultBasicInfo_WriteXml()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ string expected = GenerateExpectedXml(suiteResult);
+
+ StringBuilder actual = new StringBuilder();
+ StringWriter sw = new StringWriter(actual);
+#if CLR_2_0 || CLR_4_0
+ System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
+ settings.CloseOutput = true;
+ settings.ConformanceLevel = System.Xml.ConformanceLevel.Fragment;
+ System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(sw, settings);
+#else
+ System.Xml.XmlWriter writer = new System.Xml.XmlTextWriter(sw);
+#endif
+ suiteNode.WriteTo(writer);
+ writer.Close();
+
+ Assert.That(actual.ToString(), Is.EqualTo(expected));
+ }
+
+ protected abstract void SimulateTestRun();
+
+ private static string GenerateExpectedXml(TestResult result)
+ {
+ StringBuilder expected = new StringBuilder();
+ TestSuiteResult suiteResult = result as TestSuiteResult;
+
+ if(suiteResult != null)
+ expected.Append("<test-suite type=" + Quoted("TestSuite"));
+ else
+ expected.Append("<test-case");
+
+ expected.Append(" id=" + Quoted(result.Test.Id));
+ expected.Append(" name=" + Quoted(result.Name));
+ expected.Append(" fullname=" + Quoted(result.FullName));
+
+ if (suiteResult != null)
+ expected.Append(" testcasecount=" + Quoted(result.Test.TestCaseCount));
+
+ expected.Append(" result=" + Quoted(result.ResultState.Status));
+ if (result.ResultState.Label != null && result.ResultState.Label != "")
+ expected.Append(" label=" + Quoted(result.ResultState.Label));
+
+ expected.Append(" time=" + Quoted(result.Duration.ToString()));
+
+ if (suiteResult != null)
+ {
+ ResultSummary summary = new ResultSummary(suiteResult);
+ expected.Append(" total=" + Quoted(suiteResult.PassCount+suiteResult.FailCount+suiteResult.InconclusiveCount+suiteResult.SkipCount));
+ expected.Append(" passed=" + Quoted(suiteResult.PassCount));
+ expected.Append(" failed=" + Quoted(suiteResult.FailCount));
+ expected.Append(" inconclusive=" + Quoted(suiteResult.InconclusiveCount));
+ expected.Append(" skipped=" + Quoted(suiteResult.SkipCount));
+ }
+
+ expected.Append(" asserts=" + Quoted(result.AssertCount) + ">");
+
+ if (result.Test.Properties.Count > 0)
+ {
+ expected.Append("<properties>");
+ foreach (string key in result.Test.Properties.Keys)
+ foreach (object value in result.Test.Properties[key])
+ expected.Append("<property name=" + Quoted(key) + " value=" + Quoted(value) + " />");
+ expected.Append("</properties>");
+ }
+
+ if (result.ResultState.Status == TestStatus.Failed)
+ {
+ expected.Append("<failure>");
+ if (result.Message != null)
+ expected.Append("<message>" + Escape(result.Message) + "</message>");
+
+ if (result.StackTrace != null)
+ expected.Append("<stack-trace>" + Escape(result.StackTrace) + "</stack-trace>");
+
+ expected.Append("</failure>");
+ }
+ else if (result.Message != null)
+ {
+ expected.Append("<reason><message>" + Escape(result.Message) + "</message></reason>");
+ }
+
+ if (suiteResult != null)
+ {
+ foreach (TestResult childResult in suiteResult.Children)
+ expected.Append(GenerateExpectedXml(childResult));
+
+ expected.Append("</test-suite>");
+ }
+ else
+ expected.Append("</test-case>");
+
+ return expected.ToString();
+ }
+
+ private static string Quoted(object o)
+ {
+ return "\"" + o.ToString() + "\"";
+ }
+
+ private static string Escape(string s)
+ {
+ return s
+ .Replace("&", "&amp;")
+ .Replace(">", "&gt;")
+ .Replace("<", "&lt;")
+ .Replace("\"", "&quot;")
+ .Replace("'", "&apos;");
+ }
+
+ public class DummySuite
+ {
+ public void DummyMethod() { }
+ }
+ }
+
+ public class DefaultResultTests : TestResultTests
+ {
+ protected override void SimulateTestRun()
+ {
+ suiteResult.AddResult(testResult);
+ }
+
+ [Test]
+ public void TestResultIsInconclusive()
+ {
+ Assert.AreEqual(ResultState.Inconclusive, testResult.ResultState);
+ Assert.AreEqual(TestStatus.Inconclusive, testResult.ResultState.Status);
+ Assert.That(testResult.ResultState.Label, Is.Empty);
+ Assert.That(testResult.Duration, Is.EqualTo(TimeSpan.Zero));
+ }
+
+ [Test]
+ public void SuiteResultIsInconclusive()
+ {
+ Assert.AreEqual(ResultState.Inconclusive, suiteResult.ResultState);
+ Assert.AreEqual(0, suiteResult.AssertCount);
+ }
+
+ [Test]
+ public void TestResultXmlNodeIsInconclusive()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ Assert.AreEqual("Inconclusive", testNode.Attributes["result"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeIsInconclusive()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual("Inconclusive", suiteNode.Attributes["result"]);
+ Assert.AreEqual("0", suiteNode.Attributes["passed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["failed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["skipped"]);
+ Assert.AreEqual("1", suiteNode.Attributes["inconclusive"]);
+ Assert.AreEqual("0", suiteNode.Attributes["asserts"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeHasOneChildTest()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual(1, suiteNode.FindDescendants("test-case").Count);
+ }
+ }
+
+ public class SuccessResultTests : TestResultTests
+ {
+ protected override void SimulateTestRun()
+ {
+ testResult.SetResult(ResultState.Success, "Test passed!");
+ testResult.Duration = TimeSpan.FromSeconds(0.125);
+ suiteResult.Duration = TimeSpan.FromSeconds(0.125);
+ testResult.AssertCount = 2;
+ suiteResult.AddResult(testResult);
+ }
+
+ [Test]
+ public void TestResultIsSuccess()
+ {
+ Assert.True(testResult.ResultState == ResultState.Success);
+ Assert.AreEqual(TestStatus.Passed, testResult.ResultState.Status);
+ Assert.That(testResult.ResultState.Label, Is.Empty);
+ Assert.AreEqual("Test passed!", testResult.Message);
+ Assert.That(testResult.Duration.TotalSeconds, Is.EqualTo(0.125));
+ }
+
+ [Test]
+ public void SuiteResultIsSuccess()
+ {
+ Assert.True(suiteResult.ResultState == ResultState.Success);
+ Assert.AreEqual(TestStatus.Passed, suiteResult.ResultState.Status);
+ Assert.That(suiteResult.ResultState.Label, Is.Empty);
+
+ Assert.AreEqual(1, suiteResult.PassCount);
+ Assert.AreEqual(0, suiteResult.FailCount);
+ Assert.AreEqual(0, suiteResult.SkipCount);
+ Assert.AreEqual(0, suiteResult.InconclusiveCount);
+ Assert.AreEqual(2, suiteResult.AssertCount);
+ }
+
+ [Test]
+ public void TestResultXmlNodeIsSuccess()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ Assert.AreEqual("Passed", testNode.Attributes["result"]);
+ Assert.AreEqual("00:00:00.1250000", testNode.Attributes["time"]);
+ Assert.AreEqual("2", testNode.Attributes["asserts"]);
+
+ XmlNode reason = testNode.FindDescendant("reason");
+ Assert.NotNull(reason);
+ Assert.NotNull(reason.FindDescendant("message"));
+ Assert.AreEqual("Test passed!", reason.FindDescendant("message").TextContent);
+ Assert.AreEqual("Test passed!", reason.FindDescendant("message").EscapedTextContent);
+ Assert.Null(reason.FindDescendant("stack-trace"));
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeIsSuccess()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual("Passed", suiteNode.Attributes["result"]);
+ Assert.AreEqual("00:00:00.1250000", suiteNode.Attributes["time"]);
+ Assert.AreEqual("1", suiteNode.Attributes["passed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["failed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["skipped"]);
+ Assert.AreEqual("0", suiteNode.Attributes["inconclusive"]);
+ Assert.AreEqual("2", suiteNode.Attributes["asserts"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeHasOneChildTest()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual(1, suiteNode.FindDescendants("test-case").Count);
+ }
+ }
+
+ public class IgnoredResultTests : TestResultTests
+ {
+ protected override void SimulateTestRun()
+ {
+ testResult.SetResult(ResultState.Ignored, "because");
+ suiteResult.AddResult(testResult);
+ }
+
+ [Test]
+ public void TestResultIsIgnored()
+ {
+ Assert.AreEqual(ResultState.Ignored, testResult.ResultState);
+ Assert.AreEqual(TestStatus.Skipped, testResult.ResultState.Status);
+ Assert.AreEqual("Ignored", testResult.ResultState.Label);
+ Assert.AreEqual("because", testResult.Message);
+ }
+
+ [Test]
+ public void SuiteResultIsIgnored()
+ {
+ Assert.AreEqual(ResultState.Ignored, suiteResult.ResultState);
+ Assert.AreEqual(TestStatus.Skipped, suiteResult.ResultState.Status);
+ Assert.AreEqual(ignoredChildMessage, suiteResult.Message);
+
+ Assert.AreEqual(0, suiteResult.PassCount);
+ Assert.AreEqual(0, suiteResult.FailCount);
+ Assert.AreEqual(1, suiteResult.SkipCount);
+ Assert.AreEqual(0, suiteResult.InconclusiveCount);
+ Assert.AreEqual(0, suiteResult.AssertCount);
+ }
+
+ [Test]
+ public void TestResultXmlNodeIsIgnored()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ Assert.AreEqual("Skipped", testNode.Attributes["result"]);
+ Assert.AreEqual("Ignored", testNode.Attributes["label"]);
+ XmlNode reason = testNode.FindDescendant("reason");
+ Assert.NotNull(reason);
+ Assert.NotNull(reason.FindDescendant("message"));
+ Assert.AreEqual("because", reason.FindDescendant("message").TextContent);
+ Assert.AreEqual("because", reason.FindDescendant("message").EscapedTextContent);
+ Assert.Null(reason.FindDescendant("stack-trace"));
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeIsIgnored()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual("Skipped", suiteNode.Attributes["result"]);
+ Assert.AreEqual("Ignored", suiteNode.Attributes["label"]);
+ Assert.AreEqual("0", suiteNode.Attributes["passed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["failed"]);
+ Assert.AreEqual("1", suiteNode.Attributes["skipped"]);
+ Assert.AreEqual("0", suiteNode.Attributes["inconclusive"]);
+ Assert.AreEqual("0", suiteNode.Attributes["asserts"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeHasOneChildTest()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual(1, suiteNode.FindDescendants("test-case").Count);
+ }
+ }
+
+ public class FailedResultTests : TestResultTests
+ {
+ protected override void SimulateTestRun()
+ {
+ testResult.SetResult(ResultState.Failure, "message with <xml> & straight text", "stack trace");
+ testResult.Duration = TimeSpan.FromSeconds(0.125);
+ suiteResult.Duration = TimeSpan.FromSeconds(0.125);
+ testResult.AssertCount = 3;
+ suiteResult.AddResult(testResult);
+ }
+
+ [Test]
+ public void TestResultIsFailure()
+ {
+ Assert.AreEqual(ResultState.Failure, testResult.ResultState);
+ Assert.AreEqual(TestStatus.Failed, testResult.ResultState.Status);
+ Assert.AreEqual("message with <xml> & straight text", testResult.Message);
+ Assert.AreEqual("stack trace", testResult.StackTrace);
+ Assert.AreEqual(0.125, testResult.Duration.TotalSeconds);
+ }
+
+ [Test]
+ public void SuiteResultIsFailure()
+ {
+ Assert.AreEqual(ResultState.Failure, suiteResult.ResultState);
+ Assert.AreEqual(TestStatus.Failed, suiteResult.ResultState.Status);
+ Assert.AreEqual(failingChildMessage, suiteResult.Message);
+ Assert.Null(suiteResult.StackTrace);
+
+ Assert.AreEqual(0, suiteResult.PassCount);
+ Assert.AreEqual(1, suiteResult.FailCount);
+ Assert.AreEqual(0, suiteResult.SkipCount);
+ Assert.AreEqual(0, suiteResult.InconclusiveCount);
+ Assert.AreEqual(3, suiteResult.AssertCount);
+ }
+
+ [Test]
+ public void TestResultXmlNodeIsFailure()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ Assert.AreEqual("Failed", testNode.Attributes["result"]);
+ Assert.AreEqual("00:00:00.1250000", testNode.Attributes["time"]);
+
+ XmlNode failureNode = testNode.FindDescendant("failure");
+ Assert.NotNull(failureNode, "No <failure> element found");
+
+ XmlNode messageNode = failureNode.FindDescendant("message");
+ Assert.NotNull(messageNode, "No <message> element found");
+ Assert.AreEqual("message with <xml> & straight text", messageNode.TextContent);
+ Assert.AreEqual("message with &lt;xml&gt; &amp; straight text", messageNode.EscapedTextContent);
+
+ XmlNode stacktraceNode = failureNode.FindDescendant("stack-trace");
+ Assert.NotNull(stacktraceNode, "No <stack-trace> element found");
+ Assert.AreEqual("stack trace", stacktraceNode.TextContent);
+ Assert.AreEqual("stack trace", stacktraceNode.EscapedTextContent);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeIsFailure()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual("Failed", suiteNode.Attributes["result"]);
+ Assert.AreEqual("00:00:00.1250000", suiteNode.Attributes["time"]);
+
+ XmlNode failureNode = suiteNode.FindDescendant("failure");
+ Assert.NotNull(failureNode, "No <failure> element found");
+
+ XmlNode messageNode = failureNode.FindDescendant("message");
+ Assert.NotNull(messageNode, "No <message> element found");
+ Assert.AreEqual(failingChildMessage, messageNode.TextContent);
+ Assert.AreEqual(failingChildMessage, messageNode.EscapedTextContent);
+
+ XmlNode stacktraceNode = failureNode.FindDescendant("stacktrace");
+ Assert.Null(stacktraceNode, "Unexpected <stack-trace> element found");
+
+ Assert.AreEqual("0", suiteNode.Attributes["passed"]);
+ Assert.AreEqual("1", suiteNode.Attributes["failed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["skipped"]);
+ Assert.AreEqual("0", suiteNode.Attributes["inconclusive"]);
+ Assert.AreEqual("3", suiteNode.Attributes["asserts"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeHasOneChildTest()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual(1, suiteNode.FindDescendants("test-case").Count);
+ }
+ }
+
+ public class InconclusiveResultTests : TestResultTests
+ {
+ protected override void SimulateTestRun()
+ {
+ testResult.SetResult(ResultState.Inconclusive, "because");
+ suiteResult.AddResult(testResult);
+ }
+
+ [Test]
+ public void TestResultIsInconclusive()
+ {
+ Assert.AreEqual(ResultState.Inconclusive, testResult.ResultState);
+ Assert.AreEqual(TestStatus.Inconclusive, testResult.ResultState.Status);
+ Assert.That(testResult.ResultState.Label, Is.Empty);
+ Assert.AreEqual("because", testResult.Message);
+ }
+
+ [Test]
+ public void SuiteResultIsInconclusive()
+ {
+ Assert.AreEqual(ResultState.Inconclusive, suiteResult.ResultState);
+ Assert.AreEqual(TestStatus.Inconclusive, suiteResult.ResultState.Status);
+ Assert.Null(suiteResult.Message);
+
+ Assert.AreEqual(0, suiteResult.PassCount);
+ Assert.AreEqual(0, suiteResult.FailCount);
+ Assert.AreEqual(0, suiteResult.SkipCount);
+ Assert.AreEqual(1, suiteResult.InconclusiveCount);
+ Assert.AreEqual(0, suiteResult.AssertCount);
+ }
+
+ [Test]
+ public void TestResultXmlNodeIsInconclusive()
+ {
+ XmlNode testNode = testResult.ToXml(true);
+
+ Assert.AreEqual("Inconclusive", testNode.Attributes["result"]);
+ Assert.That(!testNode.Attributes.ContainsKey("label"), "Unexpected attribute 'label' found");
+ XmlNode reason = testNode.FindDescendant("reason");
+ Assert.NotNull(reason);
+ Assert.NotNull(reason.FindDescendant("message"));
+ Assert.AreEqual("because", reason.FindDescendant("message").TextContent);
+ Assert.AreEqual("because", reason.FindDescendant("message").EscapedTextContent);
+ Assert.Null(reason.FindDescendant("stack-trace"));
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeIsInconclusive()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual("Inconclusive", suiteNode.Attributes["result"]);
+ Assert.That(!suiteNode.Attributes.ContainsKey("label"), "Unexpected 'label' attribute found");
+ Assert.AreEqual("0", suiteNode.Attributes["passed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["failed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["skipped"]);
+ Assert.AreEqual("1", suiteNode.Attributes["inconclusive"]);
+ Assert.AreEqual("0", suiteNode.Attributes["asserts"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeHasOneChildTest()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual(1, suiteNode.FindDescendants("test-case").Count);
+ }
+ }
+
+ public class MixedResultTests : TestResultTests
+ {
+ protected override void SimulateTestRun()
+ {
+ testResult.SetResult(ResultState.Success);
+ testResult.AssertCount = 2;
+ suiteResult.AddResult(testResult);
+
+ testResult.SetResult(ResultState.Failure, "message", "stack trace");
+ testResult.AssertCount = 1;
+ suiteResult.AddResult(testResult);
+
+ testResult.SetResult(ResultState.Success);
+ testResult.AssertCount = 3;
+ suiteResult.AddResult(testResult);
+
+ testResult.SetResult(ResultState.Inconclusive, "inconclusive reason", "stacktrace");
+ testResult.AssertCount = 0;
+ suiteResult.AddResult(testResult);
+ }
+
+ [Test]
+ public void SuiteResultIsFailure()
+ {
+ Assert.AreEqual(ResultState.Failure, suiteResult.ResultState);
+ Assert.AreEqual(TestStatus.Failed, suiteResult.ResultState.Status);
+ Assert.AreEqual(failingChildMessage, suiteResult.Message);
+ Assert.Null(suiteResult.StackTrace, "There should be no stacktrace");
+
+ Assert.AreEqual(2, suiteResult.PassCount);
+ Assert.AreEqual(1, suiteResult.FailCount);
+ Assert.AreEqual(0, suiteResult.SkipCount);
+ Assert.AreEqual(1, suiteResult.InconclusiveCount);
+ Assert.AreEqual(6, suiteResult.AssertCount);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeIsFailure()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual("Failed", suiteNode.Attributes["result"]);
+ XmlNode failureNode = suiteNode.FindDescendant("failure");
+ Assert.NotNull(failureNode, "No failure element found");
+
+ XmlNode messageNode = failureNode.FindDescendant("message");
+ Assert.NotNull(messageNode, "No message element found");
+ Assert.AreEqual(failingChildMessage, messageNode.TextContent);
+ Assert.AreEqual(failingChildMessage, messageNode.EscapedTextContent);
+
+ XmlNode stacktraceNode = failureNode.FindDescendant("stacktrace");
+ Assert.Null(stacktraceNode, "There should be no stacktrace");
+
+ Assert.AreEqual("2", suiteNode.Attributes["passed"]);
+ Assert.AreEqual("1", suiteNode.Attributes["failed"]);
+ Assert.AreEqual("0", suiteNode.Attributes["skipped"]);
+ Assert.AreEqual("1", suiteNode.Attributes["inconclusive"]);
+ Assert.AreEqual("6", suiteNode.Attributes["asserts"]);
+ }
+
+ [Test]
+ public void SuiteResultXmlNodeHasFourChildTests()
+ {
+ XmlNode suiteNode = suiteResult.ToXml(true);
+
+ Assert.AreEqual(4, suiteNode.FindDescendants("test-case").Count);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TestXmlTests.cs b/NUnitLite-0.9.0/src/tests/Internal/TestXmlTests.cs
new file mode 100755
index 0000000..8b042f4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TestXmlTests.cs
@@ -0,0 +1,171 @@
+using System;
+using NUnit.Framework.Api;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class TestXmlTests
+ {
+ private TestSuite testSuite;
+ private TestFixture testFixture;
+ private TestMethod testMethod;
+
+ [SetUp]
+ public void SetUp()
+ {
+ testFixture = new TestFixture(typeof(DummyFixture));
+ testFixture.Properties.Set(PropertyNames.Description, "Fixture description");
+ testFixture.Properties.Add(PropertyNames.Category, "Fast");
+ testFixture.Properties.Add("Value", 3);
+
+ testMethod = new TestMethod(typeof(DummyFixture).GetMethod("DummyMethod"), testFixture);
+ testMethod.Properties.Set(PropertyNames.Description, "Test description");
+ testMethod.Properties.Add(PropertyNames.Category, "Dubious");
+ testMethod.Properties.Set("Priority", "low");
+
+ testFixture.Tests.Add(testMethod);
+
+ testSuite = new TestSuite(typeof(DummyFixture));
+ testSuite.Properties.Set(PropertyNames.Description, "Suite description");
+ }
+
+ [Test]
+ public void TestTypeTests()
+ {
+ Assert.That(testMethod.TestType,
+ Is.EqualTo("TestMethod"));
+ Assert.That(testFixture.TestType,
+ Is.EqualTo("TestFixture"));
+ Assert.That(testSuite.TestType,
+ Is.EqualTo("TestSuite"));
+ Assert.That(new TestAssembly(System.Reflection.Assembly.GetExecutingAssembly(), "junk").TestType,
+ Is.EqualTo("Assembly"));
+ Assert.That(new ParameterizedMethodSuite(typeof(DummyFixture).GetMethod("ParameterizedMethod")).TestType,
+ Is.EqualTo("ParameterizedMethod"));
+ Assert.That(new ParameterizedFixtureSuite(typeof(DummyFixture)).TestType,
+ Is.EqualTo("ParameterizedFixture"));
+#if CLR_2_0 || CLR_4_0
+ Assert.That(new ParameterizedMethodSuite(typeof(DummyFixture).GetMethod("GenericMethod")).TestType,
+ Is.EqualTo("GenericMethod"));
+ Type genericType = typeof(DummyGenericFixture<int>).GetGenericTypeDefinition();
+ Assert.That(new ParameterizedFixtureSuite(genericType).TestType,
+ Is.EqualTo("GenericFixture"));
+#endif
+ }
+
+ [Test]
+ public void TestMethodToXml()
+ {
+ CheckXmlForTest(testMethod, false);
+ }
+
+ [Test]
+ public void TestFixtureToXml()
+ {
+ CheckXmlForTest(testFixture, false);
+ }
+
+ [Test]
+ public void TestFixtureToXml_Recursive()
+ {
+ CheckXmlForTest(testFixture, true);
+ }
+
+ [Test]
+ public void TestSuiteToXml()
+ {
+ CheckXmlForTest(testSuite, false);
+ }
+
+ [Test]
+ public void TestSuiteToXml_Recursive()
+ {
+ CheckXmlForTest(testSuite, true);
+ }
+
+ #region Helper Methods For Checking XML
+
+ private void CheckXmlForTest(Test test, bool recursive)
+ {
+ XmlNode topNode = test.ToXml(true);
+ CheckXmlForTest(test, topNode, recursive);
+ }
+
+ private void CheckXmlForTest(Test test, XmlNode topNode, bool recursive)
+ {
+ Assert.NotNull(topNode);
+
+ //if (test is TestSuite)
+ //{
+ // Assert.That(topNode.Name, Is.EqualTo("test-suite"));
+ // Assert.That(topNode.Attributes["type"].Value, Is.EqualTo(test.XmlElementName));
+ //}
+ //else
+ //{
+ // Assert.That(topNode.Name, Is.EqualTo("test-case"));
+ //}
+
+ Assert.That(topNode.Name, Is.EqualTo(test.XmlElementName));
+ Assert.That(topNode.Attributes["id"], Is.EqualTo(test.Id.ToString()));
+ Assert.That(topNode.Attributes["name"], Is.EqualTo(test.Name));
+ Assert.That(topNode.Attributes["fullname"], Is.EqualTo(test.FullName));
+
+ int expectedCount = test.Properties.Count;
+ if (expectedCount > 0)
+ {
+ string[] expectedProps = new string[expectedCount];
+ int count = 0;
+ foreach (PropertyEntry entry in test.Properties)
+ expectedProps[count++] = entry.ToString();
+
+ XmlNode propsNode = topNode.FindDescendant("properties");
+ Assert.NotNull(propsNode);
+
+ int actualCount = propsNode.ChildNodes.Count;
+ string[] actualProps = new string[actualCount];
+ for (int i = 0; i < actualCount; i++)
+ {
+ XmlNode node = propsNode.ChildNodes[i] as XmlNode;
+ string name = node.Attributes["name"];
+ string value = node.Attributes["value"];
+ actualProps[i] = name + "=" + value.ToString();
+ }
+
+ Assert.That(actualProps, Is.EquivalentTo(expectedProps));
+ }
+
+ if (recursive)
+ {
+ TestSuite suite = test as TestSuite;
+ if (suite != null)
+ {
+ foreach (Test child in suite.Tests)
+ {
+ string xpathQuery = string.Format("{0}[@id={1}]", child.XmlElementName, child.Id);
+ XmlNode childNode = topNode.FindDescendant(xpathQuery);
+ Assert.NotNull(childNode, "Expected node for test with ID={0}, Name={1}", child.Id, child.Name);
+
+ CheckXmlForTest(child, childNode, recursive);
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ public class DummyFixture
+ {
+ public void DummyMethod() { }
+ public void ParameterizedMethod(int x) { }
+#if CLR_2_0 || CLR_4_0
+ public void GenericMethod<T>(T x) { }
+#endif
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public class DummyGenericFixture<T>
+ {
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TextMessageWriterTests.cs b/NUnitLite-0.9.0/src/tests/Internal/TextMessageWriterTests.cs
new file mode 100755
index 0000000..993eb74
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TextMessageWriterTests.cs
@@ -0,0 +1,164 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Threading;
+using System.Globalization;
+
+namespace NUnit.Framework.Internal
+{
+ [TestFixture]
+ public class TextMessageWriterTests : AssertionHelper
+ {
+ private static readonly string NL = NUnit.Env.NewLine;
+
+ private TextMessageWriter writer;
+
+ [SetUp]
+ public void SetUp()
+ {
+ writer = new TextMessageWriter();
+ }
+
+ [Test]
+ public void ConnectorIsWrittenWithSurroundingSpaces()
+ {
+ writer.WriteConnector("and");
+ Expect(writer.ToString(), EqualTo(" and "));
+ }
+
+ [Test]
+ public void PredicateIsWrittenWithTrailingSpace()
+ {
+ writer.WritePredicate("contains");
+ Expect(writer.ToString(), EqualTo("contains "));
+ }
+
+ [Test]
+ public void IntegerIsWrittenAsIs()
+ {
+ writer.WriteValue(42);
+ Expect(writer.ToString(), EqualTo("42"));
+ }
+
+ [Test]
+ public void StringIsWrittenWithQuotes()
+ {
+ writer.WriteValue("Hello");
+ Expect(writer.ToString(), EqualTo("\"Hello\""));
+ }
+
+ // This test currently fails because control character replacement is
+ // done at a higher level...
+ // TODO: See if we should do it at a lower level
+// [Test]
+// public void ControlCharactersInStringsAreEscaped()
+// {
+// WriteValue("Best Wishes,\r\n\tCharlie\r\n");
+// Assert.That(writer.ToString(), Is.EqualTo("\"Best Wishes,\\r\\n\\tCharlie\\r\\n\""));
+// }
+
+ [Test]
+ public void FloatIsWrittenWithTrailingF()
+ {
+ writer.WriteValue(0.5f);
+ Expect(writer.ToString(), EqualTo("0.5f"));
+ }
+
+ [Test]
+ public void FloatIsWrittenToNineDigits()
+ {
+ writer.WriteValue(0.33333333333333f);
+ int digits = writer.ToString().Length - 3; // 0.dddddddddf
+ Expect(digits, EqualTo(9));
+ Expect(writer.ToString().Length, EqualTo(12));
+ }
+
+ [Test]
+ public void DoubleIsWrittenWithTrailingD()
+ {
+ writer.WriteValue(0.5d);
+ Expect(writer.ToString(), EqualTo("0.5d"));
+ }
+
+ [Test]
+ public void DoubleIsWrittenToSeventeenDigits()
+ {
+ writer.WriteValue(0.33333333333333333333333333333333333333333333d);
+ Expect(writer.ToString().Length, EqualTo(20)); // add 3 for leading 0, decimal and trailing d
+ }
+
+ [Test]
+ public void DecimalIsWrittenWithTrailingM()
+ {
+ writer.WriteValue(0.5m);
+ Expect(writer.ToString(), EqualTo("0.5m"));
+ }
+
+ [Test]
+ public void DecimalIsWrittenToTwentyNineDigits()
+ {
+ writer.WriteValue(12345678901234567890123456789m);
+ Expect(writer.ToString(), EqualTo("12345678901234567890123456789m"));
+ }
+
+ [Test]
+ public void DateTimeTest()
+ {
+ writer.WriteValue(new DateTime(2007, 7, 4, 9, 15, 30, 123));
+ Expect(writer.ToString(), EqualTo("2007-07-04 09:15:30.123"));
+ }
+
+ [Test]
+ public void DisplayStringDifferences()
+ {
+ string s72 = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
+ string exp = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXY...";
+
+ writer.DisplayStringDifferences(s72, "abcde", 5, false, true);
+ string message = writer.ToString();
+ Expect(message, EqualTo(
+ TextMessageWriter.Pfx_Expected + Q(exp) + NL +
+ TextMessageWriter.Pfx_Actual + Q("abcde") + NL +
+ " ----------------^" + NL));
+ }
+
+ [Test]
+ public void DisplayStringDifferences_NoClipping()
+ {
+ string s72 = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
+
+ writer.DisplayStringDifferences(s72, "abcde", 5, false, false);
+ string message = writer.ToString();
+ Expect(message, EqualTo(
+ TextMessageWriter.Pfx_Expected + Q(s72) + NL +
+ TextMessageWriter.Pfx_Actual + Q("abcde") + NL +
+ " ----------------^" + NL));
+ }
+
+ private string Q(string s)
+ {
+ return "\"" + s + "\"";
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Internal/TypeParameterUsedWithTestMethod.cs b/NUnitLite-0.9.0/src/tests/Internal/TypeParameterUsedWithTestMethod.cs
new file mode 100755
index 0000000..baf7c3d
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Internal/TypeParameterUsedWithTestMethod.cs
@@ -0,0 +1,41 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+#if CLR_2_0 || CLR_4_0
+using System;
+
+namespace NUnit.Framework.Internal
+{
+ [Category("Generics")]
+ [TestFixture(typeof(double))]
+ public class TypeParameterUsedWithTestMethod<T>
+ {
+ [TestCase(5)]
+ [TestCase(1.23)]
+ public void TestMyArgType(T x)
+ {
+ Assert.That(x, Is.TypeOf(typeof(T)));
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Program.cs b/NUnitLite-0.9.0/src/tests/Program.cs
new file mode 100755
index 0000000..22c28a0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Program.cs
@@ -0,0 +1,81 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+using NUnitLite.Runner;
+using NUnit.Framework.Internal;
+
+namespace NUnitLite.Tests
+{
+ public class Program
+ {
+ // The main program executes the tests. Output may be routed to
+ // various locations, depending on the arguments passed.
+ //
+ // Arguments:
+ //
+ // Arguments may be names of assemblies or options prefixed with '/'
+ // or '-'. Normally, no assemblies are passed and the calling
+ // assembly (the one containing this Main) is used. The following
+ // options are accepted:
+ //
+ // -test:<testname> Provides the name of a test to be exected.
+ // May be repeated. If this option is not used,
+ // all tests are run.
+ //
+ // -out:PATH Path to a file to which output is written.
+ // If omitted, Console is used, which means the
+ // output is lost on a platform with no Console.
+ //
+ // -full Print full report of all tests.
+ //
+ // -result:PATH Path to a file to which the XML test result is written.
+ //
+ // -explore[:Path] If specified, list tests rather than executing them. If a
+ // path is given, an XML file representing the tests is written
+ // to that location. If not, output is written to tests.xml.
+ //
+ // -noheader,noh Suppress display of the initial message.
+ //
+ // -wait Wait for a keypress before exiting.
+ //
+ // -include:categorylist
+ // If specified, nunitlite will only run the tests with a category
+ // that is in the comma separated list of category names.
+ // Example usage: -include:category1,category2 this command can be used
+ // in combination with the -exclude option also note that exlude takes priority
+ // over all includes.
+ //
+ // -exclude:categorylist
+ // If specified, nunitlite will not run any of the tests with a category
+ // that is in the comma separated list of category names.
+ // Example usage: -exclude:category1,category2 this command can be used
+ // in combination with the -include option also note that exclude takes priority
+ // over all includes
+ public static void Main(string[] args)
+ {
+ new TextUI().Execute(args);
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/RecordingTestListener.cs b/NUnitLite-0.9.0/src/tests/RecordingTestListener.cs
new file mode 100755
index 0000000..63e2f27
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/RecordingTestListener.cs
@@ -0,0 +1,29 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+
+namespace NUnitLite.Tests
+{
+ public class RecordingTestListener : ITestListener
+ {
+ public string Events = string.Empty;
+
+ public void TestStarted(ITest test)
+ {
+ Events += string.Format("<{0}:", test.Name);
+ }
+
+ public void TestFinished(ITestResult result)
+ {
+ Events += string.Format(":{0}>", result.ResultState);
+ }
+
+ public void TestOutput(TestOutput output) { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Runner/CommandLineOptionTests.cs b/NUnitLite-0.9.0/src/tests/Runner/CommandLineOptionTests.cs
new file mode 100755
index 0000000..2970ad6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Runner/CommandLineOptionTests.cs
@@ -0,0 +1,133 @@
+// *****************************************************
+// Copyright 2007, Charlie Poole
+//
+// Licensed under the Open Software License version 3.0
+// *****************************************************
+
+using System;
+using System.IO;
+using NUnit.Framework;
+using Env = NUnit.Env;
+
+namespace NUnitLite.Runner.Tests
+{
+ [TestFixture]
+ class CommandLineOptionTests
+ {
+ private CommandLineOptions options;
+
+ [SetUp]
+ public void CreateOptions()
+ {
+ options = new CommandLineOptions("-");
+ }
+
+ [Test]
+ public void TestWaitOption()
+ {
+ options.Parse( "-wait" );
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Wait, Is.True);
+ }
+
+ [Test]
+ public void TestNoheaderOption()
+ {
+ options.Parse("-noheader");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.NoHeader, Is.True);
+ }
+
+ [Test]
+ public void OptionNotRecognizedUnlessPrecededByOptionChar()
+ {
+ options.Parse( "/wait" );
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Wait, Is.False);
+ Assert.That(options.Parameters, Contains.Item("/wait"));
+ }
+
+ [Test]
+ public void InvalidOptionProducesError()
+ {
+ options.Parse( "-junk" );
+ Assert.That(options.Error);
+ Assert.That(options.ErrorMessage, Is.EqualTo("Invalid option: -junk" + Env.NewLine));
+ }
+
+ [Test]
+ public void MultipleInvalidOptionsAreListedInErrorMessage()
+ {
+ options.Parse( "-junk", "-trash", "something", "-garbage" );
+ Assert.That(options.Error);
+ Assert.That(options.ErrorMessage, Is.EqualTo(
+ "Invalid option: -junk" + Env.NewLine +
+ "Invalid option: -trash" + Env.NewLine +
+ "Invalid option: -garbage" + Env.NewLine));
+ }
+
+ [Test]
+ public void SingleParameterIsSaved()
+ {
+ options.Parse("myassembly.dll");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Parameters.Length, Is.EqualTo(1));
+ Assert.That(options.Parameters[0], Is.EqualTo("myassembly.dll"));
+ }
+
+ [Test]
+ public void MultipleParametersAreSaved()
+ {
+ options.Parse("assembly1.dll", "-wait", "assembly2.dll", "assembly3.dll");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Parameters.Length, Is.EqualTo(3));
+ Assert.That(options.Parameters[0], Is.EqualTo("assembly1.dll"));
+ Assert.That(options.Parameters[1], Is.EqualTo("assembly2.dll"));
+ Assert.That(options.Parameters[2], Is.EqualTo("assembly3.dll"));
+ }
+
+ [Test]
+ public void TestOptionIsRecognized()
+ {
+ options.Parse("-test:Some.Class.Name");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Tests.Length, Is.EqualTo(1));
+ Assert.That(options.Tests[0], Is.EqualTo("Some.Class.Name"));
+ }
+
+ [Test]
+ public void MultipleTestOptionsAreRecognized()
+ {
+ options.Parse("-test:Class1", "-test=Class2", "-test:Class3");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Tests.Length, Is.EqualTo(3));
+ Assert.That(options.Tests[0], Is.EqualTo("Class1"));
+ Assert.That(options.Tests[1], Is.EqualTo("Class2"));
+ Assert.That(options.Tests[2], Is.EqualTo("Class3"));
+ }
+#if !SILVERLIGHT
+ [Test]
+ public void TestIncludeOption()
+ {
+ options.Parse("-include:1,2");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Include == "1,2");
+ }
+ [Test]
+ public void TestExcludeOption()
+ {
+ options.Parse("-exclude:1,2");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Exclude == "1,2");
+ }
+ [Test]
+ public void TestIncludeExcludeOption()
+ {
+ options.Parse("-include:3,4", "-exclude:1,2");
+ Assert.That(options.Error, Is.False);
+ Assert.That(options.Exclude == "1,2");
+ Assert.That(options.Include == "3,4");
+ }
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Runner/NUnit2XmlOutputWriterTests.cs b/NUnitLite-0.9.0/src/tests/Runner/NUnit2XmlOutputWriterTests.cs
new file mode 100755
index 0000000..a47deec
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Runner/NUnit2XmlOutputWriterTests.cs
@@ -0,0 +1,217 @@
+#if !SILVERLIGHT
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+using NUnit.Tests.Assemblies;
+
+namespace NUnitLite.Runner.Tests
+{
+ public class NUnit2XmlOutputWriterTests
+ {
+ private XmlDocument doc;
+ private XmlNode topNode;
+ private XmlNode envNode;
+ private XmlNode cultureNode;
+ private XmlNode suiteNode;
+
+ [TestFixtureSetUp]
+ public void RunMockAssemblyTests()
+ {
+ TestResult result = NUnit.TestUtilities.TestBuilder.RunTestFixture(typeof(MockTestFixture));
+ Assert.NotNull(result);
+
+ StringBuilder sb = new StringBuilder();
+ StringWriter writer = new StringWriter(sb);
+ new NUnit2XmlOutputWriter().WriteResultFile(result, writer);
+ writer.Close();
+
+#if DEBUG
+ StreamWriter sw = new StreamWriter("MockAssemblyResult.xml");
+ sw.WriteLine(sb.ToString());
+ sw.Close();
+#endif
+
+ doc = new XmlDocument();
+ doc.LoadXml(sb.ToString());
+
+ topNode = doc.SelectSingleNode("/test-results");
+ if (topNode != null)
+ {
+ envNode = topNode.SelectSingleNode("environment");
+ cultureNode = topNode.SelectSingleNode("culture-info");
+ suiteNode = topNode.SelectSingleNode("test-suite");
+ }
+ }
+
+ [Test]
+ public void Document_HasThreeChildren()
+ {
+ Assert.That(doc.ChildNodes.Count, Is.EqualTo(3));
+ }
+
+ [Test]
+ public void Document_FirstChildIsXmlDeclaration()
+ {
+ Assume.That(doc.FirstChild != null);
+ Assert.That(doc.FirstChild.NodeType, Is.EqualTo(XmlNodeType.XmlDeclaration));
+ Assert.That(doc.FirstChild.Name, Is.EqualTo("xml"));
+ }
+
+ [Test]
+ public void Document_SecondChildIsComment()
+ {
+ Assume.That(doc.ChildNodes.Count >= 2);
+ Assert.That(doc.ChildNodes[1].Name, Is.EqualTo("#comment"));
+ }
+
+ [Test]
+ public void Document_ThirdChildIsTestResults()
+ {
+ Assume.That(doc.ChildNodes.Count >= 3);
+ Assert.That(doc.ChildNodes[2].Name, Is.EqualTo("test-results"));
+ }
+
+ [Test]
+ public void Document_HasTestResults()
+ {
+ Assert.That(topNode, Is.Not.Null);
+ Assert.That(topNode.Name, Is.EqualTo("test-results"));
+ }
+
+ [Test]
+ public void TestResults_AssemblyPathIsCorrect()
+ {
+ Assert.That(RequiredAttribute(topNode, "name"), Is.EqualTo("NUnit.Tests.Assemblies.MockTestFixture"));
+ }
+
+ [TestCase("total", MockTestFixture.Tests-MockTestFixture.Explicit)]
+ [TestCase("errors", MockTestFixture.Errors)]
+ [TestCase("failures", MockTestFixture.Failures)]
+ [TestCase("inconclusive", MockTestFixture.Inconclusive)]
+ [TestCase("not-run", MockTestFixture.NotRun-MockTestFixture.Explicit)]
+ [TestCase("ignored", MockTestFixture.Ignored)]
+ [TestCase("skipped", MockTestFixture.NotRun-MockTestFixture.Ignored-MockTestFixture.NotRunnable-MockTestFixture.Explicit)]
+ [TestCase("invalid", MockTestFixture.NotRunnable)]
+ public void TestResults_CounterIsCorrect(string name, int count)
+ {
+ Assert.That(RequiredAttribute(topNode, name), Is.EqualTo(count.ToString()));
+ }
+
+ [Test]
+ public void TestResults_HasValidDateAttribute()
+ {
+ string dateString = RequiredAttribute(topNode, "date");
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ DateTime date;
+ Assert.That(DateTime.TryParse(dateString, out date), "Invalid date attribute: {0}", dateString);
+#endif
+ }
+
+ [Test]
+ public void TestResults_HasValidTimeAttribute()
+ {
+ string timeString = RequiredAttribute(topNode, "time");
+#if (CLR_2_0 || CLR_4_0) && !NETCF
+ DateTime time;
+ Assert.That(DateTime.TryParse(timeString, out time), "Invalid time attribute: {0}", timeString);
+#endif
+ }
+
+ [Test]
+ public void Environment_HasEnvironmentElement()
+ {
+ Assert.That(envNode, Is.Not.Null, "Missing environment element");
+ }
+
+ [TestCase("nunit-version")]
+ [TestCase("clr-version")]
+ [TestCase("os-version")]
+ [TestCase("platform")]
+#if !NETCF
+ [TestCase("cwd")]
+ [TestCase("machine-name")]
+ [TestCase("user")]
+ [TestCase("user-domain")]
+#endif
+ public void Environment_HasRequiredAttribute(string name)
+ {
+ RequiredAttribute(envNode, name);
+ }
+
+ [Test]
+ public void CultureInfo_HasCultureInfoElement()
+ {
+ Assert.That(cultureNode, Is.Not.Null, "Missing culture-info element");
+ }
+
+ [TestCase("current-culture")]
+ [TestCase("current-uiculture")]
+ public void CultureInfo_HasRequiredAttribute(string name)
+ {
+ string cultureName = RequiredAttribute(cultureNode, name);
+ System.Globalization.CultureInfo culture = null;
+
+ try
+ {
+ culture = System.Globalization.CultureInfo.CreateSpecificCulture(cultureName);
+ }
+ catch(ArgumentException)
+ {
+ // Do nothing - culture will be null
+ }
+
+ Assert.That(culture, Is.Not.Null, "Invalid value for {0}: {1}", name, cultureName);
+ }
+
+ [Test]
+ public void TestSuite_HasTestSuiteElement()
+ {
+ Assert.That(suiteNode, Is.Not.Null, "Missing test-suite element");
+ }
+
+ [TestCase("type", "TestFixture")]
+ [TestCase("name", "MockTestFixture")]
+ [TestCase("description", "Fake Test Fixture")]
+ [TestCase("executed", "True")]
+ [TestCase("result", "Failure")]
+ [TestCase("success", "False")]
+ [TestCase("asserts", "0")]
+ public void TestSuite_ExpectedAttribute(string name, string value)
+ {
+ Assert.That(RequiredAttribute(suiteNode, name), Is.EqualTo(value));
+ }
+
+ [Test]
+ public void TestSuite_HasValidTimeAttribute()
+ {
+#if NETCF
+ RequiredAttribute(suiteNode, "time");
+#else
+ double time;
+ // NOTE: We use the TryParse overload with 4 args because it's supported in .NET 1.1
+ Assert.That(double.TryParse(RequiredAttribute(suiteNode, "time"),System.Globalization.NumberStyles.Float,null, out time), "Invalid value for time");
+#endif
+ }
+
+ [Test]
+ public void TestSuite_ResultIsFailure()
+ {
+ }
+
+ #region Helper Methods
+
+ private string RequiredAttribute(XmlNode node, string name)
+ {
+ XmlAttribute attr = node.Attributes[name];
+ Assert.That(attr, Is.Not.Null, "Missing attribute {0} on element {1}", name, node.Name);
+
+ return attr.Value;
+ }
+
+ #endregion
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/AfterTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/AfterTests.cs
new file mode 100755
index 0000000..405bfb1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/AfterTests.cs
@@ -0,0 +1,184 @@
+// ****************************************************************
+// Copyright 2008, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org
+// ****************************************************************
+
+using System;
+using System.Threading;
+using System.Collections;
+
+namespace NUnit.Framework.Syntax
+{
+ public class AfterTest_SimpleConstraint : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<after 1000 <equal 10>>";
+ staticSyntax = Is.EqualTo(10).After(1000);
+ inheritedSyntax = Helper().EqualTo(10).After(1000);
+ builderSyntax = Builder().EqualTo(10).After(1000);
+ }
+ }
+
+ public class AfterTest_ProperyTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<after 1000 <property X <equal 10>>>";
+ staticSyntax = Has.Property("X").EqualTo(10).After(1000);
+ inheritedSyntax = Helper().Property("X").EqualTo(10).After(1000);
+ builderSyntax = Builder().Property("X").EqualTo(10).After(1000);
+ }
+ }
+
+ public class AfterTest_AndOperator : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<after 1000 <and <greaterthan 0> <lessthan 10>>>";
+ staticSyntax = Is.GreaterThan(0).And.LessThan(10).After(1000);
+ inheritedSyntax = Helper().GreaterThan(0).And.LessThan(10).After(1000);
+ builderSyntax = Builder().GreaterThan(0).And.LessThan(10).After(1000);
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ public abstract class AfterSyntaxTests
+ {
+ protected bool flag;
+ protected int num;
+ protected object ob1, ob2, ob3;
+ protected ArrayList list;
+ protected string greeting;
+
+ [SetUp]
+ public void InitializeValues()
+ {
+ this.flag = false;
+ this.num = 0;
+ this.ob1 = new object();
+ this.ob2 = new object();
+ this.ob3 = new object();
+ this.list = new ArrayList();
+ this.list.Add(1);
+ this.list.Add(2);
+ this.list.Add(3);
+ this.greeting = "hello";
+
+ new Thread(ModifyValuesAfterDelay).Start();
+ }
+
+ private void ModifyValuesAfterDelay()
+ {
+ Thread.Sleep(100);
+
+ this.flag = true;
+ this.num = 1;
+ this.ob1 = ob2;
+ this.ob3 = null;
+ this.list.Add(4);
+ this.greeting += "world";
+ }
+ }
+
+ public class AfterSyntaxUsingAnonymousDelegates : AfterSyntaxTests
+ {
+ [Test]
+ public void TrueTest()
+ {
+ Assert.That(delegate { return flag; }, Is.True.After(5000, 200));
+ }
+
+ [Test]
+ public void EqualToTest()
+ {
+ Assert.That(delegate { return num; }, Is.EqualTo(1).After(5000, 200));
+ }
+
+ [Test]
+ public void SameAsTest()
+ {
+ Assert.That(delegate { return ob1; }, Is.SameAs(ob2).After(5000, 200));
+ }
+
+ [Test]
+ public void GreaterTest()
+ {
+ Assert.That(delegate { return num; }, Is.GreaterThan(0).After(5000,200));
+ }
+
+ [Test]
+ public void HasMemberTest()
+ {
+ Assert.That(delegate { return list; }, Has.Member(4).After(5000, 200));
+ }
+
+ [Test]
+ public void NullTest()
+ {
+ Assert.That(delegate { return ob3; }, Is.Null.After(5000, 200));
+ }
+
+ [Test]
+ public void TextTest()
+ {
+ Assert.That(delegate { return greeting; }, Is.StringEnding("world").After(5000, 200));
+ }
+
+ [Test]
+ public void ThrowsTest()
+ {
+ Assert.That(delegate { throw new Exception(); }, Throws.TypeOf<Exception>().After(100));
+ }
+ }
+
+ public class AfterSyntaxUsingActualPassedByRef : AfterSyntaxTests
+ {
+ [Test]
+ public void TrueTest()
+ {
+ Assert.That(ref flag, Is.True.After(5000, 200));
+ }
+
+ [Test]
+ public void EqualToTest()
+ {
+ Assert.That(ref num, Is.EqualTo(1).After(5000, 200));
+ }
+
+ [Test]
+ public void SameAsTest()
+ {
+ Assert.That(ref ob1, Is.SameAs(ob2).After(5000, 200));
+ }
+
+ [Test]
+ public void GreaterTest()
+ {
+ Assert.That(ref num, Is.GreaterThan(0).After(5000, 200));
+ }
+
+ [Test]
+ public void HasMemberTest()
+ {
+ Assert.That(ref list, Has.Member(4).After(5000, 200));
+ }
+
+ [Test]
+ public void NullTest()
+ {
+ Assert.That(ref ob3, Is.Null.After(5000, 200));
+ }
+
+ [Test]
+ public void TextTest()
+ {
+ Assert.That(ref greeting, Is.StringEnding("world").After(5000, 200));
+ }
+ }
+#endif
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/ArbitraryConstraintMatching.cs b/NUnitLite-0.9.0/src/tests/Syntax/ArbitraryConstraintMatching.cs
new file mode 100755
index 0000000..8e5a2f1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/ArbitraryConstraintMatching.cs
@@ -0,0 +1,81 @@
+// ****************************************************************
+// Copyright 2012, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org
+// ****************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Syntax
+{
+ [TestFixture]
+ public class ArbitraryConstraintMatching
+ {
+ Constraint custom = new CustomConstraint();
+ Constraint another = new AnotherConstraint();
+
+ [Test]
+ public void CanMatchCustomConstraint()
+ {
+ IResolveConstraint constraint = new ConstraintExpression().Matches(custom);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<custom>"));
+ }
+
+ [Test]
+ public void CanMatchCustomConstraintAfterPrefix()
+ {
+ IResolveConstraint constraint = Is.All.Matches(custom);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<all <custom>>"));
+ }
+
+ [Test]
+ public void CanMatchCustomConstraintsUnderAndOperator()
+ {
+ IResolveConstraint constraint = Is.All.Matches(custom).And.Matches(another);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<all <and <custom> <another>>>"));
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [Test]
+ public void CanMatchPredicate()
+ {
+ IResolveConstraint constraint = new ConstraintExpression().Matches(new Predicate<int>(IsEven));
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<predicate>"));
+ Assert.That(42, constraint);
+ }
+
+ bool IsEven(int num)
+ {
+ return (num & 1) == 0;
+ }
+
+#if !NETCF
+ [Test]
+ public void CanMatchLambda()
+ {
+ IResolveConstraint constraint = new ConstraintExpression().Matches<int>( (x) => (x & 1) == 0);
+ Assert.That(constraint.Resolve().ToString(), Is.EqualTo("<predicate>"));
+ Assert.That(42, constraint);
+ }
+#endif
+#endif
+
+ class CustomConstraint : Constraint
+ {
+ public override bool Matches(object actual)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void WriteDescriptionTo(MessageWriter writer)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ class AnotherConstraint : CustomConstraint
+ {
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/CollectionTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/CollectionTests.cs
new file mode 100755
index 0000000..a59f6ca
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/CollectionTests.cs
@@ -0,0 +1,275 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+using NUnit.TestUtilities;
+
+namespace NUnit.Framework.Syntax
+{
+ public class UniqueTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<uniqueitems>";
+ staticSyntax = Is.Unique;
+ inheritedSyntax = Helper().Unique;
+ builderSyntax = Builder().Unique;
+ }
+ }
+
+ public class CollectionOrderedTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<ordered>";
+ staticSyntax = Is.Ordered;
+ inheritedSyntax = Helper().Ordered;
+ builderSyntax = Builder().Ordered;
+ }
+ }
+
+ public class CollectionOrderedTest_Descending : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<ordered descending>";
+ staticSyntax = Is.Ordered.Descending;
+ inheritedSyntax = Helper().Ordered.Descending;
+ builderSyntax = Builder().Ordered.Descending;
+ }
+ }
+
+ public class CollectionOrderedTest_Comparer : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ IComparer comparer = new SimpleObjectComparer();
+ parseTree = "<ordered NUnit.TestUtilities.SimpleObjectComparer>";
+ staticSyntax = Is.Ordered.Using(comparer);
+ inheritedSyntax = Helper().Ordered.Using(comparer);
+ builderSyntax = Builder().Ordered.Using(comparer);
+ }
+ }
+
+ public class CollectionOrderedTest_Comparer_Descending : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ IComparer comparer = new SimpleObjectComparer();
+ parseTree = "<ordered descending NUnit.TestUtilities.SimpleObjectComparer>";
+ staticSyntax = Is.Ordered.Using(comparer).Descending;
+ inheritedSyntax = Helper().Ordered.Using(comparer).Descending;
+ builderSyntax = Builder().Ordered.Using(comparer).Descending;
+ }
+ }
+
+ public class CollectionOrderedByTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<orderedby SomePropertyName>";
+ staticSyntax = Is.Ordered.By("SomePropertyName");
+ inheritedSyntax = Helper().Ordered.By("SomePropertyName");
+ builderSyntax = Builder().Ordered.By("SomePropertyName");
+ }
+ }
+
+ public class CollectionOrderedByTest_Descending : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<orderedby SomePropertyName descending>";
+ staticSyntax = Is.Ordered.By("SomePropertyName").Descending;
+ inheritedSyntax = Helper().Ordered.By("SomePropertyName").Descending;
+ builderSyntax = Builder().Ordered.By("SomePropertyName").Descending;
+ }
+ }
+
+ public class CollectionOrderedByTest_Comparer : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<orderedby SomePropertyName NUnit.TestUtilities.SimpleObjectComparer>";
+ staticSyntax = Is.Ordered.By("SomePropertyName").Using(new SimpleObjectComparer());
+ inheritedSyntax = Helper().Ordered.By("SomePropertyName").Using(new SimpleObjectComparer());
+ builderSyntax = Builder().Ordered.By("SomePropertyName").Using(new SimpleObjectComparer());
+ }
+ }
+
+ public class CollectionOrderedByTest_Comparer_Descending : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<orderedby SomePropertyName descending NUnit.TestUtilities.SimpleObjectComparer>";
+ staticSyntax = Is.Ordered.By("SomePropertyName").Using(new SimpleObjectComparer()).Descending;
+ inheritedSyntax = Helper().Ordered.By("SomePropertyName").Using(new SimpleObjectComparer()).Descending;
+ builderSyntax = Builder().Ordered.By("SomePropertyName").Using(new SimpleObjectComparer()).Descending;
+ }
+ }
+
+ public class CollectionContainsTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<contains 42>";
+ staticSyntax = Contains.Item(42);
+ inheritedSyntax = Helper().Contains(42);
+ builderSyntax = Builder().Contains(42);
+ }
+ }
+
+ public class CollectionContainsTest_String : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<contains \"abc\">";
+ staticSyntax = Contains.Item("abc");
+ inheritedSyntax = Helper().Contains("abc");
+ builderSyntax = Builder().Contains("abc");
+ }
+ }
+
+#if !SILVERLIGHT
+ public class CollectionContainsTest_Comparer : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<contains 42>";
+ staticSyntax = Contains.Item(42).Using(Comparer.Default);
+ inheritedSyntax = Helper().Contains(42).Using(Comparer.Default);
+ builderSyntax = Builder().Contains(42).Using(Comparer.Default);
+ }
+
+ [Test]
+ public void ComparerIsCalled()
+ {
+ TestComparer comparer = new TestComparer();
+ Assert.That(new int[] { 1, 2, 3 },
+ Contains.Item(2).Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ [Test]
+ public void ComparerIsCalledInExpression()
+ {
+ TestComparer comparer = new TestComparer();
+ Assert.That(new int[] { 1, 2, 3 },
+ Has.Length.EqualTo(3).And.Contains(2).Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+ }
+
+ public class CollectionContainsTest_Comparer_String : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<contains \"abc\">";
+ staticSyntax = Contains.Item("abc").Using(Comparer.Default);
+ inheritedSyntax = Helper().Contains("abc").Using(Comparer.Default);
+ builderSyntax = Builder().Contains("abc").Using(Comparer.Default);
+ }
+
+ [Test]
+ public void ComparerIsCalled()
+ {
+ TestComparer comparer = new TestComparer();
+ Assert.That(new string[] { "Hello", "World" },
+ Contains.Item("World").Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+
+ [Test]
+ public void ComparerIsCalledInExpression()
+ {
+ TestComparer comparer = new TestComparer();
+ Assert.That(new string[] { "Hello", "World" },
+ Has.Length.EqualTo(2).And.Contains("World").Using(comparer));
+ Assert.That(comparer.Called, "Comparer was not called");
+ }
+ }
+
+ public class CollectionMemberTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<contains 42>";
+ staticSyntax = Has.Member(42);
+ inheritedSyntax = Helper().Contains(42);
+ builderSyntax = Builder().Contains(42);
+ }
+ }
+
+ public class CollectionMemberTest_Comparer : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<contains 42>";
+ staticSyntax = Has.Member(42).Using(Comparer.Default);
+ inheritedSyntax = Helper().Contains(42).Using(Comparer.Default);
+ builderSyntax = Builder().Contains(42).Using(Comparer.Default);
+ }
+ }
+#endif
+
+ public class CollectionSubsetTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ int[] ints = new int[] { 1, 2, 3 };
+ parseTree = "<subsetof System.Int32[]>";
+ staticSyntax = Is.SubsetOf(ints);
+ inheritedSyntax = Helper().SubsetOf(ints);
+ builderSyntax = Builder().SubsetOf(ints);
+ }
+ }
+
+ public class CollectionEquivalentTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ int[] ints = new int[] { 1, 2, 3 };
+ parseTree = "<equivalent System.Int32[]>";
+ staticSyntax = Is.EquivalentTo(ints);
+ inheritedSyntax = Helper().EquivalentTo(ints);
+ builderSyntax = Builder().EquivalentTo(ints);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/ComparisonTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/ComparisonTests.cs
new file mode 100755
index 0000000..36ab321
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/ComparisonTests.cs
@@ -0,0 +1,99 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Syntax
+{
+ public class GreaterThanTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<greaterthan 7>";
+ staticSyntax = Is.GreaterThan(7);
+ inheritedSyntax = Helper().GreaterThan(7);
+ builderSyntax = Builder().GreaterThan(7);
+ }
+ }
+
+ public class GreaterThanOrEqualTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<greaterthanorequal 7>";
+ staticSyntax = Is.GreaterThanOrEqualTo(7);
+ inheritedSyntax = Helper().GreaterThanOrEqualTo(7);
+ builderSyntax = Builder().GreaterThanOrEqualTo(7);
+ }
+ }
+
+ public class AtLeastTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<greaterthanorequal 7>";
+ staticSyntax = Is.AtLeast(7);
+ inheritedSyntax = Helper().AtLeast(7);
+ builderSyntax = Builder().AtLeast(7);
+ }
+ }
+
+ public class LessThanTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<lessthan 7>";
+ staticSyntax = Is.LessThan(7);
+ inheritedSyntax = Helper().LessThan(7);
+ builderSyntax = Builder().LessThan(7);
+ }
+ }
+
+ public class LessThanOrEqualTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<lessthanorequal 7>";
+ staticSyntax = Is.LessThanOrEqualTo(7);
+ inheritedSyntax = Helper().LessThanOrEqualTo(7);
+ builderSyntax = Builder().LessThanOrEqualTo(7);
+ }
+ }
+
+ public class AtMostTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<lessthanorequal 7>";
+ staticSyntax = Is.AtMost(7);
+ inheritedSyntax = Helper().AtMost(7);
+ builderSyntax = Builder().AtMost(7);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/EqualityTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/EqualityTests.cs
new file mode 100755
index 0000000..cf04317
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/EqualityTests.cs
@@ -0,0 +1,158 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Syntax
+{
+ public class EqualToTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<equal 999>";
+ staticSyntax = Is.EqualTo(999);
+ inheritedSyntax = Helper().EqualTo(999);
+ builderSyntax = Builder().EqualTo(999);
+ }
+ }
+
+ public class EqualToTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<equal ""X"">";
+ staticSyntax = Is.EqualTo("X").IgnoreCase;
+ inheritedSyntax = Helper().EqualTo("X").IgnoreCase;
+ builderSyntax = Builder().EqualTo("X").IgnoreCase;
+ }
+ }
+
+ public class EqualToTest_WithinTolerance : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<equal 0.7>";
+ staticSyntax = Is.EqualTo(0.7).Within(.005);
+ inheritedSyntax = Helper().EqualTo(0.7).Within(.005);
+ builderSyntax = Builder().EqualTo(0.7).Within(.005);
+ }
+ }
+
+
+ public class EqualityTests
+ {
+ [Test]
+ public void SimpleEqualityTests()
+ {
+ int[] i3 = new int[] { 1, 2, 3 };
+ double[] d3 = new double[] { 1.0, 2.0, 3.0 };
+ int[] iunequal = new int[] { 1, 3, 2 };
+
+ Assert.That(2 + 2, Is.EqualTo(4));
+ Assert.That(2 + 2 == 4);
+ Assert.That(i3, Is.EqualTo(d3));
+ Assert.That(2 + 2, Is.Not.EqualTo(5));
+ Assert.That(i3, Is.Not.EqualTo(iunequal));
+#if CLR_2_0 || CLR_4_0
+ List<string> list = new List<string>();
+ list.Add("foo");
+ list.Add("bar");
+ Assert.That(list, Is.EqualTo(new string[] { "foo", "bar" }));
+#endif
+ }
+
+ [Test]
+ public void EqualityTestsWithTolerance()
+ {
+ Assert.That(4.99d, Is.EqualTo(5.0d).Within(0.05d));
+ Assert.That(4.0d, Is.Not.EqualTo(5.0d).Within(0.5d));
+ Assert.That(4.99f, Is.EqualTo(5.0f).Within(0.05f));
+ Assert.That(4.99m, Is.EqualTo(5.0m).Within(0.05m));
+ Assert.That(3999999999u, Is.EqualTo(4000000000u).Within(5u));
+ Assert.That(499, Is.EqualTo(500).Within(5));
+ Assert.That(4999999999L, Is.EqualTo(5000000000L).Within(5L));
+ Assert.That(5999999999ul, Is.EqualTo(6000000000ul).Within(5ul));
+ }
+
+ [Test]
+ public void EqualityTestsWithTolerance_MixedFloatAndDouble()
+ {
+ // Bug Fix 1743844
+ Assert.That(2.20492d, Is.EqualTo(2.2d).Within(0.01f),
+ "Double actual, Double expected, Single tolerance");
+ Assert.That(2.20492d, Is.EqualTo(2.2f).Within(0.01d),
+ "Double actual, Single expected, Double tolerance");
+ Assert.That(2.20492d, Is.EqualTo(2.2f).Within(0.01f),
+ "Double actual, Single expected, Single tolerance");
+ Assert.That(2.20492f, Is.EqualTo(2.2f).Within(0.01d),
+ "Single actual, Single expected, Double tolerance");
+ Assert.That(2.20492f, Is.EqualTo(2.2d).Within(0.01d),
+ "Single actual, Double expected, Double tolerance");
+ Assert.That(2.20492f, Is.EqualTo(2.2d).Within(0.01f),
+ "Single actual, Double expected, Single tolerance");
+ }
+
+ [Test]
+ public void EqualityTestsWithTolerance_MixingTypesGenerally()
+ {
+ // Extending tolerance to all numeric types
+ Assert.That(202d, Is.EqualTo(200d).Within(2),
+ "Double actual, Double expected, int tolerance");
+ Assert.That(4.87m, Is.EqualTo(5).Within(.25),
+ "Decimal actual, int expected, Double tolerance");
+ Assert.That(4.87m, Is.EqualTo(5ul).Within(1),
+ "Decimal actual, ulong expected, int tolerance");
+ Assert.That(487, Is.EqualTo(500).Within(25),
+ "int actual, int expected, int tolerance");
+ Assert.That(487u, Is.EqualTo(500).Within(25),
+ "uint actual, int expected, int tolerance");
+ Assert.That(487L, Is.EqualTo(500).Within(25),
+ "long actual, int expected, int tolerance");
+ Assert.That(487ul, Is.EqualTo(500).Within(25),
+ "ulong actual, int expected, int tolerance");
+ }
+
+ [Test]
+ public void EqualityTestsUsingDefaultFloatingPointTolerance()
+ {
+ GlobalSettings.DefaultFloatingPointTolerance = 0.05d;
+
+ try
+ {
+ Assert.That(4.99d, Is.EqualTo(5.0d));
+ Assert.That(4.0d, Is.Not.EqualTo(5.0d));
+ Assert.That(4.99f, Is.EqualTo(5.0f));
+ }
+ finally
+ {
+ GlobalSettings.DefaultFloatingPointTolerance = 0.0d;
+ }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/InvalidCodeTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/InvalidCodeTests.cs
new file mode 100755
index 0000000..f79ce6b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/InvalidCodeTests.cs
@@ -0,0 +1,78 @@
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.CodeDom.Compiler;
+using NUnit.Framework.Constraints;
+#if CLR_2_0 || CLR_4_0
+using System.Collections.Generic;
+#endif
+
+namespace NUnit.Framework.Syntax
+{
+ [TestFixture]
+ public class InvalidCodeTests : AssertionHelper
+ {
+ static readonly string template1 =
+@"using System;
+using NUnit.Framework;
+using NUnit.Framework.Constraints;
+
+class SomeClass
+{
+ void SomeMethod()
+ {
+ object c = $FRAGMENT$;
+ }
+}";
+
+ [TestCase("Is.Null.Not")]
+ [TestCase("Is.Not.Null.GreaterThan(10))")]
+ [TestCase("Is.Null.All")]
+ [TestCase("Is.And")]
+ [TestCase("Is.All.And.And")]
+ [TestCase("Is.Null.And.Throws")]
+ public void CodeShouldNotCompile(string fragment)
+ {
+ string code = template1.Replace("$FRAGMENT$", fragment);
+ TestCompiler compiler = new TestCompiler(
+ new string[] { "system.dll", "nunit.framework.dll" },
+ "test.dll");
+ CompilerResults results = compiler.CompileCode(code);
+ if (results.NativeCompilerReturnValue == 0)
+ Assert.Fail("Code fragment \"" + fragment + "\" should not compile but it did");
+ }
+
+ static readonly string template2 =
+@"using System;
+using NUnit.Framework;
+using NUnit.Framework.Constraints;
+
+class SomeClass
+{
+ void SomeMethod()
+ {
+ Assert.That(42, $FRAGMENT$);
+ }
+}";
+
+ [TestCase("Is.Not")]
+ [TestCase("Is.All")]
+ [TestCase("Is.Not.All")]
+ [TestCase("Is.All.Not")]
+ public void CodeShouldNotCompileAsFinishedConstraint(string fragment)
+ {
+ string code = template2.Replace("$FRAGMENT$", fragment);
+ TestCompiler compiler = new TestCompiler(
+ new string[] { "system.dll", "nunit.framework.dll" },
+ "test.dll");
+ CompilerResults results = compiler.CompileCode(code);
+ if (results.NativeCompilerReturnValue == 0)
+ Assert.Fail("Code fragment \"" + fragment + "\" should not compile as a finished constraint but it did");
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/OperatorOverrides.cs b/NUnitLite-0.9.0/src/tests/Syntax/OperatorOverrides.cs
new file mode 100755
index 0000000..e7d275c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/OperatorOverrides.cs
@@ -0,0 +1,128 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Syntax
+{
+ public class NotOperatorOverride : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<not <null>>";
+ staticSyntax = !Is.Null;
+ inheritedSyntax = !Helper().Null;
+ builderSyntax = !Builder().Null;
+ }
+
+ [Test]
+ public void NotOperatorCanApplyToResolvableConstraintExpression()
+ {
+ Assert.That(GetType(), !Has.Attribute(typeof(DescriptionAttribute)));
+ }
+ }
+
+ [TestFixture, Description("Test")]
+ public class AndOperatorOverride : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<and <greaterthan 5> <lessthan 10>>";
+ staticSyntax = Is.GreaterThan(5) & Is.LessThan(10);
+ inheritedSyntax = Helper().GreaterThan(5) & Is.LessThan(10);
+ builderSyntax = Builder().GreaterThan(5) & Builder().LessThan(10);
+ }
+
+ [Test]
+ public void AndOperatorCanCombineTwoResolvableConstraintExpressions()
+ {
+ Assert.That(GetType(), Has.Attribute(typeof(TestFixtureAttribute)) & Has.Attribute(typeof(DescriptionAttribute)));
+ }
+
+ [Test]
+ public void AndOperatorCanCombineConstraintAndResolvableConstraintExpression()
+ {
+ Assert.That(GetType(), Is.EqualTo(typeof(AndOperatorOverride)) & Has.Attribute(typeof(DescriptionAttribute)));
+ }
+
+ [Test]
+ public void AndOperatorCanCombineResolvableConstraintExpressionAndConstraint()
+ {
+ Assert.That(GetType(), Has.Attribute(typeof(DescriptionAttribute)) & Is.EqualTo(typeof(AndOperatorOverride)));
+ }
+ }
+
+ [TestFixture]
+ public class OrOperatorOverride : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<or <lessthan 5> <greaterthan 10>>";
+ staticSyntax = Is.LessThan(5) | Is.GreaterThan(10);
+ inheritedSyntax = Helper().LessThan(5) | Is.GreaterThan(10);
+ builderSyntax = Builder().LessThan(5) | Is.GreaterThan(10);
+ }
+
+ [Test]
+ public void OrOperatorCanCombineTwoResolvableConstraintExpressions()
+ {
+ Assert.That(GetType(), Has.Attribute(typeof(TestFixtureAttribute)) | Has.Attribute(typeof(TestCaseAttribute)));
+ }
+
+ [Test]
+ public void OrOperatorCanCombineResolvableConstraintExpressionAndConstraint()
+ {
+ Assert.That(GetType(), Has.Attribute(typeof(TestFixtureAttribute)) | Is.EqualTo(7));
+ }
+
+ [Test]
+ public void OrOperatorCanCombineConstraintAndResolvableConstraintExpression()
+ {
+ Assert.That(GetType(), Is.EqualTo(7) | Has.Attribute(typeof(TestFixtureAttribute)));
+ }
+ }
+
+ public class MixedOperatorOverrides
+ {
+ [Test]
+ public void ComplexTests()
+ {
+ string expected = "<and <and <not <null>> <not <lessthan 5>>> <not <greaterthan 10>>>";
+
+ Constraint c =
+ Is.Not.Null & Is.Not.LessThan(5) & Is.Not.GreaterThan(10);
+ Assert.That(c.ToString(), Is.EqualTo(expected).NoClip);
+
+ c = !Is.Null & !Is.LessThan(5) & !Is.GreaterThan(10);
+ Assert.That(c.ToString(), Is.EqualTo(expected).NoClip);
+
+ Constraint x = null;
+ c = !x & !Is.LessThan(5) & !Is.GreaterThan(10);
+ Assert.That(c.ToString(), Is.EqualTo(expected).NoClip);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/OperatorTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/OperatorTests.cs
new file mode 100755
index 0000000..f1bb1c1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/OperatorTests.cs
@@ -0,0 +1,271 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Syntax
+{
+ #region Not
+ public class NotTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<not <null>>";
+ staticSyntax = Is.Not.Null;
+ inheritedSyntax = Helper().Not.Null;
+ builderSyntax = Builder().Not.Null;
+ }
+ }
+
+ public class NotTest_Cascaded : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<not <not <not <null>>>>";
+ staticSyntax = Is.Not.Not.Not.Null;
+ inheritedSyntax = Helper().Not.Not.Not.Null;
+ builderSyntax = Builder().Not.Not.Not.Null;
+ }
+ }
+ #endregion
+
+ #region All
+ public class AllTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<all <greaterthan 0>>";
+ staticSyntax = Is.All.GreaterThan(0);
+ inheritedSyntax = Helper().All.GreaterThan(0);
+ builderSyntax = Builder().All.GreaterThan(0);
+ }
+ }
+ #endregion
+
+ #region Some
+ public class SomeTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<some <equal 3>>";
+ staticSyntax = Has.Some.EqualTo(3);
+ inheritedSyntax = Helper().Some.EqualTo(3);
+ builderSyntax = Builder().Some.EqualTo(3);
+ }
+ }
+
+ public class SomeTest_BeforeBinaryOperators : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<some <or <and <greaterthan 0> <lessthan 100>> <equal 999>>>";
+ staticSyntax = Has.Some.GreaterThan(0).And.LessThan(100).Or.EqualTo(999);
+ inheritedSyntax = Helper().Some.GreaterThan(0).And.LessThan(100).Or.EqualTo(999);
+ builderSyntax = Builder().Some.GreaterThan(0).And.LessThan(100).Or.EqualTo(999);
+ }
+ }
+
+ public class SomeTest_NestedSome : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<some <some <lessthan 100>>>";
+ staticSyntax = Has.Some.With.Some.LessThan(100);
+ inheritedSyntax = Helper().Some.With.Some.LessThan(100);
+ builderSyntax = Builder().Some.With.Some.LessThan(100);
+ }
+
+ }
+
+ public class SomeTest_UseOfAndSome : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<and <some <greaterthan 0>> <some <lessthan 100>>>";
+ staticSyntax = Has.Some.GreaterThan(0).And.Some.LessThan(100);
+ inheritedSyntax = Helper().Some.GreaterThan(0).And.Some.LessThan(100);
+ builderSyntax = Builder().Some.GreaterThan(0).And.Some.LessThan(100);
+ }
+ }
+ #endregion
+
+ #region None
+ public class NoneTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<none <lessthan 0>>";
+ staticSyntax = Has.None.LessThan(0);
+ inheritedSyntax = Helper().None.LessThan(0);
+ builderSyntax = Builder().None.LessThan(0);
+ }
+ }
+ #endregion
+
+ #region And
+ public class AndTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<and <greaterthan 5> <lessthan 10>>";
+ staticSyntax = Is.GreaterThan(5).And.LessThan(10);
+ inheritedSyntax = Helper().GreaterThan(5).And.LessThan(10);
+ builderSyntax = Builder().GreaterThan(5).And.LessThan(10);
+ }
+ }
+
+ public class AndTest_ThreeAndsWithNot : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<and <not <null>> <and <not <lessthan 5>> <not <greaterthan 10>>>>";
+ staticSyntax = Is.Not.Null.And.Not.LessThan(5).And.Not.GreaterThan(10);
+ inheritedSyntax = Helper().Not.Null.And.Not.LessThan(5).And.Not.GreaterThan(10);
+ builderSyntax = Builder().Not.Null.And.Not.LessThan(5).And.Not.GreaterThan(10);
+ }
+ }
+ #endregion
+
+ #region Or
+ public class OrTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<or <lessthan 5> <greaterthan 10>>";
+ staticSyntax = Is.LessThan(5).Or.GreaterThan(10);
+ inheritedSyntax = Helper().LessThan(5).Or.GreaterThan(10);
+ builderSyntax = Builder().LessThan(5).Or.GreaterThan(10);
+ }
+ }
+
+ public class OrTest_ThreeOrs : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<or <lessthan 5> <or <greaterthan 10> <equal 7>>>";
+ staticSyntax = Is.LessThan(5).Or.GreaterThan(10).Or.EqualTo(7);
+ inheritedSyntax = Helper().LessThan(5).Or.GreaterThan(10).Or.EqualTo(7);
+ builderSyntax = Builder().LessThan(5).Or.GreaterThan(10).Or.EqualTo(7);
+ }
+ }
+ #endregion
+
+ #region Binary Operator Precedence
+ public class AndIsEvaluatedBeforeFollowingOr : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<or <and <lessthan 100> <greaterthan 0>> <equal 999>>";
+ staticSyntax = Is.LessThan(100).And.GreaterThan(0).Or.EqualTo(999);
+ inheritedSyntax = Helper().LessThan(100).And.GreaterThan(0).Or.EqualTo(999);
+ builderSyntax = Builder().LessThan(100).And.GreaterThan(0).Or.EqualTo(999);
+ }
+ }
+
+ public class AndIsEvaluatedBeforePrecedingOr : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<or <equal 999> <and <greaterthan 0> <lessthan 100>>>";
+ staticSyntax = Is.EqualTo(999).Or.GreaterThan(0).And.LessThan(100);
+ inheritedSyntax = Helper().EqualTo(999).Or.GreaterThan(0).And.LessThan(100);
+ builderSyntax = Builder().EqualTo(999).Or.GreaterThan(0).And.LessThan(100);
+ }
+ }
+ #endregion
+
+ public class OperatorPrecedenceTests
+ {
+ public class A
+ {
+ public B B
+ {
+ get { return new B(); }
+ }
+
+ public string X
+ {
+ get { return "X in A"; }
+ }
+
+ public string Y
+ {
+ get { return "Y in A"; }
+ }
+ }
+
+ public class B
+ {
+ public string X
+ {
+ get { return "X in B"; }
+ }
+
+ public string Y
+ {
+ get { return "Y in B"; }
+ }
+ }
+
+ [Test]
+ public void WithTests()
+ {
+ A a = new A();
+ Assert.That(a, Has.Property("X").EqualTo("X in A")
+ .And.Property("Y").EqualTo("Y in A"));
+ Assert.That(a, Has.Property("X").EqualTo("X in A")
+ .And.Property("B").Property("X").EqualTo("X in B"));
+ Assert.That(a, Has.Property("X").EqualTo("X in A")
+ .And.Property("B").With.Property("X").EqualTo("X in B"));
+ Assert.That(a, Has.Property("B").Property("X").EqualTo("X in B")
+ .And.Property("B").Property("Y").EqualTo("Y in B"));
+ Assert.That(a, Has.Property("B").Property("X").EqualTo("X in B")
+ .And.Property("B").With.Property("Y").EqualTo("Y in B"));
+ Assert.That(a, Has.Property("B").With.Property("X").EqualTo("X in B")
+ .And.Property("Y").EqualTo("Y in B"));
+ }
+
+ [Test]
+ public void SomeTests()
+ {
+ string[] array = new string[] { "a", "aa", "x", "xy", "xyz" };
+ //Assert.That(array, Has.Some.StartsWith("a").And.Some.Length.EqualTo(3));
+ Assert.That(array, Has.None.StartsWith("a").And.Length.EqualTo(3));
+ Assert.That(array, Has.Some.StartsWith("x").And.Length.EqualTo(3));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/PathConstraintTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/PathConstraintTests.cs
new file mode 100755
index 0000000..1f9dca6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/PathConstraintTests.cs
@@ -0,0 +1,172 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.IO;
+
+namespace NUnit.Framework.Syntax
+{
+ public class SamePathTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+ string defaultCaseSensitivity = Path.DirectorySeparatorChar == '\\'
+ ? "ignorecase" : "respectcase";
+
+ parseTree = string.Format(@"<samepath ""{0}"" {1}>", path, defaultCaseSensitivity);
+ staticSyntax = Is.SamePath(path);
+ inheritedSyntax = Helper().SamePath(path);
+ builderSyntax = Builder().SamePath(path);
+ }
+ }
+
+ public class SamePathTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<samepath ""{0}"" ignorecase>", path);
+ staticSyntax = Is.SamePath(path).IgnoreCase;
+ inheritedSyntax = Helper().SamePath(path).IgnoreCase;
+ builderSyntax = Builder().SamePath(path).IgnoreCase;
+ }
+ }
+
+ public class NotSamePathTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<not <samepath ""{0}"" ignorecase>>", path);
+ staticSyntax = Is.Not.SamePath(path).IgnoreCase;
+ inheritedSyntax = Helper().Not.SamePath(path).IgnoreCase;
+ builderSyntax = Builder().Not.SamePath(path).IgnoreCase;
+ }
+ }
+
+ public class SamePathTest_RespectCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<samepath ""{0}"" respectcase>", path);
+ staticSyntax = Is.SamePath(path).RespectCase;
+ inheritedSyntax = Helper().SamePath(path).RespectCase;
+ builderSyntax = Builder().SamePath(path).RespectCase;
+ }
+ }
+
+ public class NotSamePathTest_RespectCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<not <samepath ""{0}"" respectcase>>", path);
+ staticSyntax = Is.Not.SamePath(path).RespectCase;
+ inheritedSyntax = Helper().Not.SamePath(path).RespectCase;
+ builderSyntax = Builder().Not.SamePath(path).RespectCase;
+ }
+ }
+
+ public class SamePathOrUnderTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+ string defaultCaseSensitivity = Path.DirectorySeparatorChar == '\\'
+ ? "ignorecase" : "respectcase";
+
+ parseTree = string.Format(@"<samepathorunder ""{0}"" {1}>", path, defaultCaseSensitivity);
+ staticSyntax = Is.SamePathOrUnder(path);
+ inheritedSyntax = Helper().SamePathOrUnder(path);
+ builderSyntax = Builder().SamePathOrUnder(path);
+ }
+ }
+
+ public class SamePathOrUnderTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<samepathorunder ""{0}"" ignorecase>", path);
+ staticSyntax = Is.SamePathOrUnder(path).IgnoreCase;
+ inheritedSyntax = Helper().SamePathOrUnder(path).IgnoreCase;
+ builderSyntax = Builder().SamePathOrUnder(path).IgnoreCase;
+ }
+ }
+
+ public class NotSamePathOrUnderTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<not <samepathorunder ""{0}"" ignorecase>>", path);
+ staticSyntax = Is.Not.SamePathOrUnder(path).IgnoreCase;
+ inheritedSyntax = Helper().Not.SamePathOrUnder(path).IgnoreCase;
+ builderSyntax = Builder().Not.SamePathOrUnder(path).IgnoreCase;
+ }
+ }
+
+ public class SamePathOrUnderTest_RespectCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<samepathorunder ""{0}"" respectcase>", path);
+ staticSyntax = Is.SamePathOrUnder(path).RespectCase;
+ inheritedSyntax = Helper().SamePathOrUnder(path).RespectCase;
+ builderSyntax = Builder().SamePathOrUnder(path).RespectCase;
+ }
+ }
+
+ public class NotSamePathOrUnderTest_RespectCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ string path = "/path/to/match";
+
+ parseTree = string.Format(@"<not <samepathorunder ""{0}"" respectcase>>", path);
+ staticSyntax = Is.Not.SamePathOrUnder(path).RespectCase;
+ inheritedSyntax = Helper().Not.SamePathOrUnder(path).RespectCase;
+ builderSyntax = Builder().Not.SamePathOrUnder(path).RespectCase;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/PropertyTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/PropertyTests.cs
new file mode 100755
index 0000000..1f3440c
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/PropertyTests.cs
@@ -0,0 +1,131 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Syntax
+{
+ public class PropertyExistsTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<propertyexists X>";
+ staticSyntax = Has.Property("X");
+ inheritedSyntax = Helper().Property("X");
+ builderSyntax = Builder().Property("X");
+ }
+ }
+
+ public class PropertyExistsTest_AndFollows : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<and <propertyexists X> <equal 7>>";
+ staticSyntax = Has.Property("X").And.EqualTo(7);
+ inheritedSyntax = Helper().Property("X").And.EqualTo(7);
+ builderSyntax = Builder().Property("X").And.EqualTo(7);
+ }
+ }
+
+ public class PropertyTest_ConstraintFollows : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<property X <greaterthan 5>>";
+ staticSyntax = Has.Property("X").GreaterThan(5);
+ inheritedSyntax = Helper().Property("X").GreaterThan(5);
+ builderSyntax = Builder().Property("X").GreaterThan(5);
+ }
+ }
+
+ public class PropertyTest_NotFollows : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<property X <not <greaterthan 5>>>";
+ staticSyntax = Has.Property("X").Not.GreaterThan(5);
+ inheritedSyntax = Helper().Property("X").Not.GreaterThan(5);
+ builderSyntax = Builder().Property("X").Not.GreaterThan(5);
+ }
+ }
+
+ public class LengthTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<property Length <greaterthan 5>>";
+ staticSyntax = Has.Length.GreaterThan(5);
+ inheritedSyntax = Helper().Length.GreaterThan(5);
+ builderSyntax = Builder().Length.GreaterThan(5);
+ }
+ }
+
+ public class CountTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<property Count <equal 5>>";
+ staticSyntax = Has.Count.EqualTo(5);
+ inheritedSyntax = Helper().Count.EqualTo(5);
+ builderSyntax = Builder().Count.EqualTo(5);
+ }
+ }
+
+ public class MessageTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<property Message <startswith ""Expected"">>";
+ staticSyntax = Has.Message.StartsWith("Expected");
+ inheritedSyntax = Helper().Message.StartsWith("Expected");
+ builderSyntax = Builder().Message.StartsWith("Expected");
+ }
+ }
+
+ public class PropertySyntaxVariations
+ {
+ private readonly int[] ints = new int[] { 1, 2, 3 };
+
+ [Test]
+ public void ExistenceTest()
+ {
+ Assert.That(ints, Has.Property("Length"));
+ Assert.That(ints, Has.Length);
+ }
+
+ [Test]
+ public void SeparateConstraintTest()
+ {
+ Assert.That(ints, Has.Property("Length").EqualTo(3));
+ Assert.That(ints, Has.Length.EqualTo(3));
+ }
+ }
+} \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/SerializableConstraints.cs b/NUnitLite-0.9.0/src/tests/Syntax/SerializableConstraints.cs
new file mode 100755
index 0000000..0bee44e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/SerializableConstraints.cs
@@ -0,0 +1,55 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+namespace NUnit.Framework.Syntax
+{
+#if !NETCF && !SILVERLIGHT
+ [TestFixture]
+ public class BinarySerializableTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<binaryserializable>";
+ staticSyntax = Is.BinarySerializable;
+ inheritedSyntax = Helper().BinarySerializable;
+ builderSyntax = Builder().BinarySerializable;
+ }
+ }
+#endif
+
+#if !SILVERLIGHT
+ [TestFixture]
+ public class XmlSerializableTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<xmlserializable>";
+ staticSyntax = Is.XmlSerializable;
+ inheritedSyntax = Helper().XmlSerializable;
+ builderSyntax = Builder().XmlSerializable;
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/SimpleConstraints.cs b/NUnitLite-0.9.0/src/tests/Syntax/SimpleConstraints.cs
new file mode 100755
index 0000000..c9dcf37
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/SimpleConstraints.cs
@@ -0,0 +1,111 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Syntax
+{
+ public class NullTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<null>";
+ staticSyntax = Is.Null;
+ inheritedSyntax = Helper().Null;
+ builderSyntax = Builder().Null;
+ }
+ }
+
+ public class TrueTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<true>";
+ staticSyntax = Is.True;
+ inheritedSyntax = Helper().True;
+ builderSyntax = Builder().True;
+ }
+ }
+
+ public class FalseTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<false>";
+ staticSyntax = Is.False;
+ inheritedSyntax = Helper().False;
+ builderSyntax = Builder().False;
+ }
+ }
+
+ public class NaNTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<nan>";
+ staticSyntax = Is.NaN;
+ inheritedSyntax = Helper().NaN;
+ builderSyntax = Builder().NaN;
+ }
+ }
+
+ public class PositiveTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<greaterthan 0>";
+ staticSyntax = Is.Positive;
+ inheritedSyntax = Helper().Positive;
+ builderSyntax = Builder().Positive;
+ }
+ }
+
+ public class NegativeTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<lessthan 0>";
+ staticSyntax = Is.Negative;
+ inheritedSyntax = Helper().Negative;
+ builderSyntax = Builder().Negative;
+ }
+ }
+
+ public class EmptyTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<empty>";
+ staticSyntax = Is.Empty;
+ inheritedSyntax = Helper().Empty;
+ builderSyntax = Builder().Empty;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/StringConstraints.cs b/NUnitLite-0.9.0/src/tests/Syntax/StringConstraints.cs
new file mode 100755
index 0000000..46de9c6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/StringConstraints.cs
@@ -0,0 +1,137 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Syntax
+{
+ public class SubstringTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<substring ""X"">";
+ staticSyntax = Is.StringContaining("X");
+ inheritedSyntax = Helper().ContainsSubstring("X");
+ builderSyntax = Builder().ContainsSubstring("X");
+ }
+ }
+
+ public class ContainsSubstringTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<substring ""X"">";
+ staticSyntax = Contains.Substring("X");
+ inheritedSyntax = Helper().ContainsSubstring("X");
+ builderSyntax = Builder().ContainsSubstring("X");
+ }
+ }
+
+ public class SubstringTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<substring ""X"">";
+ staticSyntax = Is.StringContaining("X").IgnoreCase;
+ inheritedSyntax = Helper().ContainsSubstring("X").IgnoreCase;
+ builderSyntax = Builder().ContainsSubstring("X").IgnoreCase;
+ }
+ }
+
+ public class StartsWithTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<startswith ""X"">";
+ staticSyntax = Is.StringStarting("X");
+ inheritedSyntax = Helper().StartsWith("X");
+ builderSyntax = Builder().StartsWith("X");
+ }
+ }
+
+ public class StartsWithTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<startswith ""X"">";
+ staticSyntax = Is.StringStarting("X").IgnoreCase;
+ inheritedSyntax = Helper().StartsWith("X").IgnoreCase;
+ builderSyntax = Builder().StartsWith("X").IgnoreCase;
+ }
+ }
+
+ public class EndsWithTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<endswith ""X"">";
+ staticSyntax = Is.StringEnding("X");
+ inheritedSyntax = Helper().EndsWith("X");
+ builderSyntax = Builder().EndsWith("X");
+ }
+ }
+
+ public class EndsWithTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<endswith ""X"">";
+ staticSyntax = Is.StringEnding("X").IgnoreCase;
+ inheritedSyntax = Helper().EndsWith("X").IgnoreCase;
+ builderSyntax = Builder().EndsWith("X").IgnoreCase;
+ }
+ }
+
+#if !NETCF
+ public class RegexTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<regex ""X"">";
+ staticSyntax = Is.StringMatching("X");
+ inheritedSyntax = Helper().Matches("X");
+ builderSyntax = Builder().Matches("X");
+ }
+ }
+
+ public class RegexTest_IgnoreCase : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<regex ""X"">";
+ staticSyntax = Is.StringMatching("X").IgnoreCase;
+ inheritedSyntax = Helper().Matches("X").IgnoreCase;
+ builderSyntax = Builder().Matches("X").IgnoreCase;
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/SyntaxTest.cs b/NUnitLite-0.9.0/src/tests/Syntax/SyntaxTest.cs
new file mode 100755
index 0000000..31a27dd
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/SyntaxTest.cs
@@ -0,0 +1,70 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Syntax
+{
+ public abstract class SyntaxTest
+ {
+ protected string parseTree;
+ protected IResolveConstraint staticSyntax;
+ protected IResolveConstraint inheritedSyntax;
+ protected IResolveConstraint builderSyntax;
+
+ protected AssertionHelper Helper()
+ {
+ return new AssertionHelper();
+ }
+
+ protected ConstraintExpression Builder()
+ {
+ return new ConstraintExpression();
+ }
+
+ [Test]
+ public void SupportedByStaticSyntax()
+ {
+ Assert.That(
+ staticSyntax.Resolve().ToString(),
+ Is.EqualTo(parseTree).NoClip);
+ }
+
+ [Test]
+ public void SupportedByConstraintBuilder()
+ {
+ Assert.That(
+ builderSyntax.Resolve().ToString(),
+ Is.EqualTo(parseTree).NoClip);
+ }
+
+ [Test]
+ public void SupportedByInheritedSyntax()
+ {
+ Assert.That(
+ inheritedSyntax.Resolve().ToString(),
+ Is.EqualTo(parseTree).NoClip);
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/TestCompiler.cs b/NUnitLite-0.9.0/src/tests/Syntax/TestCompiler.cs
new file mode 100755
index 0000000..237e2bf
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/TestCompiler.cs
@@ -0,0 +1,57 @@
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org.
+// ****************************************************************
+
+using System;
+using System.CodeDom.Compiler;
+using System.IO;
+
+namespace NUnit.Framework.Syntax
+{
+ class TestCompiler
+ {
+ Microsoft.CSharp.CSharpCodeProvider provider;
+#if CLR_1_1
+ ICodeCompiler compiler;
+#endif
+ CompilerParameters options;
+
+ public TestCompiler() : this( null, null ) { }
+
+ public TestCompiler( string[] assemblyNames ) : this( assemblyNames, null ) { }
+
+ public TestCompiler( string[] assemblyNames, string outputName )
+ {
+ this.provider = new Microsoft.CSharp.CSharpCodeProvider();
+#if CLR_1_1
+ this.compiler = provider.CreateCompiler();
+#endif
+ this.options = new CompilerParameters();
+
+ if ( assemblyNames != null && assemblyNames.Length > 0 )
+ options.ReferencedAssemblies.AddRange( assemblyNames );
+ if ( outputName != null )
+ options.OutputAssembly = outputName;
+
+ options.IncludeDebugInformation = false;
+ options.TempFiles = new TempFileCollection( Path.GetTempPath(), false );
+ options.GenerateInMemory = false;
+ }
+
+ public CompilerParameters Options
+ {
+ get { return options; }
+ }
+
+ public CompilerResults CompileCode( string code )
+ {
+#if CLR_2_0 || CLR_4_0
+ return provider.CompileAssemblyFromSource( options, code );
+#else
+ return compiler.CompileAssemblyFromSource(options, code);
+#endif
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/ThrowsTests.cs b/NUnitLite-0.9.0/src/tests/Syntax/ThrowsTests.cs
new file mode 100755
index 0000000..451efa5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/ThrowsTests.cs
@@ -0,0 +1,241 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.Syntax
+{
+ [TestFixture]
+ public class ThrowsTests
+ {
+ [Test]
+ public void ThrowsException()
+ {
+ IResolveConstraint expr = Throws.Exception;
+ Assert.AreEqual(
+ "<throws>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsExceptionWithConstraint()
+ {
+ IResolveConstraint expr = Throws.Exception.With.Property("ParamName").EqualTo("myParam");
+ Assert.AreEqual(
+ @"<throws <property ParamName <equal ""myParam"">>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsExceptionTypeOf()
+ {
+ IResolveConstraint expr = Throws.Exception.TypeOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <typeof System.ArgumentException>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsTypeOf()
+ {
+ IResolveConstraint expr = Throws.TypeOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <typeof System.ArgumentException>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsTypeOfAndConstraint()
+ {
+ IResolveConstraint expr = Throws.TypeOf(typeof(ArgumentException)).And.Property("ParamName").EqualTo("myParam");
+ Assert.AreEqual(
+ @"<throws <and <typeof System.ArgumentException> <property ParamName <equal ""myParam"">>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsExceptionTypeOfAndConstraint()
+ {
+ IResolveConstraint expr = Throws.Exception.TypeOf(typeof(ArgumentException)).And.Property("ParamName").EqualTo("myParam");
+ Assert.AreEqual(
+ @"<throws <and <typeof System.ArgumentException> <property ParamName <equal ""myParam"">>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsTypeOfWithConstraint()
+ {
+ IResolveConstraint expr = Throws.TypeOf(typeof(ArgumentException)).With.Property("ParamName").EqualTo("myParam");
+ Assert.AreEqual(
+ @"<throws <and <typeof System.ArgumentException> <property ParamName <equal ""myParam"">>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsTypeofWithMessage()
+ {
+ IResolveConstraint expr = Throws.TypeOf(typeof(ArgumentException)).With.Message.EqualTo("my message");
+ Assert.AreEqual(
+ @"<throws <and <typeof System.ArgumentException> <property Message <equal ""my message"">>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsInstanceOf()
+ {
+ IResolveConstraint expr = Throws.InstanceOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <instanceof System.ArgumentException>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsExceptionInstanceOf()
+ {
+ IResolveConstraint expr = Throws.Exception.InstanceOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <instanceof System.ArgumentException>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsInnerException()
+ {
+ IResolveConstraint expr = Throws.InnerException.TypeOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <property InnerException <typeof System.ArgumentException>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsExceptionWithInnerException()
+ {
+ IResolveConstraint expr = Throws.Exception.With.InnerException.TypeOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <property InnerException <typeof System.ArgumentException>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsTypeOfWithInnerException()
+ {
+ IResolveConstraint expr = Throws.TypeOf(typeof(System.Reflection.TargetInvocationException))
+ .With.InnerException.TypeOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <and <typeof System.Reflection.TargetInvocationException> <property InnerException <typeof System.ArgumentException>>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsTargetInvocationExceptionWithInnerException()
+ {
+ IResolveConstraint expr = Throws.TargetInvocationException
+ .With.InnerException.TypeOf(typeof(ArgumentException));
+ Assert.AreEqual(
+ "<throws <and <typeof System.Reflection.TargetInvocationException> <property InnerException <typeof System.ArgumentException>>>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsArgumentException()
+ {
+ IResolveConstraint expr = Throws.ArgumentException;
+ Assert.AreEqual(
+ "<throws <typeof System.ArgumentException>>",
+ expr.Resolve().ToString());
+ }
+
+ [Test]
+ public void ThrowsInvalidOperationException()
+ {
+ IResolveConstraint expr = Throws.InvalidOperationException;
+ Assert.AreEqual(
+ "<throws <typeof System.InvalidOperationException>>",
+ expr.Resolve().ToString());
+ }
+
+#if CLR_2_0 || CLR_4_0
+#if !NETCF
+ [Test]
+ public void DelegateThrowsException()
+ {
+ Assert.That(
+ delegate { throw new ArgumentException(); },
+ Throws.Exception);
+ }
+
+ [Test]
+ public void LambdaThrowsExcepton()
+ {
+ Assert.That(
+ () => new MyClass(null),
+ Throws.InstanceOf<ArgumentNullException>());
+ }
+
+ [Test]
+ public void LambdaThrowsExceptionWithMessage()
+ {
+ Assert.That(
+ () => new MyClass(null),
+ Throws.InstanceOf<ArgumentNullException>()
+ .And.Message.Matches("null"));
+ }
+
+ internal class MyClass
+ {
+ public MyClass(string s)
+ {
+ if (s == null)
+ {
+ throw new ArgumentNullException();
+ }
+ }
+ }
+
+ [Test]
+ public void LambdaThrowsNothing()
+ {
+ Assert.That(() => (object)null, Throws.Nothing);
+ }
+#else
+ [Test]
+ public void DelegateThrowsException()
+ {
+ Assert.That(
+ delegate { Throw(); return; },
+ Throws.Exception);
+ }
+
+ // Encapsulate throw to trick compiler and
+ // avoid unreachable code warning. Can't
+ // use pragma because this is also compiled
+ // under the .NET 1.0 and 1.1 compilers.
+ private void Throw()
+ {
+ throw new ApplicationException();
+ }
+#endif
+#endif
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/Syntax/TypeConstraints.cs b/NUnitLite-0.9.0/src/tests/Syntax/TypeConstraints.cs
new file mode 100755
index 0000000..a9ad9c0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/Syntax/TypeConstraints.cs
@@ -0,0 +1,172 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.Framework.Syntax
+{
+ [TestFixture]
+ public class ExactTypeTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<typeof System.String>";
+ staticSyntax = Is.TypeOf(typeof(string));
+ inheritedSyntax = Helper().TypeOf(typeof(string));
+ builderSyntax = Builder().TypeOf(typeof(string));
+ }
+ }
+
+ [TestFixture]
+ public class InstanceOfTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<instanceof System.String>";
+ staticSyntax = Is.InstanceOf(typeof(string));
+ inheritedSyntax = Helper().InstanceOf(typeof(string));
+ builderSyntax = Builder().InstanceOf(typeof(string));
+ }
+ }
+
+ [TestFixture]
+ public class AssignableFromTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<assignablefrom System.String>";
+ staticSyntax = Is.AssignableFrom(typeof(string));
+ inheritedSyntax = Helper().AssignableFrom(typeof(string));
+ builderSyntax = Builder().AssignableFrom(typeof(string));
+ }
+ }
+
+ [TestFixture]
+ public class AssignableToTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<assignableto System.String>";
+ staticSyntax = Is.AssignableTo(typeof(string));
+ inheritedSyntax = Helper().AssignableTo(typeof(string));
+ builderSyntax = Builder().AssignableTo(typeof(string));
+ }
+ }
+
+ [TestFixture]
+ public class AttributeTest : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<attributeexists NUnit.Framework.TestFixtureAttribute>";
+ staticSyntax = Has.Attribute(typeof(TestFixtureAttribute));
+ inheritedSyntax = Helper().Attribute(typeof(TestFixtureAttribute));
+ builderSyntax = Builder().Attribute(typeof(TestFixtureAttribute));
+ }
+ }
+
+ [TestFixture]
+ public class AttributeTestWithFollowingConstraint : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = @"<attribute NUnit.Framework.TestFixtureAttribute <property Description <not <null>>>>";
+ staticSyntax = Has.Attribute(typeof(TestFixtureAttribute)).Property("Description").Not.Null;
+ inheritedSyntax = Helper().Attribute(typeof(TestFixtureAttribute)).Property("Description").Not.Null;
+ builderSyntax = Builder().Attribute(typeof(TestFixtureAttribute)).Property("Description").Not.Null;
+ }
+ }
+
+#if CLR_2_0 || CLR_4_0
+ [TestFixture]
+ public class ExactTypeTest_Generic : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<typeof System.String>";
+ staticSyntax = Is.TypeOf<string>();
+ inheritedSyntax = Helper().TypeOf<string>();
+ builderSyntax = Builder().TypeOf<string>();
+ }
+ }
+
+ [TestFixture]
+ public class InstanceOfTest_Generic : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<instanceof System.String>";
+ staticSyntax = Is.InstanceOf<string>();
+ inheritedSyntax = Helper().InstanceOf<string>();
+ builderSyntax = Builder().InstanceOf<string>();
+ }
+ }
+
+ [TestFixture]
+ public class AssignableFromTest_Generic : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<assignablefrom System.String>";
+ staticSyntax = Is.AssignableFrom<string>();
+ inheritedSyntax = Helper().AssignableFrom<string>();
+ builderSyntax = Builder().AssignableFrom<string>();
+ }
+ }
+
+ [TestFixture]
+ public class AssignableToTest_Generic : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<assignableto System.String>";
+ staticSyntax = Is.AssignableTo<string>();
+ inheritedSyntax = Helper().AssignableTo<string>();
+ builderSyntax = Builder().AssignableTo<string>();
+ }
+ }
+
+ [TestFixture]
+ public class AttributeTest_Generic : SyntaxTest
+ {
+ [SetUp]
+ public void SetUp()
+ {
+ parseTree = "<attributeexists NUnit.Framework.TestFixtureAttribute>";
+ staticSyntax = Has.Attribute<TestFixtureAttribute>();
+ inheritedSyntax = Helper().Attribute<TestFixtureAttribute>();
+ builderSyntax = Builder().Attribute<TestFixtureAttribute>();
+ }
+ }
+#endif
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectCollection.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectCollection.cs
new file mode 100755
index 0000000..787619f
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectCollection.cs
@@ -0,0 +1,81 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.TestUtilities
+{
+ /// <summary>
+ /// SimpleObjectCollection is used in testing to wrap an array or
+ /// other collection, ensuring that only methods of the ICollection
+ /// interface are accessible.
+ /// </summary>
+ class SimpleObjectCollection : ICollection
+ {
+ private readonly ICollection inner;
+
+ public SimpleObjectCollection(ICollection inner)
+ {
+ this.inner = inner;
+ }
+
+ public SimpleObjectCollection(params object[] inner)
+ {
+ this.inner = inner;
+ }
+
+ #region ICollection Members
+
+ public void CopyTo(Array array, int index)
+ {
+ inner.CopyTo(array, index);
+ }
+
+ public int Count
+ {
+ get { return inner.Count; }
+ }
+
+ public bool IsSynchronized
+ {
+ get { return inner.IsSynchronized; }
+ }
+
+ public object SyncRoot
+ {
+ get { return inner.SyncRoot; }
+ }
+
+ #endregion
+
+ #region IEnumerable Members
+
+ public IEnumerator GetEnumerator()
+ {
+ return inner.GetEnumerator();
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectList.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectList.cs
new file mode 100755
index 0000000..6a32b16
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/Collections/SimpleObjectList.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections;
+
+namespace NUnit.TestUtilities
+{
+ public class SimpleObjectList : IList
+ {
+ private IList inner;
+
+ public SimpleObjectList(IList contents)
+ {
+ Initialize(contents);
+ }
+
+ public SimpleObjectList(params object[] contents)
+ {
+ Initialize(contents);
+ }
+
+ private void Initialize(IList contents)
+ {
+#if CLR_1_1
+ this.inner = new System.Collections.ArrayList();
+#else
+ this.inner = new System.Collections.Generic.List<object>();
+#endif
+ foreach (object o in contents)
+ this.inner.Add(o);
+ }
+
+ #region IList Members
+
+ public int Add(object value)
+ {
+ return inner.Add(value);
+ }
+
+ public void Clear()
+ {
+ inner.Clear();
+ }
+
+ public bool Contains(object value)
+ {
+ return inner.Contains(value);
+ }
+
+ public int IndexOf(object value)
+ {
+ return inner.IndexOf(value);
+ }
+
+ public void Insert(int index, object value)
+ {
+ inner.Insert(index, value);
+ }
+
+ public bool IsFixedSize
+ {
+ get { return inner.IsFixedSize; }
+ }
+
+ public bool IsReadOnly
+ {
+ get { return inner.IsReadOnly; }
+ }
+
+ public void Remove(object value)
+ {
+ inner.Remove(value);
+ }
+
+ public void RemoveAt(int index)
+ {
+ inner.RemoveAt(index);
+ }
+
+ public object this[int index]
+ {
+ get { return inner[index]; }
+ set { inner[index] = value; }
+ }
+
+ #endregion
+
+ #region ICollection Members
+
+ public void CopyTo(Array array, int index)
+ {
+ inner.CopyTo(array, index);
+ }
+
+ public int Count
+ {
+ get { return inner.Count; }
+ }
+
+ public bool IsSynchronized
+ {
+ get { return inner.IsSynchronized; }
+ }
+
+ public object SyncRoot
+ {
+ get { return inner.SyncRoot; }
+ }
+
+ #endregion
+
+ #region IEnumerable Members
+
+ public IEnumerator GetEnumerator()
+ {
+ return inner.GetEnumerator();
+ }
+
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/AlwaysEqualComparer.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/AlwaysEqualComparer.cs
new file mode 100755
index 0000000..8fb8bb3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/AlwaysEqualComparer.cs
@@ -0,0 +1,41 @@
+// ***********************************************************************
+// Copyright (c) 2006 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.TestUtilities
+{
+ internal class AlwaysEqualComparer : IComparer
+ {
+ public bool Called = false;
+
+ int IComparer.Compare(object x, object y)
+ {
+ Called = true;
+
+ // This comparer ALWAYS returns zero (equal)!
+ return 0;
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleEqualityComparer.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleEqualityComparer.cs
new file mode 100755
index 0000000..a64f9f3
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleEqualityComparer.cs
@@ -0,0 +1,43 @@
+#if CLR_2_0 || CLR_4_0
+using System.Collections;
+using System.Collections.Generic;
+
+namespace NUnit.TestUtilities
+{
+ public class SimpleEqualityComparer : IEqualityComparer
+ {
+ public bool Called;
+
+ bool IEqualityComparer.Equals(object x, object y)
+ {
+ Called = true;
+#if SILVERLIGHT
+ return Comparer<object>.Default.Compare(x, y) == 0;
+#else
+ return Comparer.Default.Compare(x, y) == 0;
+#endif
+ }
+
+ int IEqualityComparer.GetHashCode(object x)
+ {
+ return x.GetHashCode();
+ }
+ }
+
+ public class SimpleEqualityComparer<T> : IEqualityComparer<T>
+ {
+ public bool Called;
+
+ bool IEqualityComparer<T>.Equals(T x, T y)
+ {
+ Called = true;
+ return Comparer<T>.Default.Compare(x, y) == 0;
+ }
+
+ int IEqualityComparer<T>.GetHashCode(T x)
+ {
+ return x.GetHashCode();
+ }
+ }
+}
+#endif
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleObjectComparer.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleObjectComparer.cs
new file mode 100755
index 0000000..9309910
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/Comparers/SimpleObjectComparer.cs
@@ -0,0 +1,19 @@
+using System.Collections;
+
+namespace NUnit.TestUtilities
+{
+ public class SimpleObjectComparer : IComparer
+ {
+ public bool Called;
+
+ public int Compare(object x, object y)
+ {
+ Called = true;
+#if SILVERLIGHT
+ return System.Collections.Generic.Comparer<object>.Default.Compare(x, y);
+#else
+ return System.Collections.Comparer.Default.Compare(x, y);
+#endif
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/ResultSummary.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/ResultSummary.cs
new file mode 100755
index 0000000..0abf719
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/ResultSummary.cs
@@ -0,0 +1,207 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+ using System;
+ using NUnit.Framework;
+ using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.TestUtilities
+{
+ /// <summary>
+ /// Summary description for ResultSummary.
+ /// </summary>
+ public class ResultSummary
+ {
+ private int resultCount = 0;
+ private int testsRun = 0;
+ private int failureCount = 0;
+ private int errorCount = 0;
+ private int successCount = 0;
+ private int inconclusiveCount = 0;
+ private int skipCount = 0;
+ private int ignoreCount = 0;
+ private int notRunnable = 0;
+
+ private TimeSpan duration = TimeSpan.Zero;
+ private string name;
+
+ public ResultSummary() { }
+
+ public ResultSummary(ITestResult result)
+ {
+ Summarize(result);
+ }
+
+ private void Summarize(ITestResult result)
+ {
+ if (this.name == null)
+ {
+ this.name = result.Name;
+ this.duration = result.Duration;
+ }
+
+ if (result.HasChildren)
+ {
+ foreach (TestResult childResult in result.Children)
+ Summarize(childResult);
+ }
+ else
+ {
+ resultCount++;
+
+ switch (result.ResultState.Status)
+ {
+ case TestStatus.Passed:
+ successCount++;
+ testsRun++;
+ break;
+ case TestStatus.Failed:
+ failureCount++;
+ testsRun++;
+ break;
+ //case TestStatus.Error:
+ //case TestStatus.Cancelled:
+ //errorCount++;
+ //testsRun++;
+ //break;
+ case TestStatus.Inconclusive:
+ inconclusiveCount++;
+ testsRun++;
+ break;
+ //case TestStatus.NotRunnable:
+ // notRunnable++;
+ // //errorCount++;
+ // break;
+ //case TestStatus.Ignored:
+ // ignoreCount++;
+ // break;
+ case TestStatus.Skipped:
+ default:
+ skipCount++;
+ break;
+ }
+ }
+ }
+
+ public string Name
+ {
+ get { return name; }
+ }
+
+ public bool Success
+ {
+ get { return failureCount == 0; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases for which results
+ /// have been summarized. Any tests excluded by use of
+ /// Category or Explicit attributes are not counted.
+ /// </summary>
+ public int ResultCount
+ {
+ get { return resultCount; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases actually run, which
+ /// is the same as ResultCount, less any Skipped, Ignored
+ /// or NonRunnable tests.
+ /// </summary>
+ public int TestsRun
+ {
+ get { return testsRun; }
+ }
+
+ /// <summary>
+ /// Returns the number of tests that passed
+ /// </summary>
+ public int Passed
+ {
+ get { return successCount; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases that had an error.
+ /// </summary>
+ public int Errors
+ {
+ get { return errorCount; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases that failed.
+ /// </summary>
+ public int Failures
+ {
+ get { return failureCount; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases that failed.
+ /// </summary>
+ public int Inconclusive
+ {
+ get { return inconclusiveCount; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases that were not runnable
+ /// due to errors in the signature of the class or method.
+ /// Such tests are also counted as Errors.
+ /// </summary>
+ public int NotRunnable
+ {
+ get { return notRunnable; }
+ }
+
+ /// <summary>
+ /// Returns the number of test cases that were skipped.
+ /// </summary>
+ public int Skipped
+ {
+ get { return skipCount; }
+ }
+
+ public int Ignored
+ {
+ get { return ignoreCount; }
+ }
+
+ public TimeSpan Duration
+ {
+ get { return duration; }
+ }
+
+ public int TestsNotRun
+ {
+ get { return skipCount + ignoreCount + notRunnable; }
+ }
+
+ public int ErrorsAndFailures
+ {
+ get { return errorCount + failureCount; }
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/TestAssert.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/TestAssert.cs
new file mode 100755
index 0000000..4a51aab
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/TestAssert.cs
@@ -0,0 +1,144 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.TestUtilities
+{
+ public class TestAssert
+ {
+ #region IsRunnable
+
+ /// <summary>
+ /// Verify that a test is runnable
+ /// </summary>
+ public static void IsRunnable(Test test)
+ {
+ Assert.AreEqual(RunState.Runnable, test.RunState);
+ }
+
+ /// <summary>
+ /// Verify that the first child test is runnable
+ /// </summary>
+ public static void FirstChildIsRunnable(Test test)
+ {
+ IsRunnable((Test)test.Tests[0]);
+ }
+
+ /// <summary>
+ /// Verify that a Type can be used to create a
+ /// runnable fixture
+ /// </summary>
+ public static void IsRunnable(Type type)
+ {
+ TestSuite suite = TestBuilder.MakeFixture(type);
+ Assert.NotNull(suite, "Unable to construct fixture");
+ Assert.AreEqual(RunState.Runnable, suite.RunState);
+ }
+
+ /// <summary>
+ /// Verify that a Type is runnable, then run it and
+ /// verify the result.
+ /// </summary>
+ public static void IsRunnable(Type type, ResultState resultState)
+ {
+ TestSuite suite = TestBuilder.MakeFixture(type);
+ Assert.NotNull(suite, "Unable to construct fixture");
+ Assert.AreEqual(RunState.Runnable, suite.RunState);
+ ITestResult result = TestBuilder.RunTest(suite);
+ Assert.AreEqual(resultState, result.ResultState);
+ }
+
+ /// <summary>
+ /// Verify that a named test method is runnable
+ /// </summary>
+ public static void IsRunnable(Type type, string name)
+ {
+ Test test = TestBuilder.MakeTestCase(type, name);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Runnable));
+ }
+
+ /// <summary>
+ /// Verify that the first child (usually a test case)
+ /// of a named test method is runnable
+ /// </summary>
+ public static void FirstChildIsRunnable(Type type, string name)
+ {
+ Test suite = TestBuilder.MakeTestCase(type, name);
+ TestAssert.FirstChildIsRunnable(suite);
+ }
+
+ /// <summary>
+ /// Verify that a named test method is runnable, then
+ /// run it and verify the result.
+ /// </summary>
+ public static void IsRunnable(Type type, string name, ResultState resultState)
+ {
+ Test test = TestBuilder.MakeTestCase(type, name);
+ Assert.That(test.RunState, Is.EqualTo(RunState.Runnable));
+ object testObject = Activator.CreateInstance(type);
+ ITestResult result = TestBuilder.RunTest(test, testObject);
+ if (result.HasChildren) // In case it's a parameterized method
+ result = (ITestResult)result.Children[0];
+ Assert.That(result.ResultState, Is.EqualTo(resultState));
+ }
+
+ #endregion
+
+ #region IsNotRunnable
+ public static void IsNotRunnable(Test test)
+ {
+ Assert.AreEqual(RunState.NotRunnable, test.RunState);
+ ITestResult result = TestBuilder.RunTest(test, null);
+ Assert.AreEqual(ResultState.NotRunnable, result.ResultState);
+ }
+
+ public static void IsNotRunnable(Type type)
+ {
+ TestSuite fixture = TestBuilder.MakeFixture(type);
+ Assert.NotNull(fixture, "Unable to construct fixture");
+ IsNotRunnable(fixture);
+ }
+
+ public static void IsNotRunnable(Type type, string name)
+ {
+ IsNotRunnable(TestBuilder.MakeTestCase(type, name));
+ }
+
+ public static void FirstChildIsNotRunnable(Test suite)
+ {
+ IsNotRunnable((Test)suite.Tests[0]);
+ }
+
+ public static void FirstChildIsNotRunnable(Type type, string name)
+ {
+ FirstChildIsNotRunnable(TestBuilder.MakeParameterizedMethodSuite(type, name));
+ }
+ #endregion
+
+ private TestAssert() { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/TestBuilder.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/TestBuilder.cs
new file mode 100755
index 0000000..f7404f4
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/TestBuilder.cs
@@ -0,0 +1,174 @@
+// ***********************************************************************
+// Copyright (c) 2009 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Reflection;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+using NUnit.Framework.Builders;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Internal.Commands;
+using NUnit.Framework.Extensibility;
+using NUnit.Framework.Internal.WorkItems;
+using System.Threading;
+
+namespace NUnit.TestUtilities
+{
+ /// <summary>
+ /// Utility Class used to build NUnit tests for use as test data
+ /// </summary>
+ public class TestBuilder
+ {
+ private static NUnitTestFixtureBuilder fixtureBuilder = new NUnitTestFixtureBuilder();
+ private static NUnitTestCaseBuilder testBuilder = new NUnitTestCaseBuilder();
+
+#if !NUNITLITE
+ static TestBuilder()
+ {
+ if (!CoreExtensions.Host.Initialized)
+ CoreExtensions.Host.Initialize();
+ }
+#endif
+
+ public static TestSuite MakeFixture(Type type)
+ {
+ return (TestSuite)fixtureBuilder.BuildFrom(type);
+ }
+
+ public static TestSuite MakeFixture(object fixture)
+ {
+ return (TestSuite)fixtureBuilder.BuildFrom(fixture.GetType());
+ }
+
+ public static TestSuite MakeParameterizedMethodSuite(Type type, string methodName)
+ {
+ return (TestSuite)MakeTestCase(type, methodName);
+ }
+
+ public static Test MakeTestCase(Type type, string methodName)
+ {
+ MethodInfo method = type.GetMethod(methodName, BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
+ if (method == null)
+ Assert.Fail("Unable to find method {0} in type {1}", methodName, type.FullName);
+ return testBuilder.BuildFrom(method);
+ }
+
+ public static Test MakeTestCase(object fixture, string methodName)
+ {
+ return MakeTestCase(fixture.GetType(), methodName);
+ }
+
+ public static TestResult RunTestFixture(Type type)
+ {
+ TestSuite suite = MakeFixture(type);
+
+ TestExecutionContext context = new TestExecutionContext();
+ context.TestObject = null;
+
+ CompositeWorkItem work = new CompositeWorkItem(suite, context, TestFilter.Empty);
+ return ExecuteAndWaitForResult(work);
+ }
+
+ public static TestResult RunTestFixture(object fixture)
+ {
+ TestSuite suite = MakeFixture(fixture);
+
+ TestExecutionContext context = new TestExecutionContext();
+ context.TestObject = fixture;
+
+ WorkItem work = WorkItem.CreateWorkItem(suite, context, TestFilter.Empty);
+ return ExecuteAndWaitForResult(work);
+ }
+
+ public static ITestResult RunTestCase(Type type, string methodName)
+ {
+ Test test = MakeTestCase(type, methodName);
+
+ object testObject = null;
+ if (!IsStaticClass(type))
+ testObject = Activator.CreateInstance(type);
+
+ return RunTest(test, testObject);
+ }
+
+ public static ITestResult RunTestCase(object fixture, string methodName)
+ {
+ Test test = MakeTestCase(fixture, methodName);
+ return RunTest(test, fixture);
+ }
+
+ public static WorkItem RunTestCaseAsync(object fixture, string methodName)
+ {
+ Test test = MakeTestCase(fixture, methodName);
+ return RunTestAsync(test, fixture);
+ }
+
+ public static ITestResult RunTest(Test test)
+ {
+ return RunTest(test, null);
+ }
+
+ public static WorkItem RunTestAsync(Test test)
+ {
+ return RunTestAsync(test, (object)null);
+ }
+
+ public static WorkItem RunTestAsync(Test test, object testObject)
+ {
+ TestExecutionContext context = new TestExecutionContext();
+ context.TestObject = testObject;
+
+ WorkItem work = WorkItem.CreateWorkItem(test, context, TestFilter.Empty);
+ work.Execute();
+
+ return work;
+ }
+
+ public static ITestResult RunTest(Test test, object testObject)
+ {
+ TestExecutionContext context = new TestExecutionContext();
+ context.TestObject = testObject;
+
+ WorkItem work = WorkItem.CreateWorkItem(test, context, TestFilter.Empty);
+ return ExecuteAndWaitForResult(work);
+ }
+
+ private static TestResult ExecuteAndWaitForResult(WorkItem work)
+ {
+ work.Execute();
+
+ // TODO: Replace with an event
+ while (work.State != WorkItemState.Complete)
+ Thread.Sleep(1);
+
+ return work.Result;
+ }
+
+ private static bool IsStaticClass(Type type)
+ {
+ return type.IsAbstract && type.IsSealed;
+ }
+
+ private TestBuilder() { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/TestComparer.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/TestComparer.cs
new file mode 100755
index 0000000..aa83dff
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/TestComparer.cs
@@ -0,0 +1,51 @@
+// ***********************************************************************
+// Copyright (c) 2006 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.TestUtilities
+{
+ internal class TestComparer : IComparer
+ {
+ public bool Called = false;
+
+ #region IComparer Members
+ public int Compare(object x, object y)
+ {
+ Called = true;
+
+ if (x == null && y == null)
+ return 0;
+
+ if (x == null || y == null)
+ return -1;
+
+ if (x.Equals(y))
+ return 0;
+
+ return -1;
+ }
+ #endregion
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/TestDelegates.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/TestDelegates.cs
new file mode 100755
index 0000000..6edfd8b
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/TestDelegates.cs
@@ -0,0 +1,66 @@
+// ***********************************************************************
+// Copyright (c) 2008 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+
+namespace NUnit.TestUtilities
+{
+ public class TestDelegates
+ {
+ public static void ThrowsArgumentException()
+ {
+ throw new ArgumentException("myMessage", "myParam");
+ }
+
+ public static void ThrowsSystemException()
+ {
+ throw new Exception("my message");
+ }
+
+ public static void ThrowsNothing()
+ {
+ }
+
+ public static void ThrowsCustomException()
+ {
+ throw new CustomException();
+ }
+
+ public static void ThrowsDerivedCustomException()
+ {
+ throw new DerivedCustomException();
+ }
+
+ public class CustomException : Exception
+ {
+ }
+
+ public class DerivedCustomException : CustomException
+ {
+ }
+
+ public class DerivedException : Exception
+ {
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/TestUtilities/TestFinder.cs b/NUnitLite-0.9.0/src/tests/TestUtilities/TestFinder.cs
new file mode 100755
index 0000000..84337e6
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/TestUtilities/TestFinder.cs
@@ -0,0 +1,98 @@
+// ***********************************************************************
+// Copyright (c) 2007 Charlie Poole
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// ***********************************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Api;
+using NUnit.Framework.Internal;
+
+namespace NUnit.TestUtilities
+{
+ /// <summary>
+ /// Utility class used to locate tests by name in a test suite
+ /// </summary>
+ public class TestFinder
+ {
+ public static Test MustFind(string name, TestSuite suite, bool recursive)
+ {
+ Test test = Find(name, suite, recursive);
+
+ Assert.NotNull(test, "Unable to find test {0}", name);
+
+ return test;
+ }
+
+ public static Test Find(string name, TestSuite suite, bool recursive)
+ {
+ foreach (Test child in suite.Tests)
+ {
+ if (child.Name == name)
+ return child;
+ if (recursive)
+ {
+ TestSuite childSuite = child as TestSuite;
+ if (childSuite != null)
+ {
+ Test grandchild = Find(name, childSuite, true);
+ if (grandchild != null)
+ return grandchild;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static ITestResult MustFind(string name, TestResult result, bool recursive)
+ {
+ ITestResult foundResult = Find(name, result, recursive);
+
+ Assert.NotNull(foundResult, "Unable to find result for {0}", name);
+
+ return foundResult;
+ }
+
+ public static ITestResult Find(string name, TestResult result, bool recursive)
+ {
+ if (result.HasChildren)
+ {
+ foreach (TestResult childResult in result.Children)
+ {
+ if (childResult.Name == name)
+ return childResult;
+
+ if (recursive && childResult.HasChildren)
+ {
+ ITestResult r = Find(name, childResult, true);
+ if (r != null)
+ return r;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private TestFinder() { }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-2.0.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-2.0.csproj
new file mode 100755
index 0000000..0e8b4a5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-2.0.csproj
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{C8FA4073-B24E-4178-93A1-5E1256C8B528}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <IntermediateOutputPath>obj\$(Configuration)\net-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <DefineConstants>TRACE;DEBUG;NET_2_0,CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <OutputPath>..\..\bin\Debug\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <DefineConstants>TRACE;NET_2_0,CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <OutputPath>..\..\bin\Release\net-2.0\</OutputPath>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-2.0.csproj">
+ <Project>{C24A3FC4-2541-4E9C-BADD-564777610B75}</Project>
+ <Name>nunitlite-2.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-2.0.csproj">
+ <Project>{1516338A-F26B-4BA7-AF6E-C3F6A39DC45B}</Project>
+ <Name>mock-assembly-2.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-2.0.csproj">
+ <Project>{442DAB16-3063-4FE3-90B6-C29C3D85360D}</Project>
+ <Name>nunitlite.testdata-2.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\TimeoutTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\DelayedConstraintTest.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestContextTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\AssemblyHelperTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomGeneratorTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\AfterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\InvalidCodeTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\TestCompiler.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-3.5.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-3.5.csproj
new file mode 100755
index 0000000..ea72be5
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-3.5.csproj
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{94A4E298-F324-4531-856F-127505F766E5}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_3_5, CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-3.5\</OutputPath>
+ <DefineConstants>TRACE;NET_3_5, CLR_2_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-3.5.csproj">
+ <Project>{43B24DC5-16D6-45EF-93F1-B021B785A892}</Project>
+ <Name>nunitlite-3.5</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-3.5.csproj">
+ <Project>{1798FBBC-4B6E-4ED8-90A8-7DD9C36194E7}</Project>
+ <Name>mock-assembly-3.5</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-3.5.csproj">
+ <Project>{652AFEEB-B19C-4C67-A014-2248EA72F229}</Project>
+ <Name>nunitlite.testdata-3.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\TimeoutTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\DelayedConstraintTest.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestContextTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\AssemblyHelperTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\AfterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\InvalidCodeTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\TestCompiler.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-4.0.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-4.0.csproj
new file mode 100755
index 0000000..0f3ba45
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-4.0.csproj
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{497A578E-EF93-4190-96E0-B7F22E08027B}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_4_0, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.0\</OutputPath>
+ <DefineConstants>TRACE;NET_4_0, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-4.0.csproj">
+ <Project>{1567BCCE-7BE9-4815-84D7-7F794DB39081}</Project>
+ <Name>nunitlite-4.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-4.0.csproj">
+ <Project>{961F4A5A-CAC4-4A53-9EF0-C6EE26A6429A}</Project>
+ <Name>mock-assembly-4.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-4.0.csproj">
+ <Project>{5C77A144-3CD1-42FC-B622-410E1945CA1E}</Project>
+ <Name>nunitlite.testdata-4.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\TimeoutTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\DelayedConstraintTest.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestContextTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\AssemblyHelperTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\AfterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\InvalidCodeTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\TestCompiler.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-4.5.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-4.5.csproj
new file mode 100755
index 0000000..2b824ef
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-4.5.csproj
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{B08DC15F-FC46-4B50-9366-8F745F41A869}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\net-4.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;NET_4_5, CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\net-4.5\</OutputPath>
+ <DefineConstants>TRACE;NET_4_5,CLR_4_0,NUNITLITE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Assertions\AsyncThrowsTests.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\TimeoutTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\DelayedConstraintTest.cs" />
+ <Compile Include="Constraints\AsyncDelayedConstraintTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestContextTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\AssemblyHelperTests.cs" />
+ <Compile Include="Internal\AsyncTestMethodTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\NUnitTestCaseBuilderTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\AfterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\InvalidCodeTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\TestCompiler.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-4.5.csproj">
+ <Project>{d12f0f7b-8de3-43ec-ba49-41052d065a9b}</Project>
+ <Name>nunitlite-4.5</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-4.5.csproj">
+ <Project>{a57ffbd8-684a-4868-a4e1-a5d28ec6ea3b}</Project>
+ <Name>mock-assembly-4.5</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-4.5.csproj">
+ <Project>{6358fbca-9ca2-4a70-af87-18b916400cee}</Project>
+ <Name>nunitlite.testdata-4.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-2.0.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-2.0.csproj
new file mode 100755
index 0000000..8e56770
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-2.0.csproj
@@ -0,0 +1,217 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{4B518BF0-D523-4F75-AF3B-9B41865E634A}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>WindowsCE</PlatformFamilyName>
+ <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
+ <OSVersion>5.0</OSVersion>
+ <DeployDirSuffix>NUnitLite</DeployDirSuffix>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <NativePlatformName>Windows CE</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <StartupObject>
+ </StartupObject>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-2.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-2.0</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-2.0\</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_2_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs" />
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-netcf-2.0.csproj">
+ <Project>{BED999D7-F594-4CE4-A037-E40E2B9C1288}</Project>
+ <Name>nunitlite-netcf-2.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-netcf-2.0.csproj">
+ <Project>{33EA4538-3452-42ED-92A9-4CC3B25032AD}</Project>
+ <Name>mock-assembly-netcf-2.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-netcf-2.0.csproj">
+ <Project>{F67E80E8-DF9F-4C66-9142-5002FA638EB7}</Project>
+ <Name>nunitlite.testdata-netcf-2.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-3.5.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-3.5.csproj
new file mode 100755
index 0000000..4fe6809
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-netcf-3.5.csproj
@@ -0,0 +1,211 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{80A9EC94-2C42-44AC-9D2C-E1418D712C48}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnit.Framework.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <PlatformFamilyName>WindowsCE</PlatformFamilyName>
+ <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
+ <OSVersion>5.0</OSVersion>
+ <DeployDirSuffix>nunitlite.tests_netcf_3._5</DeployDirSuffix>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <NativePlatformName>Windows CE</NativePlatformName>
+ <FormFactorID>
+ </FormFactorID>
+ <IntermediateOutputPath>obj\$(Configuration)\netcf-3.5\</IntermediateOutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\netcf-3.5\</OutputPath>
+ <DefineConstants>TRACE;WindowsCE;NETCF;NETCF_3_5;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <FileAlignment>512</FileAlignment>
+ <WarningLevel>4</WarningLevel>
+ <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="mscorlib" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs" />
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-netcf-3.5.csproj">
+ <Project>{5F6CB3DC-5CE5-4C6A-AB23-936DB3B35DCC}</Project>
+ <Name>nunitlite-netcf-3.5</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-netcf-3.5.csproj">
+ <Project>{B0C85907-1103-44F4-ACFF-6A1B9170C0B1}</Project>
+ <Name>mock-assembly-netcf-3.5</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-netcf-3.5.csproj">
+ <Project>{0B7C0B55-6A49-4F32-993E-C9ED6DA0B73C}</Project>
+ <Name>nunitlite.testdata-netcf-3.5</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+ <HostingProcess disable="1" />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-3.0.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-3.0.csproj
new file mode 100755
index 0000000..5cf8392
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-3.0.csproj
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{FFEA1F81-9631-43A8-8368-FBC14B1E7B02}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>true</SilverlightApplication>
+ <SupportedCultures />
+ <XapOutputs>true</XapOutputs>
+ <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+ <XapFilename>nunitlite.tests-sl-3.0.xap</XapFilename>
+ <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+ <SilverlightAppEntry>NUnitLite.Tests.App</SilverlightAppEntry>
+ <TestPageFileName>TestPage.html</TestPageFileName>
+ <CreateTestPage>true</CreateTestPage>
+ <ValidateXaml>true</ValidateXaml>
+ <EnableOutOfBrowser>true</EnableOutOfBrowser>
+ <OutOfBrowserSettingsFile>Properties\OutOfBrowserSettings.xml</OutOfBrowserSettingsFile>
+ <UsePlatformExtensions>false</UsePlatformExtensions>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <LinkedServerProject />
+ <SignManifests>false</SignManifests>
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-3.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-3.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_3_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>false</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>
+ </AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.Silverlight.Testing">
+ <HintPath>$(MSBuildExtensionsPath)\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.Silverlight.Testing.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight">
+ <HintPath>$(MSBuildExtensionsPath)\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Windows">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="mscorlib">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="system">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Core">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Xml">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Windows.Browser">
+ <Private>True</Private>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs" />
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </ApplicationDefinition>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Properties\AppManifest.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Properties\OutOfBrowserSettings.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-3.0.csproj">
+ <Project>{02B02379-2596-4E45-8B10-835D62EA2D9E}</Project>
+ <Name>nunitlite-sl-3.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-sl-3.0.csproj">
+ <Project>{BB355D2C-FB4F-4526-9B40-7944C40FDFDA}</Project>
+ <Name>mock-assembly-sl-3.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-sl-3.0.csproj">
+ <Project>{6BB1FF9E-DF15-4999-8EEE-F4DA328FBCBB}</Project>
+ <Name>nunitlite.testdata-sl-3.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-4.0.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-4.0.csproj
new file mode 100755
index 0000000..a35ba52
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-4.0.csproj
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{0B899C26-9114-440A-A8A1-615CDE7EE6BD}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>true</SilverlightApplication>
+ <SupportedCultures />
+ <XapOutputs>true</XapOutputs>
+ <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+ <XapFilename>nunitlite.tests-sl-4.0.xap</XapFilename>
+ <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+ <SilverlightAppEntry>NUnitLite.Tests.App</SilverlightAppEntry>
+ <TestPageFileName>TestPage.html</TestPageFileName>
+ <CreateTestPage>true</CreateTestPage>
+ <ValidateXaml>true</ValidateXaml>
+ <EnableOutOfBrowser>true</EnableOutOfBrowser>
+ <OutOfBrowserSettingsFile>Properties\OutOfBrowserSettings.xml</OutOfBrowserSettingsFile>
+ <UsePlatformExtensions>false</UsePlatformExtensions>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <LinkedServerProject />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-4.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!--
+ //
+ // Silverlight Code Coverage Instrumentation
+ // List any libraries or assemblies that you would like to instrument during
+ // a code coverage pass. An example, for ClassLibrary1, is provided, and
+ // commented out below as a starting point:
+ //
+ -->
+ <!--
+ <ItemGroup>
+ <InstrumentSilverlightAssemblies Include="SilverlightClassLibrary1">
+ <Visible>false</Visible>
+ </InstrumentSilverlightAssemblies>
+ </ItemGroup>
+ -->
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SL_4_0;CLR_4_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-4.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;SL_4_0;CLR_2_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>false</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>
+ </AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.Silverlight.Testing">
+ <HintPath>$(MSBuildExtensionsPath)\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.Silverlight.Testing.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight">
+ <HintPath>$(MSBuildExtensionsPath)\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Windows">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="mscorlib" />
+ <Reference Include="system" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Windows.Browser">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Xml">
+ <Private>True</Private>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs" />
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs" />
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </ApplicationDefinition>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Properties\AppManifest.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-4.0.csproj">
+ <Project>{41326141-EB24-4984-9D9B-5CFAA55946BA}</Project>
+ <Name>nunitlite-sl-4.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-sl-4.0.csproj">
+ <Project>{3C1249FC-B5DF-4E3A-ADDD-817526254876}</Project>
+ <Name>mock-assembly-sl-4.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-sl-4.0.csproj">
+ <Project>{E97412B5-8C91-4236-8E9A-24C8E20BC675}</Project>
+ <Name>nunitlite.testdata-sl-4.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Properties\OutOfBrowserSettings.xml" />
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-5.0.csproj b/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-5.0.csproj
new file mode 100755
index 0000000..f48c922
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests-sl-5.0.csproj
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{7107C352-7F42-497E-A26C-25E9AAE8E54C}</ProjectGuid>
+ <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NUnitLite.Tests</RootNamespace>
+ <AssemblyName>nunitlite.tests</AssemblyName>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>true</SilverlightApplication>
+ <SupportedCultures />
+ <XapOutputs>true</XapOutputs>
+ <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+ <XapFilename>nunitlite.tests-sl-5.0.xap</XapFilename>
+ <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+ <SilverlightAppEntry>NUnitLite.Tests.App</SilverlightAppEntry>
+ <TestPageFileName>TestPage.html</TestPageFileName>
+ <CreateTestPage>true</CreateTestPage>
+ <ValidateXaml>true</ValidateXaml>
+ <EnableOutOfBrowser>true</EnableOutOfBrowser>
+ <OutOfBrowserSettingsFile>Properties\OutOfBrowserSettings.xml</OutOfBrowserSettingsFile>
+ <UsePlatformExtensions>false</UsePlatformExtensions>
+ <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+ <LinkedServerProject />
+ <TargetFrameworkProfile />
+ <IntermediateOutputPath>obj\$(Configuration)\sl-5.0\</IntermediateOutputPath>
+ </PropertyGroup>
+ <!--
+ //
+ // Silverlight Code Coverage Instrumentation
+ // List any libraries or assemblies that you would like to instrument during
+ // a code coverage pass. An example, for ClassLibrary1, is provided, and
+ // commented out below as a starting point:
+ //
+ -->
+ <!--
+ <ItemGroup>
+ <InstrumentSilverlightAssemblies Include="SilverlightClassLibrary1">
+ <Visible>false</Visible>
+ </InstrumentSilverlightAssemblies>
+ </ItemGroup>
+ -->
+ <!-- This property group is only here to support building this project using the
+ MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs
+ to set the TargetFrameworkVersion to v3.5 -->
+ <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\bin\Debug\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;SILVERLIGHT;CLR_4_0;SL_5_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\Release\sl-5.0\</OutputPath>
+ <DefineConstants>TRACE;SILVERLIGHT;CLR_4_0;SL_5_0;NUNITLITE</DefineConstants>
+ <NoStdLib>true</NoStdLib>
+ <NoConfig>true</NoConfig>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.Silverlight.Testing">
+ <HintPath>$(MSBuildExtensionsPath)\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.Silverlight.Testing.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight">
+ <HintPath>$(MSBuildExtensionsPath)\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll</HintPath>
+ </Reference>
+ <Reference Include="system, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Windows">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="mscorlib" />
+ <Reference Include="System.Xml">
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Windows.Browser">
+ <Private>True</Private>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Api\ResultStateTests.cs" />
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Assertions\ArrayEqualsFailureMessageFixture.cs" />
+ <Compile Include="Assertions\ArrayEqualsFixture.cs" />
+ <Compile Include="Assertions\ArrayNotEqualFixture.cs" />
+ <Compile Include="Assertions\AssertFailTests.cs" />
+ <Compile Include="Assertions\AssertIgnoreTests.cs" />
+ <Compile Include="Assertions\AssertInconclusiveTests.cs" />
+ <Compile Include="Assertions\AssertPassTests.cs" />
+ <Compile Include="Assertions\AssertThatTests.cs" />
+ <Compile Include="Assertions\AssertThrowsTests.cs" />
+ <Compile Include="Assertions\AssumeThatTests.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Assertions\CollectionTests.cs" />
+ <Compile Include="Assertions\ConditionAssertTests.cs" />
+ <Compile Include="Assertions\EqualsFixture.cs" />
+ <Compile Include="Assertions\MessageChecker.cs" />
+ <Compile Include="Assertions\NotEqualFixture.cs" />
+ <Compile Include="Assertions\NotSameFixture.cs" />
+ <Compile Include="Assertions\NullableTypesTests.cs" />
+ <Compile Include="Assertions\SameFixture.cs" />
+ <Compile Include="Attributes\ApplyToTestTests.cs" />
+ <Compile Include="Attributes\AttributeInheritanceTests.cs" />
+ <Compile Include="Attributes\CategoryAttributeTests.cs" />
+ <Compile Include="Attributes\CombinatorialTests.cs" />
+ <Compile Include="Attributes\DatapointTests.cs" />
+ <Compile Include="Attributes\DescriptionTests.cs" />
+ <Compile Include="Attributes\ExpectedExceptionTests.cs" />
+ <Compile Include="Attributes\FixtureSetUpTearDownTests.cs" />
+ <Compile Include="Attributes\MaxTimeTests.cs" />
+ <Compile Include="Attributes\PairwiseTests.cs" />
+ <Compile Include="Attributes\ParameterizedTestFixtureTests.cs" />
+ <Compile Include="Attributes\PropertyAttributeTests.cs" />
+ <Compile Include="Attributes\RepeatedTestTests.cs" />
+ <Compile Include="Attributes\SetCultureAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseAttributeTests.cs" />
+ <Compile Include="Attributes\TestCaseSourceTests.cs" />
+ <Compile Include="Attributes\TestDummy.cs" />
+ <Compile Include="Attributes\TestFixtureAttributeTests.cs" />
+ <Compile Include="Attributes\TheoryTests.cs" />
+ <Compile Include="Attributes\ValuesAttributeTests.cs" />
+ <Compile Include="Attributes\ValueSourceTests.cs" />
+ <Compile Include="Constraints\AllItemsConstraintTests.cs" />
+ <Compile Include="Constraints\AndConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableFromConstraintTests.cs" />
+ <Compile Include="Constraints\AssignableToConstraintTests.cs" />
+ <Compile Include="Constraints\AttributeExistsConstraintTests.cs" />
+ <Compile Include="Constraints\BasicConstraintTests.cs" />
+ <Compile Include="Constraints\BinarySerializableTest.cs" />
+ <Compile Include="Constraints\CollectionContainsConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionEquivalentConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionOrderedConstraintTests.cs" />
+ <Compile Include="Constraints\CollectionSubsetConstraintTests.cs" />
+ <Compile Include="Constraints\ComparisonConstraintTest.cs" />
+ <Compile Include="Constraints\ConstraintTestBase.cs" />
+ <Compile Include="Constraints\EmptyConstraintTest.cs" />
+ <Compile Include="Constraints\EndsWithConstraintTests.cs" />
+ <Compile Include="Constraints\EqualConstraintTests.cs" />
+ <Compile Include="Constraints\ExactCountConstraintTests.cs" />
+ <Compile Include="Constraints\ExactTypeConstraintTests.cs" />
+ <Compile Include="Constraints\FloatingPointNumericsTest.cs" />
+ <Compile Include="Constraints\GreaterThanConstraintTests.cs" />
+ <Compile Include="Constraints\GreaterThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\InstanceOfTypeConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanConstraintTests.cs" />
+ <Compile Include="Constraints\LessThanOrEqualConstraintTests.cs" />
+ <Compile Include="Constraints\MessageWriterTests.cs" />
+ <Compile Include="Constraints\MsgUtilTests.cs" />
+ <Compile Include="Constraints\NotConstraintTests.cs" />
+ <Compile Include="Constraints\NumericsTest.cs" />
+ <Compile Include="Constraints\NUnitComparerTests.cs" />
+ <Compile Include="Constraints\NUnitEqualityComparerTests.cs" />
+ <Compile Include="Constraints\OrConstraintTests.cs" />
+ <Compile Include="Constraints\PathConstraintTests.cs" />
+ <Compile Include="Constraints\PredicateConstraintTests.cs" />
+ <Compile Include="Constraints\PropertyTests.cs" />
+ <Compile Include="Constraints\RangeConstraintTests.cs" />
+ <Compile Include="Constraints\RangeTests.cs" />
+ <Compile Include="Constraints\ReusableConstraintTests.cs" />
+ <Compile Include="Constraints\SameAsTest.cs" />
+ <Compile Include="Constraints\StartsWithConstraintTests.cs" />
+ <Compile Include="Constraints\SubstringConstraintTests.cs" />
+ <Compile Include="Constraints\TestDelegates.cs" />
+ <Compile Include="Constraints\ThrowsConstraintTests.cs" />
+ <Compile Include="Constraints\ToStringTests.cs" />
+ <Compile Include="Constraints\UniqueItemsConstraintTests.cs" />
+ <Compile Include="Constraints\XmlSerializableTest.cs" />
+ <Compile Include="Framework\StackFilterTest.cs" />
+ <Compile Include="Framework\SyntaxTests.cs" />
+ <Compile Include="Framework\TestResultTests.cs" />
+ <Compile Include="Internal\CultureSettingAndDetectionTests.cs" />
+ <Compile Include="Internal\DeduceTypeArgsFromArgs.cs" />
+ <Compile Include="Internal\GenericTestFixtureTests.cs" />
+ <Compile Include="Internal\GenericTestMethodTests.cs" />
+ <Compile Include="Internal\PlatformDetectionTests.cs" />
+ <Compile Include="Internal\PropertyBagTests.cs" />
+ <Compile Include="Internal\RandomizerTests.cs" />
+ <Compile Include="Internal\RuntimeFrameworkTests.cs" />
+ <Compile Include="Internal\SetUpTest.cs" />
+ <Compile Include="Internal\SimpleGenericMethods.cs" />
+ <Compile Include="Internal\TestExecutionContextTests.cs" />
+ <Compile Include="Internal\TestFixtureTests.cs" />
+ <Compile Include="Internal\TestMethodSignatureTests.cs" />
+ <Compile Include="Internal\TestResultTests.cs" />
+ <Compile Include="Internal\TestXmlTests.cs" />
+ <Compile Include="Internal\TextMessageWriterTests.cs" />
+ <Compile Include="Internal\TypeParameterUsedWithTestMethod.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="RecordingTestListener.cs" />
+ <Compile Include="Runner\CommandLineOptionTests.cs" />
+ <Compile Include="Runner\NUnit2XmlOutputWriterTests.cs" />
+ <Compile Include="Syntax\ArbitraryConstraintMatching.cs" />
+ <Compile Include="Syntax\CollectionTests.cs" />
+ <Compile Include="Syntax\ComparisonTests.cs" />
+ <Compile Include="Syntax\EqualityTests.cs" />
+ <Compile Include="Syntax\OperatorOverrides.cs" />
+ <Compile Include="Syntax\OperatorTests.cs" />
+ <Compile Include="Syntax\PathConstraintTests.cs" />
+ <Compile Include="Syntax\PropertyTests.cs" />
+ <Compile Include="Syntax\SerializableConstraints.cs" />
+ <Compile Include="Syntax\SimpleConstraints.cs" />
+ <Compile Include="Syntax\StringConstraints.cs" />
+ <Compile Include="Syntax\SyntaxTest.cs" />
+ <Compile Include="Syntax\ThrowsTests.cs" />
+ <Compile Include="Syntax\TypeConstraints.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectCollection.cs" />
+ <Compile Include="TestUtilities\Collections\SimpleObjectList.cs" />
+ <Compile Include="TestUtilities\Comparers\AlwaysEqualComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleEqualityComparer.cs" />
+ <Compile Include="TestUtilities\Comparers\SimpleObjectComparer.cs" />
+ <Compile Include="TestUtilities\ResultSummary.cs" />
+ <Compile Include="TestUtilities\TestAssert.cs" />
+ <Compile Include="TestUtilities\TestBuilder.cs" />
+ <Compile Include="TestUtilities\TestComparer.cs" />
+ <Compile Include="TestUtilities\TestDelegates.cs" />
+ <Compile Include="TestUtilities\TestFinder.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </ApplicationDefinition>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Properties\AppManifest.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\framework\nunitlite-sl-5.0.csproj">
+ <Project>{5EFE54B3-2494-4DF4-A42A-8492A5EC4BA3}</Project>
+ <Name>nunitlite-sl-5.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\mock-assembly\mock-assembly-sl-5.0.csproj">
+ <Project>{3C19A734-11BB-48FD-81D0-042B6A8D4CFC}</Project>
+ <Name>mock-assembly-sl-5.0</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\testdata\nunitlite.testdata-sl-5.0.csproj">
+ <Project>{A2B5D1FA-D865-4B30-A82D-30BB1C8C474E}</Project>
+ <Name>nunitlite.testdata-sl-5.0</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+ <SilverlightProjectProperties />
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+</Project> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/src/tests/nunitlite.tests.build b/NUnitLite-0.9.0/src/tests/nunitlite.tests.build
new file mode 100755
index 0000000..62fea7e
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/nunitlite.tests.build
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<project name="NUnitLiteTests" default="build" basedir=".">
+
+ <property name="msbuild.project" value="nunitlite.tests-${msbuild.proj.suffix}.csproj"/>
+
+ <include buildfile="../../nunitlite.projects.common"/>
+
+ <target name="nant-clean">
+
+ <delete file="${current.build.dir}/nunitlite.tests.exe"/>
+ <delete file="${current.build.dir}/nunitlite.tests.pdb"/>
+
+ </target>
+
+ <target name="nant-build">
+
+ <property name="csc.target" value="exe" unless="${runtime.platform=='silverlight'}"/>
+ <property name="csc.target" value="library" if="${runtime.platform=='silverlight'}"/>
+ <property name="csc.output" value="nunitlite.tests.exe" unless="${runtime.platform=='silverlight'}"/>
+ <property name="csc.output" value="nunitlite.tests.dll" if="${runtime.platform=='silverlight'}"/>
+
+ <csc target="exe"
+ output="${current.build.dir}/nunitlite.tests.exe"
+ debug="${build.debug}"
+ define="${build.defines};NUNITLITE">
+ <sources basedir=".">
+ <patternset refid="source-files"/>
+ </sources>
+ <references basedir="${current.build.dir}">
+ <include name="mscorlib.dll"/>
+ <include name="System.dll"/>
+ <include name="System.Core.dll" if="${runtime.version >= '3.5'}"/>
+ <include name="System.Windows.dll" if="${runtime.platform == 'silverlight'}"/>
+ <include name="System.Windows.Browser.dll" if="${runtime.platform == 'silverlight'}"/>
+ <include name="System.Xml.dll"/>
+ <include name="nunitlite.dll"/>
+ <include name="nunitlite.testdata.dll"/>
+ <include name="mock-assembly.dll"/>
+ </references>
+ </csc>
+
+ </target>
+
+ <patternset id="source-files">
+ <include name="AssemblyInfo.cs"/>
+ <include name="RecordingTestListener.cs"/>
+
+ <include name="App.g.cs" if="${runtime.platform=='silverlight'}"/>
+ <include name="App.xaml.cs" if="${runtime.platform=='silverlight'}"/>
+
+ <include name="Program.cs" unless="${runtime.platform == 'silverlight'}"/>
+
+ <include name="Api/ResultStateTests.cs"/>
+
+ <include name="Assertions/*.cs"/>
+
+ <include name="Attributes/*.cs"/>
+ <exclude name="Attributes/SetCultureAttributeTests.cs" if="${runtime.platform == 'netcf'}"/>
+
+ <include name="Constraints/*.cs"/>
+ <exclude name="Constraints/DelayedConstraintTest.cs" if="${runtime.platform == 'silverlight'}"/>
+
+ <include name="Framework/*.cs"/>
+
+ <include name="Internal/*.cs"/>
+
+ <include name="Runner/*.cs"/>
+ <!--<exclude name="Runner/CommandLineOptionTests.cs" if="${runtime.platform == 'silverlight'}"/>-->
+
+ <include name="Syntax/*.cs"/>
+ <exclude name="Syntax/TestCompiler.cs" if="${runtime.platform == 'netcf'}"/>
+ <exclude name="Syntax/TestCompiler.cs" if="${runtime.platform == 'silverlight'}"/>
+ <exclude name="Syntax/InvalidCodeTests.cs" if="${runtime.platform == 'netcf'}"/>
+ <exclude name="Syntax/InvalidCodeTests.cs" if="${runtime.platform == 'silverlight'}"/>
+ <exclude name="Syntax/AfterTests.cs" if="${runtime.platform == 'netcf'}"/>
+ <exclude name="Syntax/AfterTests.cs" if="${runtime.platform == 'silverlight'}"/>
+
+ <include name="TestUtilities/*.cs"/>
+ <include name="TestUtilities/Collections/*.cs"/>
+ <include name="TestUtilities/Comparers/*.cs"/>
+ </patternset>
+
+</project>
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/net-4.5/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/App.g.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/App.g.cs
new file mode 100755
index 0000000..e715eb0
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/App.g.cs
@@ -0,0 +1,52 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.cs
new file mode 100755
index 0000000..b85a0e1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.i.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.i.cs
new file mode 100755
index 0000000..b85a0e1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-4.0/App.g.i.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.cs
new file mode 100755
index 0000000..b85a0e1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.i.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.i.cs
new file mode 100755
index 0000000..b85a0e1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/App.g.i.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/Debug/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/App.g.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/App.g.cs
new file mode 100755
index 0000000..e4f1fb9
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/App.g.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C5EA8CC62E98F28D836FF410E75A77C1"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.5420
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-3.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-4.0/App.g.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-4.0/App.g.cs
new file mode 100755
index 0000000..b85a0e1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-4.0/App.g.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/App.g.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/App.g.cs
new file mode 100755
index 0000000..b85a0e1
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/App.g.cs
@@ -0,0 +1,53 @@
+#pragma checksum "C:\Users\ialastairhunter\Documents\nunitlite\src\tests\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2AB1B2E473A12409172A6740CD59F419"
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17929
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Automation.Peers;
+using System.Windows.Automation.Provider;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Interop;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Resources;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+
+
+namespace NUnitLite.Tests {
+
+
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ /// <summary>
+ /// InitializeComponent
+ /// </summary>
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Windows.Application.LoadComponent(this, new System.Uri("/nunitlite.tests;component/App.xaml", System.UriKind.Relative));
+ }
+ }
+}
+
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
diff --git a/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/NUnitLite-0.9.0/src/tests/obj/release/sl-5.0/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
diff --git a/NUnitLite-0.9.0/tools/nant/COPYING.txt b/NUnitLite-0.9.0/tools/nant/COPYING.txt
new file mode 100755
index 0000000..5b6e7c6
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/COPYING.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/NUnitLite-0.9.0/tools/nant/README.txt b/NUnitLite-0.9.0/tools/nant/README.txt
new file mode 100755
index 0000000..79edf19
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/README.txt
@@ -0,0 +1,158 @@
+NAnt
+
+What is it?
+-----------
+NAnt is a .NET based build tool. In theory it is kind of like make without
+make's wrinkles. In practice it's a lot like Ant.
+
+If you are not familiar with Jakarta Ant you can get more information at the
+Ant project web site (http://ant.apache.org/).
+
+
+Why NAnt?
+---------
+Because Ant was too Java specific.
+Because Ant needed the Java runtime. NAnt only needs the .NET
+or Mono runtime.
+
+
+The Latest Version
+------------------
+Details of the latest version can be found on the NAnt project web site
+http://nant.sourceforge.net/
+
+
+Files
+-----
+ README.txt - This file.
+ Makefile - Makefile for compilation with GNU Make.
+ Makefile.nmake - Makefile for compilation with Microsoft NMake.
+
+
+Compilation and Installation
+----------------------------
+
+ a. Overview
+ -----------
+ The compilation process uses NAnt to build NAnt.
+
+ The approach is to first compile a copy of NAnt (using make/nmake) for
+ bootstrapping purpose. Next, the bootstrapped version of NAnt is used in
+ conjunction with NAnt build file (NAnt.build) to build the full version.
+
+
+ b. Prerequisites
+ ----------------
+ To build NAnt, you will need the following components:
+
+ Windows
+ -------
+
+ * A version of the Microsoft .NET Framework
+
+ Available from http://msdn.microsoft.com/netframework/
+
+ You will need the .NET Framework SDK as well as the runtime
+ components if you intend to compile programs.
+
+ Note: NAnt currently supports versions 1.0, 1.1, 2.0, 3.5, and 4.0
+ of the Microsoft .NET Framework.
+
+ or
+
+ * Mono for Windows (version 2.0 or higher)
+
+ Available from http://www.mono-project.com/downloads/
+
+ Linux/Unix
+ ----------
+
+ * GNU toolchain - including GNU make
+
+ * pkg-config
+
+ Available from: http://www.freedesktop.org/Software/pkgconfig
+
+ * A working Mono installation and development libraries (version 2.0 or higher)
+
+ Available from: http://www.mono-project.com/downloads/
+
+
+ b. Building the Software
+ ------------------------
+
+ Build NAnt using Microsoft .NET:
+
+ GNU Make
+ --------
+ make install MONO= MCS=csc prefix=<installation path> [DESTDIR=<staging path>] [TARGET=<nant target>]
+
+ eg. make install MONO= MCS=csc prefix="c:\Program Files" TARGET=net-2.0
+
+ NMake
+ -----
+ nmake -f Makefile.nmake install prefix=<installation path> [DESTDIR=<staging path>] [TARGET=<nant target>]
+
+ eg. nmake -f Makefile.nmake install prefix="c:\Program Files" TARGET=net-4.0
+
+
+ Building NAnt using Mono:
+
+ GNU Make
+ --------
+ make install prefix=<installation path> [DESTDIR=<staging path>] [TARGET=<nant target>]
+
+ eg. make install prefix="c:\Program Files" TARGET=mono-4.0
+
+ NMake
+ -----
+ nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=<installation path> [DESTDIR=<staging path>] [TARGET=<nant target>]
+
+ eg. nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=/usr/local/
+
+Note:
+
+These instructions only apply to the source distribution of NAnt, as the binary distribution
+contains pre-built assemblies.
+
+
+Documentation
+-------------
+Documentation is available in HTML format, in the doc/ directory.
+
+
+License
+-------
+Copyright (C) 2001-2012 Gerry Shaw
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+As a special exception, the copyright holders of this software give you
+permission to link the assemblies with independent modules to produce new
+assemblies, regardless of the license terms of these independent modules,
+and to copy and distribute the resulting assemblies under terms of your
+choice, provided that you also meet, for each linked independent module,
+the terms and conditions of the license of that module. An independent
+module is a module which is not derived from or based on these assemblies.
+If you modify this software, you may extend this exception to your version
+of the software, but you are not obligated to do so. If you do not wish to
+do so, delete this exception statement from your version.
+
+A copy of the GNU General Public License is available in the COPYING.txt file
+included with all NAnt distributions.
+
+For more licensing information refer to the GNU General Public License on the
+GNU Project web site.
+http://www.gnu.org/copyleft/gpl.html
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.dll
new file mode 100755
index 0000000..11c81c2
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.xml
new file mode 100755
index 0000000..2eb2db6
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.CompressionTasks.xml
@@ -0,0 +1,725 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.CompressionTasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.Compression.Tasks.ExpandBaseTask">
+ <summary>
+ Summary description for ExpandTask.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.ExpandBaseTask.ExtractFile(System.IO.Stream,System.String,System.String,System.DateTime,System.Int64)">
+ <summary>
+ Extracts a file entry from the specified stream.
+ </summary>
+ <param name="inputStream">The <see cref="T:System.IO.Stream"/> containing the compressed entry.</param>
+ <param name="destDirectory">The directory where to store the expanded file.</param>
+ <param name="entryName">The name of the entry including directory information.</param>
+ <param name="entryDate">The date of the entry.</param>
+ <param name="entrySize">The uncompressed size of the entry.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The destination directory for the entry could not be created.</para>
+ <para>-or-</para>
+ <para>The entry could not be extracted.</para>
+ </exception>
+ <remarks>
+ We cannot rely on the fact that the directory entry of a given file
+ is created before the file is extracted, so we should create the
+ directory if it doesn't yet exist.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.ExpandBaseTask.ExtractDirectory(System.IO.Stream,System.String,System.String,System.DateTime)">
+ <summary>
+ Extracts a directory entry from the specified stream.
+ </summary>
+ <param name="inputStream">The <see cref="T:System.IO.Stream"/> containing the directory entry.</param>
+ <param name="destDirectory">The directory where to create the subdirectory.</param>
+ <param name="entryName">The name of the directory entry.</param>
+ <param name="entryDate">The date of the entry.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The destination directory for the entry could not be created.</para>
+ </exception>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ExpandBaseTask.Overwrite">
+ <summary>
+ Overwrite files, even if they are newer than the corresponding
+ entries in the archive. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Tasks.GUnzip">
+ <summary>
+ Expands a file packed using GZip compression.
+ </summary>
+ <example>
+ <para>Expands &quot;test.tar.gz&quot; to &quot;test2.tar&quot;.</para>
+ <code>
+ <![CDATA[
+ <gunzip src="test.tar.gz" dest="test.tar" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.GUnzip.ExecuteTask">
+ <summary>
+ Extracts the file from the gzip archive.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.GUnzip.SrcFile">
+ <summary>
+ The file to expand.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.GUnzip.DestFile">
+ <summary>
+ The destination file.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Tasks.TarTask">
+ <summary>
+ Creates a tar file from the specified filesets.
+ </summary>
+ <remarks>
+ <para>Uses <see href="http://www.icsharpcode.net/OpenSource/SharpZipLib/">#ziplib</see> (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#.</para>
+ </remarks>
+ <example>
+ <para>
+ Tar all files in <c>${build.dir}</c> and <c>${doc.dir}</c> into a file
+ called &quot;backup.tar.gz&quot;, and apply gzip compression to it.
+ </para>
+ <code>
+ <![CDATA[
+ <tar destfile="backup.tar.gz" compression="GZip">
+ <fileset basedir="${bin.dir}" prefix="bin">
+ <include name="**/*" />
+ </fileset>
+ <fileset basedir="${doc.dir}" prefix="doc">
+ <include name="**/*" />
+ </fileset>
+ </tar>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.TarTask.ExecuteTask">
+ <summary>
+ Creates the tar file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.TarTask.DestFile">
+ <summary>
+ The tar file to create.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.TarTask.IncludeEmptyDirs">
+ <summary>
+ Include empty directories in the generated tar file. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.TarTask.Flatten">
+ <summary>
+ Ignore directory structure of source directory, compress all files
+ into a single directory.
+ The default value is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.TarTask.TarFileSets">
+ <summary>
+ The set of files to be included in the archive.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.TarTask.CompressionMethod">
+ <summary>
+ The compression method. The default is <see cref="F:NAnt.Compression.Types.TarCompressionMethod.None"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Tasks.UnTarTask">
+ <summary>
+ Extracts files from a tar archive.
+ </summary>
+ <remarks>
+ <para>
+ Uses <see href="http://www.icsharpcode.net/OpenSource/SharpZipLib/">#ziplib</see>
+ (SharpZipLib), an open source Zip/GZip library written entirely in C#.
+ </para>
+ </remarks>
+ <example>
+ <para>Extracts all files from a gzipped tar, preserving the directory structure.</para>
+ <code>
+ <![CDATA[
+ <untar src="nant-bin.tar.gz" dest="bin" compression="gzip" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.UnTarTask.ExecuteTask">
+ <summary>
+ Extracts the files from the archive.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.UnTarTask.SrcFile">
+ <summary>
+ The archive file to expand.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.UnTarTask.DestinationDirectory">
+ <summary>
+ The directory where to store the expanded file(s). The default is
+ the project base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.UnTarTask.CompressionMethod">
+ <summary>
+ The compression method. The default is <see cref="F:NAnt.Compression.Types.TarCompressionMethod.None"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Tasks.UnZipTask">
+ <summary>
+ Extracts files from a zip archive.
+ </summary>
+ <remarks>
+ <para>
+ Uses <see href="http://www.icsharpcode.net/OpenSource/SharpZipLib/">#ziplib</see>
+ (SharpZipLib), an open source Zip/GZip library written entirely in C#.
+ </para>
+ </remarks>
+ <example>
+ <para>Extracts all the file from the zip, preserving the directory structure.</para>
+ <code>
+ <![CDATA[
+ <unzip zipfile="backup.zip"/>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.UnZipTask.ExecuteTask">
+ <summary>
+ Extracts the files from the zip file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.UnZipTask.ZipFile">
+ <summary>
+ The archive file to expand.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.UnZipTask.ToDirectory">
+ <summary>
+ The directory where the expanded files should be stored. The
+ default is the project base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.UnZipTask.Encoding">
+ <summary>
+ The character encoding that has been used for filenames inside the
+ zip file. The default is the system's OEM code page.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Tasks.ZipTask">
+ <summary>
+ Creates a zip file from the specified filesets.
+ </summary>
+ <remarks>
+ <para>
+ Uses <see href="http://www.icsharpcode.net/OpenSource/SharpZipLib/">#ziplib</see>
+ (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Zip all files in <c>${build.dir}</c> and <c>${doc.dir}</c> into a file
+ called &quot;backup.zip&quot;.
+ </para>
+ <code>
+ <![CDATA[
+ <zip zipfile="backup.zip">
+ <fileset basedir="${bin.dir}" prefix="bin">
+ <include name="**/*" />
+ </fileset>
+ <fileset basedir="${doc.dir}" prefix="doc">
+ <include name="**/*" />
+ </fileset>
+ </zip>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Compression.Tasks.ZipTask.ExecuteTask">
+ <summary>
+ Creates the zip file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.ZipFile">
+ <summary>
+ The zip file to create.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.Comment">
+ <summary>
+ The comment for the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.Stamp">
+ <summary>
+ Date/time stamp for the files in the format MM/DD/YYYY HH:MM:SS.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.ZipLevel">
+ <summary>
+ Desired level of compression. Possible values are 0 (STORE only)
+ to 9 (highest). The default is <c>6</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.IncludeEmptyDirs">
+ <summary>
+ Include empty directories in the generated zip file. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.Flatten">
+ <summary>
+ Ignore directory structure of source directory, compress all files
+ into a single directory.
+ The default value is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.ZipFileSets">
+ <summary>
+ The set of files to be included in the archive.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.DuplicateHandling">
+ <summary>
+ Specifies the behaviour when a duplicate file is found. The default
+ is <see cref="T:NAnt.Compression.Types.DuplicateHandling.Add" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Tasks.ZipTask.Encoding">
+ <summary>
+ The character encoding to use for filenames and comment inside the
+ zip file. The default is the system's OEM code page.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.DuplicateHandling">
+ <summary>
+ Specifies how entries with the same name should be processed.
+ </summary>
+ </member>
+ <member name="F:NAnt.Compression.Types.DuplicateHandling.Add">
+ <summary>
+ Overwrite existing entry with same name.
+ </summary>
+ </member>
+ <member name="F:NAnt.Compression.Types.DuplicateHandling.Preserve">
+ <summary>
+ Preserve existing entry with the same name.
+ </summary>
+ </member>
+ <member name="F:NAnt.Compression.Types.DuplicateHandling.Fail">
+ <summary>
+ Report failure when two entries have the same name.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.DuplicateHandlingConverter">
+ <summary>
+ Specialized <see cref="T:System.ComponentModel.EnumConverter"/> for <see cref="T:NAnt.Compression.Types.TarCompressionMethod"/>
+ that ignores case when converting from string.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.DuplicateHandlingConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.DuplicateHandlingConverter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.DuplicateHandlingConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
+ <summary>
+ Converts the given object to the type of this converter, using the
+ specified context and culture information.
+ </summary>
+ <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that provides a format context.</param>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/> object. If a <see langword="null"/> is passed, the current culture is assumed.</param>
+ <param name="value">The <see cref="T:System.Object"/> to convert.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that represents the converted value.
+ </returns>
+ </member>
+ <member name="T:NAnt.Compression.Types.TarCompressionMethod">
+ <summary>
+ Specifies the compression methods supported by <see cref="T:NAnt.Compression.Tasks.TarTask"/>
+ and <see cref="T:NAnt.Compression.Tasks.UnTarTask"/>.
+ </summary>
+ </member>
+ <member name="F:NAnt.Compression.Types.TarCompressionMethod.None">
+ <summary>
+ No compression.
+ </summary>
+ </member>
+ <member name="F:NAnt.Compression.Types.TarCompressionMethod.GZip">
+ <summary>
+ GZIP compression.
+ </summary>
+ </member>
+ <member name="F:NAnt.Compression.Types.TarCompressionMethod.BZip2">
+ <summary>
+ BZIP2 compression.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.TarCompressionMethodConverter">
+ <summary>
+ Specialized <see cref="T:System.ComponentModel.EnumConverter"/> for <see cref="T:NAnt.Compression.Types.TarCompressionMethod"/>
+ that ignores case when converting from string.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarCompressionMethodConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.TarCompressionMethodConverter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarCompressionMethodConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
+ <summary>
+ Converts the given object to the type of this converter, using the
+ specified context and culture information.
+ </summary>
+ <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that provides a format context.</param>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/> object. If a <see langword="null"/> is passed, the current culture is assumed.</param>
+ <param name="value">The <see cref="T:System.Object"/> to convert.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that represents the converted value.
+ </returns>
+ </member>
+ <member name="T:NAnt.Compression.Types.TarFileSet">
+ <summary>
+ A <see cref="T:NAnt.Compression.Types.TarFileSet"/> is a <see cref="T:NAnt.Core.Types.FileSet"/> with extra
+ attributes useful in the context of the <see cref="T:NAnt.Compression.Tasks.TarTask"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.FileMode">
+ <summary>
+ A 3 digit octal string, specify the user, group and other modes
+ in the standard Unix fashion. Only applies to plain files. The
+ default is <c>644</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.DirMode">
+ <summary>
+ A 3 digit octal string, specify the user, group and other modes
+ in the standard Unix fashion. Only applies to directories. The
+ default is <c>755</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.UserName">
+ <summary>
+ The username for the tar entry.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.Uid">
+ <summary>
+ The user identifier (UID) for the tar entry.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.GroupName">
+ <summary>
+ The groupname for the tar entry.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.Gid">
+ <summary>
+ The group identifier (GID) for the tar entry.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSet.Prefix">
+ <summary>
+ The top level directory prefix. If set, all file and directory paths
+ in the fileset will have this value prepended. Can either be a single
+ directory name or a "/" separated path.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.TarFileSetCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Compression.Types.TarFileSet"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.#ctor(NAnt.Compression.Types.TarFileSetCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/> class
+ with the specified <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.#ctor(NAnt.Compression.Types.TarFileSet[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/> class
+ with the specified array of <see cref="T:NAnt.Compression.Types.TarFileSet"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.Add(NAnt.Compression.Types.TarFileSet)">
+ <summary>
+ Adds a <see cref="T:NAnt.Compression.Types.TarFileSet"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.TarFileSet"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.AddRange(NAnt.Compression.Types.TarFileSet[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Compression.Types.TarFileSet"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Compression.Types.TarFileSet"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.AddRange(NAnt.Compression.Types.TarFileSetCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.Contains(NAnt.Compression.Types.TarFileSet)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Compression.Types.TarFileSet"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.TarFileSet"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.CopyTo(NAnt.Compression.Types.TarFileSet[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.IndexOf(NAnt.Compression.Types.TarFileSet)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Compression.Types.TarFileSet"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.TarFileSet"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Compression.Types.TarFileSet"/>. If the <see cref="T:NAnt.Compression.Types.TarFileSet"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.Insert(System.Int32,NAnt.Compression.Types.TarFileSet)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Compression.Types.TarFileSet"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.TarFileSet"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Compression.Types.TarFileSetEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetCollection.Remove(NAnt.Compression.Types.TarFileSet)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.TarFileSet"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSetCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSetCollection.FileCount">
+ <summary>
+ Get the total number of files that are represented by the
+ filesets in this collection.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.TarFileSetEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Compression.Types.TarFileSet"/> elements of a <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetEnumerator.#ctor(NAnt.Compression.Types.TarFileSetCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.TarFileSetEnumerator"/> class
+ with the specified <see cref="T:NAnt.Compression.Types.TarFileSetCollection"/>.
+ </summary>
+ <param name="TarFileSets">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.TarFileSetEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.TarFileSetEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Compression.Types.ZipFileSet">
+ <summary>
+ A <see cref="T:NAnt.Compression.Types.ZipFileSet"/> is a <see cref="T:NAnt.Core.Types.FileSet"/> with extra
+ attributes useful in the context of the <see cref="T:NAnt.Compression.Tasks.ZipTask"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.ZipFileSet.Prefix">
+ <summary>
+ The top level directory prefix. If set, all file and directory paths
+ in the fileset will have this value prepended. Can either be a single
+ directory name or a "/" separated path.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.ZipFileSetCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Compression.Types.ZipFileSet"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.#ctor(NAnt.Compression.Types.ZipFileSetCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/> class
+ with the specified <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.#ctor(NAnt.Compression.Types.ZipFileSet[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/> class
+ with the specified array of <see cref="T:NAnt.Compression.Types.ZipFileSet"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.Add(NAnt.Compression.Types.ZipFileSet)">
+ <summary>
+ Adds a <see cref="T:NAnt.Compression.Types.ZipFileSet"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.ZipFileSet"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.AddRange(NAnt.Compression.Types.ZipFileSet[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Compression.Types.ZipFileSet"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Compression.Types.ZipFileSet"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.AddRange(NAnt.Compression.Types.ZipFileSetCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.Contains(NAnt.Compression.Types.ZipFileSet)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Compression.Types.ZipFileSet"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.ZipFileSet"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.CopyTo(NAnt.Compression.Types.ZipFileSet[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.IndexOf(NAnt.Compression.Types.ZipFileSet)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Compression.Types.ZipFileSet"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.ZipFileSet"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Compression.Types.ZipFileSet"/>. If the <see cref="T:NAnt.Compression.Types.ZipFileSet"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.Insert(System.Int32,NAnt.Compression.Types.ZipFileSet)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Compression.Types.ZipFileSet"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.ZipFileSet"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Compression.Types.ZipFileSetEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetCollection.Remove(NAnt.Compression.Types.ZipFileSet)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Compression.Types.ZipFileSet"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Compression.Types.ZipFileSetCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Compression.Types.ZipFileSetCollection.FileCount">
+ <summary>
+ Get the total number of files that are represented by the
+ filesets in this collection.
+ </summary>
+ </member>
+ <member name="T:NAnt.Compression.Types.ZipFileSetEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Compression.Types.ZipFileSet"/> elements of a <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetEnumerator.#ctor(NAnt.Compression.Types.ZipFileSetCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Compression.Types.ZipFileSetEnumerator"/> class
+ with the specified <see cref="T:NAnt.Compression.Types.ZipFileSetCollection"/>.
+ </summary>
+ <param name="ZipFileSets">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Compression.Types.ZipFileSetEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Compression.Types.ZipFileSetEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.Core.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Core.dll
new file mode 100755
index 0000000..1083a42
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Core.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.Core.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Core.xml
new file mode 100755
index 0000000..1701826
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Core.xml
@@ -0,0 +1,17156 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.Core</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.Core.Attributes.BooleanValidatorAttribute">
+ <summary>
+ Used to indicate that a property should be able to be converted into a
+ <see cref="T:System.Boolean"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Attributes.ValidatorAttribute">
+ <summary>
+ Base class for all validator attributes.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.ValidatorAttribute.Validate(System.Object)">
+ <summary>
+ Validates the specified value.
+ </summary>
+ <param name="value">The value to be validated.</param>
+ <exception cref="T:NAnt.Core.ValidationException">The validation fails.</exception>
+ </member>
+ <member name="M:NAnt.Core.Attributes.BooleanValidatorAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.BooleanValidatorAttribute"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.BooleanValidatorAttribute.Validate(System.Object)">
+ <summary>
+ Checks if the specified value can be converted to a <see cref="T:System.Boolean"/>.
+ </summary>
+ <param name="value">The value to be checked.</param>
+ <exception cref="T:NAnt.Core.ValidationException"><paramref name="value"/> cannot be converted to a <see cref="T:System.Boolean"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Attributes.BuildAttributeAttribute">
+ <summary>
+ Indicates that property should be treated as a XML attribute for the
+ task.
+ </summary>
+ <example>
+ Examples of how to specify task attributes
+ <code>
+ #region Public Instance Properties
+
+ [BuildAttribute("out", Required=true)]
+ public string Output {
+ get { return _out; }
+ set { _out = value; }
+ }
+
+ [BuildAttribute("optimize")]
+ [BooleanValidator()]
+ public bool Optimize {
+ get { return _optimize; }
+ set { _optimize = value; }
+ }
+
+ [BuildAttribute("warnlevel")]
+ [Int32Validator(0,4)] // limit values to 0-4
+ public int WarnLevel {
+ get { return _warnLevel; }
+ set { _warnLevel = value; }
+ }
+
+ [BuildElement("sources")]
+ public FileSet Sources {
+ get { return _sources; }
+ set { _sources = value; }
+ }
+
+ #endregion Public Instance Properties
+
+ #region Private Instance Fields
+
+ private string _out = null;
+ private bool _optimize = false;
+ private int _warnLevel = 4;
+ private FileSet _sources = new FileSet();
+
+ #endregion Private Instance Fields
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Attributes.BuildAttributeAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.BuildAttributeAttribute"/> with the
+ specified name.
+ </summary>
+ <param name="name">The name of the attribute.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildAttributeAttribute.Name">
+ <summary>
+ Gets or sets the name of the XML attribute.
+ </summary>
+ <value>
+ The name of the XML attribute.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildAttributeAttribute.Required">
+ <summary>
+ Gets or sets a value indicating whether the attribute is required.
+ </summary>
+ <value>
+ <see langword="true" /> if the attribute is required; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildAttributeAttribute.ExpandProperties">
+ <summary>
+ Gets or sets a value indicating whether property references should
+ be expanded.
+ </summary>
+ <value>
+ <see langword="true" /> if properties should be expanded; otherwise
+ <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildAttributeAttribute.ProcessXml">
+ <summary>
+ Used to specify how this attribute will be handled as the XML is
+ parsed and given to the element.
+ </summary>
+ <value>
+ <see langword="true" /> if XML should be processed; otherwise
+ <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Attributes.BuildElementArrayAttribute">
+ <summary>
+ Indicates that property should be treated as a XML arrayList
+ </summary>
+ <remarks>
+ <para>
+ Should only be applied to properties exposing strongly typed arrays or
+ strongly typed collections.
+ </para>
+ <para>
+ The XML format is like this:
+ <code>
+ <![CDATA[
+ <task>
+ <elementName ... />
+ <elementName ... />
+ <elementName ... />
+ <elementName ... />
+ </task>
+ ]]>
+ </code>
+ </para>
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Attributes.BuildElementAttribute">
+ <summary>
+ Indicates that the property should be treated as an XML element and
+ further processing should be done.
+ </summary>
+ <remarks>
+ <para>
+ The XML format is like this:
+ <code>
+ <![CDATA[
+ <task>
+ <elementName ...>
+ <morestuff />
+ </elementName>
+ </task>
+ ]]>
+ </code>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.BuildElementAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.BuildElementAttribute"/> with the
+ specified name.
+ </summary>
+ <param name="name">The name of the attribute.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildElementAttribute.Name">
+ <summary>
+ Gets or sets the name of the attribute.
+ </summary>
+ <value>
+ The name of the attribute.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildElementAttribute.Required">
+ <summary>
+ Gets or sets a value indicating whether the attribute is required.
+ </summary>
+ <value>
+ <see langword="true" /> if the attribute is required; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildElementAttribute.ProcessXml">
+ <summary>
+ Used to specify how this element will be handled as the XML is parsed
+ and given to the element.
+ </summary>
+ <value>
+ <see langword="true" /> if XML should be processed; otherwise
+ <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Attributes.BuildElementArrayAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.BuildElementArrayAttribute"/>
+ with the specified name.
+ </summary>
+ <param name="name">The name of the attribute.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildElementArrayAttribute.ElementType">
+ <summary>
+ Gets or sets the type of objects that this container holds.
+ </summary>
+ <value>
+ The type of the elements that this container holds.
+ </value>
+ <remarks>
+ <para>
+ This can be used for validation and schema generation.
+ </para>
+ <para>
+ If not specified, the type of the elements will be determined using
+ reflection.
+ </para>
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"><paramref name="value"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Attributes.BuildElementCollectionAttribute">
+ <summary>
+ Indicates that the property should be treated as a container for a
+ collection of build elements.
+ </summary>
+ <remarks>
+ <para>
+ Should only be applied to properties exposing strongly typed arrays or
+ strongly typed collections.
+ </para>
+ <para>
+ The XML format is like this:
+ <code>
+ <![CDATA[
+ <task>
+ <collectionName>
+ <elementName ... />
+ <elementName ... />
+ <elementName ... />
+ <elementName ... />
+ </collectionName>
+ </task>
+ ]]>
+ </code>
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.BuildElementCollectionAttribute.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.BuildElementCollectionAttribute"/> with the
+ specified name and child element name.
+ </summary>
+ <param name="collectionName">The name of the collection.</param>
+ <param name="childName">The name of the child elements in the collection</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="childName"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="childName"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.BuildElementCollectionAttribute.ChildElementName">
+ <summary>
+ The name of the child element within the collection.
+ </summary>
+ <value>
+ The name to check for in the XML of the elements in the collection.
+ </value>
+ <remarks>
+ This can be used for validation and schema generation.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Attributes.DateTimeValidatorAttribute">
+ <summary>
+ Used to indicate that a property should be able to be converted into a
+ <see cref="T:System.DateTime"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.DateTimeValidatorAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.DateTimeValidatorAttribute"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.DateTimeValidatorAttribute.Validate(System.Object)">
+ <summary>
+ Checks if the specified value can be converted to a <see cref="T:System.DateTime"/>.
+ </summary>
+ <param name="value">The value to be checked.</param>
+ <exception cref="T:NAnt.Core.ValidationException"><paramref name="value"/> cannot be converted to a <see cref="T:System.DateTime"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Attributes.ElementNameAttribute">
+ <summary>
+ Indicates that class should be treated as a NAnt element.
+ </summary>
+ <remarks>
+ Attach this attribute to a subclass of Element to have NAnt be able
+ to recognize it. The name should be short but must not confict
+ with any other element already in use.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.ElementNameAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cre="ElementNameAttribute"/>
+ with the specified name.
+ </summary>
+ <param name="name">The name of the element.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.ElementNameAttribute.Name">
+ <summary>
+ Gets or sets the name of the element.
+ </summary>
+ <value>
+ The name of the element.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Attributes.FileSetAttribute">
+ <summary>
+ Indicates that a property should be treated as a XML file set for the
+ task.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.FileSetAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.FileSetAttribute"/> with the
+ specified name.
+ </summary>
+ <param name="name">The name of the attribute.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Attributes.FrameworkConfigurableAttribute">
+ <summary>
+ Indicates that the value of the property to which the attribute is
+ assigned, can be configured on the framework-level in the NAnt application
+ configuration file.
+ </summary>
+ <example>
+ <para>
+ The following example shows a property of which the value can be
+ configured for a specific framework in the NAnt configuration file.
+ </para>
+ <code lang="C#">
+ [FrameworkConfigurable("exename", Required=true)]
+ public virtual string ExeName {
+ get { return _exeName; }
+ set { _exeName = value; }
+ }
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Attributes.FrameworkConfigurableAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.FrameworkConfigurableAttribute"/>
+ with the specified attribute name.
+ </summary>
+ <param name="name">The name of the framework configuration attribute.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is a <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.FrameworkConfigurableAttribute.Name">
+ <summary>
+ Gets or sets the name of the framework configuration attribute.
+ </summary>
+ <value>The name of the framework configuration attribute.</value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.FrameworkConfigurableAttribute.Required">
+ <summary>
+ Gets or sets a value indicating whether the configuration attribute
+ is required.
+ </summary>
+ <value>
+ <see langword="true" /> if the configuration attribute is required;
+ otherwise, <see langword="true" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.FrameworkConfigurableAttribute.ExpandProperties">
+ <summary>
+ Gets or sets a value indicating whether property references should
+ be expanded.
+ </summary>
+ <value>
+ <see langword="true" /> if properties should be expanded; otherwise
+ <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Attributes.FunctionAttribute">
+ <summary>
+ Indicates that the method should be exposed as a function in NAnt build
+ files.
+ </summary>
+ <remarks>
+ Attach this attribute to a method of a class that derives from
+ <see cref="T:NAnt.Core.FunctionSetBase"/> to have NAnt be able to recognize it.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.FunctionAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.FunctionAttribute"/>
+ class with the specified name.
+ </summary>
+ <param name="name">The name of the function.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.FunctionAttribute.Name">
+ <summary>
+ Gets or sets the name of the function.
+ </summary>
+ <value>
+ The name of the function.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Attributes.FunctionSetAttribute">
+ <summary>
+ Indicates that class should be treated as a set of functions.
+ </summary>
+ <remarks>
+ Attach this attribute to a class that derives from <see cref="T:NAnt.Core.FunctionSetBase"/>
+ to have NAnt be able to recognize it as containing custom functions.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.FunctionSetAttribute.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.FunctionSetAttribute"/>
+ class with the specified name.
+ </summary>
+ <param name="prefix">The prefix used to distinguish the functions.</param>
+ <param name="category">The category of the functions.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="prefix"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="category"/> is <see langword="null"/>.</para>
+ </exception>
+ <exception cref="T:System.ArgumentOutOfRangeException">
+ <para><paramref name="prefix"/> is a zero-length <see cref="T:System.String"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="category"/> is a zero-length <see cref="T:System.String"/>.</para>
+ </exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.FunctionSetAttribute.Category">
+ <summary>
+ Gets or sets the category of the function set.
+ </summary>
+ <value>
+ The name of the category of the function set.
+ </value>
+ <remarks>
+ This will be displayed in the user docs.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Attributes.FunctionSetAttribute.Prefix">
+ <summary>
+ Gets or sets the prefix of all functions in this function set.
+ </summary>
+ <value>
+ The prefix of the functions in this function set.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Attributes.Int32ValidatorAttribute">
+ <summary>
+ Indicates that property should be able to be converted into a <see cref="T:System.Int32"/>
+ within the given range.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.Int32ValidatorAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.Int32ValidatorAttribute"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.Int32ValidatorAttribute.#ctor(System.Int32,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.Int32ValidatorAttribute"/>
+ class with the specied minimum and maximum values.
+ </summary>
+ <param name="minValue">The minimum value.</param>
+ <param name="maxValue">The maximum value.</param>
+ </member>
+ <member name="M:NAnt.Core.Attributes.Int32ValidatorAttribute.Validate(System.Object)">
+ <summary>
+ Checks whether the specified value can be converted to an <see cref="T:System.Int32"/>
+ and whether the value lies within the range defined by the <see cref="P:NAnt.Core.Attributes.Int32ValidatorAttribute.MinValue"/>
+ and <see cref="P:NAnt.Core.Attributes.Int32ValidatorAttribute.MaxValue"/> properties.
+ </summary>
+ <param name="value">The value to be checked.</param>
+ <exception cref="T:NAnt.Core.ValidationException">
+ <para>
+ <paramref name="value"/> cannot be converted to an <see cref="T:System.Int32"/>.
+ </para>
+ <para>-or-</para>
+ <para>
+ <paramref name="value"/> is not in the range defined by <see cref="P:NAnt.Core.Attributes.Int32ValidatorAttribute.MinValue"/>
+ and <see cref="P:NAnt.Core.Attributes.Int32ValidatorAttribute.MaxValue"/>.
+ </para>
+ </exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.Int32ValidatorAttribute.MinValue">
+ <summary>
+ Gets or sets the minimum value.
+ </summary>
+ <value>
+ The minimum value. The default is <see cref="F:System.Int32.MinValue"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.Int32ValidatorAttribute.MaxValue">
+ <summary>
+ Gets or sets the maximum value.
+ </summary>
+ <value>
+ The maximum value. The default is <see cref="F:System.Int32.MaxValue"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.Int32ValidatorAttribute.Base">
+ <summary>
+ The base of the number to validate, which must be 2, 8, 10, or 16.
+ </summary>
+ <value>
+ The base of the number to validate.
+ </value>
+ <remarks>
+ The default is 10.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Attributes.LocationType">
+ <summary>
+ Defines possible locations in which a task executable can be located.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Attributes.LocationType.FrameworkDir">
+ <summary>
+ Locates the task executable in the current Framework directory.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Attributes.LocationType.FrameworkSdkDir">
+ <summary>
+ Locates the task executable in the current Framework SDK directory.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Attributes.ProgramLocationAttribute">
+ <summary>
+ Indicates the location that a task executable can be located in.
+ </summary>
+ <remarks>
+ <para>
+ When applied to a task deriving from <see cref="T:NAnt.Core.Tasks.ExternalProgramBase"/>,
+ the program to execute will first be searched for in the designated
+ location.
+ </para>
+ <para>
+ If the program does not exist in that location, and the file name is
+ not an absolute path then the list of tool paths of the current
+ target framework will be searched (in the order in which they are
+ defined in the NAnt configuration file).
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.ProgramLocationAttribute.#ctor(NAnt.Core.Attributes.LocationType)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.ProgramLocationAttribute"/>
+ with the specified location.
+ </summary>
+ <param type="type">The <see cref="P:NAnt.Core.Attributes.ProgramLocationAttribute.LocationType"/> of the attribute.</param>
+ </member>
+ <member name="P:NAnt.Core.Attributes.ProgramLocationAttribute.LocationType">
+ <summary>
+ Gets or sets the <see cref="P:NAnt.Core.Attributes.ProgramLocationAttribute.LocationType"/> of the task.
+ </summary>
+ <value>
+ The location type of the task to which the attribute is assigned.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Attributes.StringValidatorAttribute">
+ <summary>
+ Used to indicate whether a <see cref="T:System.String"/> property should allow
+ an empty string value or not.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.StringValidatorAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.StringValidatorAttribute"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Attributes.StringValidatorAttribute.Validate(System.Object)">
+ <summary>
+ Checks if the specified value adheres to the rules defined by the
+ properties of the <see cref="T:NAnt.Core.Attributes.StringValidatorAttribute"/>.
+ </summary>
+ <param name="value">The value to be checked.</param>
+ <exception cref="T:NAnt.Core.ValidationException"><paramref name="value"/> is an empty string value and <see cref="P:NAnt.Core.Attributes.StringValidatorAttribute.AllowEmpty"/> is set to <see langword="false"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Attributes.StringValidatorAttribute.AllowEmpty">
+ <summary>
+ Gets or sets a value indicating whether an empty string or
+ <see langword="null" /> should be a considered a valid value.
+ </summary>
+ <value>
+ <see langword="true" /> if an empty string or <see langword="null" />
+ should be considered a valid value; otherwise, <see langword="false" />.
+ The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.StringValidatorAttribute.Expression">
+ <summary>
+ Gets or sets a regular expression. The string will be validated to
+ determine if it matches the expression.
+ </summary>
+ <value>
+ <see cref="N:System.Text.RegularExpressions"/>
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Attributes.StringValidatorAttribute.ExpressionErrorMessage">
+ <summary>
+ An optional error message that can be used to better describe the
+ regular expression error.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Attributes.TaskAttributeAttribute">
+ <summary>
+ Indicates that property should be treated as a XML attribute for the
+ task.
+ </summary>
+ <example>
+ Examples of how to specify task attributes
+ <code>
+ // task XmlType default is string
+ [TaskAttribute("out", Required=true)]
+ string _out = null; // assign default value here
+
+ [TaskAttribute("optimize")]
+ [BooleanValidator()]
+ // during ExecuteTask you can safely use Convert.ToBoolean(_optimize)
+ string _optimize = Boolean.FalseString;
+
+ [TaskAttribute("warnlevel")]
+ [Int32Validator(0,4)] // limit values to 0-4
+ // during ExecuteTask you can safely use Convert.ToInt32(_optimize)
+ string _warnlevel = "0";
+
+ [BuildElement("sources")]
+ FileSet _sources = new FileSet();
+ </code>
+ NOTE: Attribute values must be of type of string if you want
+ to be able to have macros. The field stores the exact value during
+ Initialize. Just before ExecuteTask is called NAnt will expand
+ all the macros with the current values.
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Attributes.TaskAttributeAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.TaskAttributeAttribute"/>
+ with the specified attribute name.
+ </summary>
+ <param name="name">The name of the task attribute.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is a <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Attributes.TaskNameAttribute">
+ <summary>
+ Indicates that class should be treated as a task.
+ </summary>
+ <remarks>
+ Attach this attribute to a subclass of Task to have NAnt be able
+ to recognize it. The name should be short but must not confict
+ with any other task already in use.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Attributes.TaskNameAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Attributes.TaskNameAttribute"/>
+ with the specified name.
+ </summary>
+ <param name="name">The name of the task.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="name"/> is a zero-length <see cref="T:System.String"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Element">
+ <summary>
+ Models a NAnt XML element in the build file.
+ </summary>
+ <remarks>
+ <para>
+ Automatically validates attributes in the element based on attributes
+ applied to members in derived classes.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Element.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Element"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Element.#ctor(NAnt.Core.Element)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Element"/> class
+ from the specified element.
+ </summary>
+ <param name="e">The element that should be used to create a new instance of the <see cref="T:NAnt.Core.Element"/> class.</param>
+ </member>
+ <member name="M:NAnt.Core.Element.Initialize(System.Xml.XmlNode)">
+ <summary>
+ Performs default initialization.
+ </summary>
+ <remarks>
+ Derived classes that wish to add custom initialization should override
+ the <see cref="M:Initialize()" /> method.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Element.GetLocation">
+ <summary>
+ Retrieves the location in the build file where the element is
+ defined.
+ </summary>
+ <returns>The element's build file location</returns>
+ </member>
+ <member name="M:NAnt.Core.Element.Log(NAnt.Core.Level,System.String)">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to be logged.</param>
+ <remarks>
+ The actual logging is delegated to the project.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Element.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <remarks>
+ The actual logging is delegated to the project.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Element.InitializeElement(System.Xml.XmlNode)">
+ <summary>
+ Derived classes should override to this method to provide extra
+ initialization and validation not covered by the base class.
+ </summary>
+ <param name="elementNode">The XML node of the element to use for initialization.</param>
+ </member>
+ <member name="M:NAnt.Core.Element.Initialize">
+ <summary>
+ Derived classes should override to this method to provide extra
+ initialization and validation not covered by the base class.
+ </summary>
+ <remarks>
+ Access to the <see cref="P:NAnt.Core.Element.XmlNode"/> that was used to initialize
+ this <see cref="T:NAnt.Core.Element"/> is available through <see cref="P:NAnt.Core.Element.XmlNode"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Element.CopyTo(NAnt.Core.Element)">
+ <summary>
+ Copies all instance data of the <see cref="T:NAnt.Core.Element"/> to a given
+ <see cref="T:NAnt.Core.Element"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Element.Initialize(System.Xml.XmlNode,NAnt.Core.PropertyDictionary,NAnt.Core.FrameworkInfo)">
+ <summary>
+ Performs initialization using the given set of properties.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Element.InitializeXml(System.Xml.XmlNode,NAnt.Core.PropertyDictionary,NAnt.Core.FrameworkInfo)">
+ <summary>
+ Initializes all build attributes and child elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Element.GetAttributeConfigurationNode(NAnt.Core.FrameworkInfo,System.String)">
+ <summary>
+ Locates the XML node for the specified attribute in the project
+ configuration node.
+ </summary>
+ <param name="attributeName">The name of attribute for which the XML configuration node should be located.</param>
+ <param name="framework">The framework to use to obtain framework specific information, or <see langword="null" /> if no framework specific information should be used.</param>
+ <returns>
+ The XML configuration node for the specified attribute, or
+ <see langword="null" /> if no corresponding XML node could be
+ located.
+ </returns>
+ <remarks>
+ If there's a valid current framework, the configuration section for
+ that framework will first be searched. If no corresponding
+ configuration node can be located in that section, the framework-neutral
+ section of the project configuration node will be searched.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Element.GetElementNameFromType(System.Type)">
+ <summary>
+ Returns the <see cref="P:NAnt.Core.Attributes.ElementNameAttribute.Name"/> of the
+ <see cref="T:NAnt.Core.Attributes.ElementNameAttribute"/> assigned to the specified
+ <see cref="T:System.Type"/>.
+ </summary>
+ <param name="type">The <see cref="T:System.Type"/> of which the assigned <see cref="P:NAnt.Core.Attributes.ElementNameAttribute.Name"/> should be retrieved.</param>
+ <returns>
+ The <see cref="P:NAnt.Core.Attributes.ElementNameAttribute.Name"/> assigned to the specified
+ <see cref="T:System.Type"/> or a null reference is no <see cref="P:NAnt.Core.Attributes.ElementNameAttribute.Name"/>
+ is assigned to the <paramref name="type"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Element.Parent">
+ <summary>
+ Gets or sets the parent of the element.
+ </summary>
+ <value>
+ The parent of the element.
+ </value>
+ <remarks>
+ This will be the parent <see cref="T:NAnt.Core.Task"/>, <see cref="T:NAnt.Core.Target"/>, or
+ <see cref="P:NAnt.Core.Element.Project"/> depending on where the element is defined.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Element.Name">
+ <summary>
+ Gets the name of the XML element used to initialize this element.
+ </summary>
+ <value>
+ The name of the XML element used to initialize this element.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Element.Project">
+ <summary>
+ Gets or sets the <see cref="P:NAnt.Core.Element.Project"/> to which this element belongs.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.Element.Project"/> to which this element belongs.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Element.Properties">
+ <summary>
+ Gets the properties local to this <see cref="T:NAnt.Core.Element"/> and the
+ <see cref="P:NAnt.Core.Element.Project"/>.
+ </summary>
+ <value>
+ The properties local to this <see cref="T:NAnt.Core.Element"/> and the <see cref="P:NAnt.Core.Element.Project"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Element.NamespaceManager">
+ <summary>
+ Gets or sets the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </summary>
+ <value>
+ The <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </value>
+ <remarks>
+ The <see cref="P:NAnt.Core.Element.NamespaceManager"/> defines the current namespace
+ scope and provides methods for looking up namespace information.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Element.XmlNode">
+ <summary>
+ Gets or sets the XML node of the element.
+ </summary>
+ <value>
+ The XML node of the element.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Element.Location">
+ <summary>
+ Gets or sets the location in the build file where the element is
+ defined.
+ </summary>
+ <value>
+ The location in the build file where the element is defined.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Element.CustomXmlProcessing">
+ <summary>
+ Gets a value indicating whether the element is performing additional
+ processing using the <see cref="P:NAnt.Core.Element.XmlNode"/> that was used to
+ initialize the element.
+ </summary>
+ <value>
+ <see langword="false"/>.
+ </value>
+ <remarks>
+ <para>
+ Elements that need to perform additional processing of the
+ <see cref="P:NAnt.Core.Element.XmlNode"/> that was used to initialize the element, should
+ override this property and return <see langword="true"/>.
+ </para>
+ <para>
+ When <see langword="true"/>, no build errors will be reported for
+ unknown nested build elements.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Element.AttributeConfigurator">
+ <summary>
+ Configures an <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> using meta-data provided by
+ assigned attributes.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Element.AttributeConfigurator.#ctor(NAnt.Core.Element,System.Xml.XmlNode,NAnt.Core.PropertyDictionary,NAnt.Core.FrameworkInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Element.AttributeConfigurator"/>
+ class for the given <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/>.
+ </summary>
+ <param name="element">The <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> for which an <see cref="T:NAnt.Core.Element.AttributeConfigurator"/> should be created.</param>
+ <param name="elementNode">The <see cref="P:NAnt.Core.Element.XmlNode"/> to initialize the <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> with.</param>
+ <param name="properties">The <see cref="T:NAnt.Core.PropertyDictionary"/> to use for property expansion.</param>
+ <param name="targetFramework">The framework that the <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> should target.</param>
+ <exception cref="T:System.ArgumentNullException">
+ <para><paramref name="element"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="elementNode"/> is <see langword="null"/>.</para>
+ <para>-or-</para>
+ <para><paramref name="properties"/> is <see langword="null"/>.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.Core.Element.AttributeConfigurator.CreateChildBuildElement(System.Reflection.PropertyInfo,System.Reflection.MethodInfo,System.Reflection.MethodInfo,System.Xml.XmlNode,NAnt.Core.PropertyDictionary,NAnt.Core.FrameworkInfo)">
+ <summary>
+ Creates a child <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> using property set/get methods.
+ </summary>
+ <param name="propInf">The <see cref="T:System.Reflection.PropertyInfo"/> instance that represents the property of the current class.</param>
+ <param name="getter">A <see cref="T:System.Reflection.MethodInfo"/> representing the get accessor for the property.</param>
+ <param name="setter">A <see cref="T:System.Reflection.MethodInfo"/> representing the set accessor for the property.</param>
+ <param name="xml">The <see cref="P:NAnt.Core.Element.XmlNode"/> used to initialize the new <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> instance.</param>
+ <param name="properties">The collection of property values to use for macro expansion.</param>
+ <param name="framework">The <see cref="T:NAnt.Core.FrameworkInfo"/> from which to obtain framework-specific information.</param>
+ <returns>The <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> child.</returns>
+ </member>
+ <member name="M:NAnt.Core.Element.AttributeConfigurator.CreateAttributeSetter(System.Type)">
+ <summary>
+ Creates an <see cref="T:NAnt.Core.Element.AttributeConfigurator.IAttributeSetter"/> for the given
+ <see cref="T:System.Type"/>.
+ </summary>
+ <param name="attributeType">The <see cref="T:System.Type"/> for which an <see cref="T:NAnt.Core.Element.AttributeConfigurator.IAttributeSetter"/> should be created.</param>
+ <returns>
+ An <see cref="T:NAnt.Core.Element.AttributeConfigurator.IAttributeSetter"/> for the given <see cref="T:System.Type"/>.
+ </returns>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator._element">
+ <summary>
+ Holds the <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> that should be initialized.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator._elementXml">
+ <summary>
+ Holds the <see cref="P:NAnt.Core.Element.XmlNode"/> that should be used to initialize
+ the <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/>.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator._properties">
+ <summary>
+ Holds the dictionary that should be used for property
+ expansion.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator._targetFramework">
+ <summary>
+ Holds the framework that should be targeted by the
+ <see cref="P:NAnt.Core.Element.AttributeConfigurator.Element"/> that we're configuring, or
+ <see langword="null"/> if there's no current target
+ framework.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator._unprocessedAttributes">
+ <summary>
+ Holds the names of the attributes that still need to be
+ processed.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator._unprocessedChildNodes">
+ <summary>
+ Holds the names of the child nodes that still need to be
+ processed.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator.logger">
+ <summary>
+ Holds the logger for the current class.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Element.AttributeConfigurator.AttributeSetters">
+ <summary>
+ Holds the cache of <see cref="T:NAnt.Core.Element.AttributeConfigurator.IAttributeSetter"/> instances.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Element.AttributeConfigurator.NamespaceManager">
+ <summary>
+ Gets the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </summary>
+ <value>
+ The <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </value>
+ <remarks>
+ The <see cref="P:NAnt.Core.Element.AttributeConfigurator.NamespaceManager"/> defines the current namespace
+ scope and provides methods for looking up namespace information.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Element.AttributeConfigurator.IAttributeSetter">
+ <summary>
+ Internal interface used for setting element attributes.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Configuration.DirList">
+ <summary>
+ Represents an explicitly named list of directories.
+ </summary>
+ <remarks>
+ A <see cref="T:NAnt.Core.Configuration.DirList"/> is useful when you want to capture a list of
+ directories regardless whether they currently exist.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Configuration.DirList.Directory">
+ <summary>
+ The base of the directory of this dirlist. The default is the project
+ base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Configuration.ManagedExecutionMode.Environment">
+ <summary>
+ Gets the collection of environment variables that should be passed
+ to external programs that are launched.
+ </summary>
+ <value>
+ <summary>
+ The collection of environment variables that should be passed
+ to external programs that are launched.
+ </summary>
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Configuration.RuntimeEngine.Arguments">
+ <summary>
+ The command-line arguments for the runtime engine.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Extensibility.ExtensionAssembly">
+ <summary>
+ Represents an <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/> in which one or more extensions
+ are found.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.ExtensionAssembly.#ctor(System.Reflection.Assembly)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/>
+ class for a given <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/>.
+ </summary>
+ <remarks>
+ The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> instance is not cached for
+ future use. If this is required, use <see cref="M:NAnt.Core.Extensibility.ExtensionAssembly.Create(System.Reflection.Assembly)"/>.
+ </remarks>
+ <param name="assembly">The <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/> for which to construct an <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/>.</param>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.ExtensionAssembly.Create(System.Reflection.Assembly)">
+ <summary>
+ Creates an <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> for the specified
+ <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/> and caches it for future use.
+ </summary>
+ <remarks>
+ If an <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> for the same assembly is
+ available in the cache, then this cached instance is returned.
+ </remarks>
+ <param name="assembly">The <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/> for which to construct an <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/>.</param>
+ <returns>
+ The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> for the specified <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.Extensibility.ExtensionAssembly.Assembly"/> containing extensions.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.ExtensionBuilder.#ctor(NAnt.Core.Extensibility.ExtensionAssembly)">
+ <summary>
+ Initializes a instance of the <see cref="T:NAnt.Core.Extensibility.ExtensionBuilder"/>
+ class for an extension in a given <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.ExtensionAssembly"/>.
+ </summary>
+ <param name="extensionAssembly">The <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.ExtensionAssembly"/> in which the extension is found.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="extensionAssembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.ExtensionBuilder.#ctor(System.Reflection.Assembly)">
+ <summary>
+ Initializes a instance of the <see cref="T:NAnt.Core.Extensibility.ExtensionBuilder"/>
+ class for an extension in a given <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.Assembly"/>.
+ </summary>
+ <param name="assembly">The <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.Assembly"/> in which the extension is found.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="assembly"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="P:NAnt.Core.Extensibility.ExtensionBuilder.ExtensionAssembly">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.ExtensionAssembly"/> in which the extension
+ was found.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Extensibility.ExtensionBuilder.Assembly">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.Assembly"/> from which the extension will
+ be created.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.Extensibility.ExtensionBuilder.Assembly"/> containing the extension.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.PluginConsumerAttribute.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Extensibility.PluginConsumerAttribute"/>
+ with the specified type.
+ </summary>
+ <param name="type">The type of the <see cref="T:NAnt.Core.Extensibility.IPlugin"/> to consume.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="type"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Extensibility.PluginScanner">
+ <summary>
+ Responsible for scanning types for plugins, and maintaining a cache of
+ <see cref="T:NAnt.Core.Extensibility.PluginBuilder"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.PluginScanner.ScanTypeForPlugins(NAnt.Core.Extensibility.ExtensionAssembly,System.Type,NAnt.Core.Task)">
+ <summary>
+ Scans a given <see cref="T:System.Type"/> for plugins.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:System.Type"/> to scan.</param>
+ <param name="type">The <see cref="T:System.Type"/> to scan.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="type"/> represents a
+ <see cref="T:NAnt.Core.Extensibility.IPlugin"/>; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Extensibility.PluginScanner.RegisterPlugins(NAnt.Core.Extensibility.IPluginConsumer)">
+ <summary>
+ Registers matching plugins for the specified <see cref="T:NAnt.Core.Extensibility.IPluginConsumer"/>.
+ </summary>
+ <param name="consumer">The <see cref="T:NAnt.Core.Extensibility.IPluginConsumer"/> which plugins must be registered for.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="consumer"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="T:NAnt.Core.Filters.ChainableReader">
+ <summary>
+ Functions as a chainable TextReader
+ </summary>
+ <remarks>
+ Implements a abstraction over a TextReader that allows the class to represent
+ either a TextReader or another ChainableReader to which it is chained.
+
+ By passing a ChainableReader as a constructor paramater it is possiable to
+ chain many ChainableReaders together. The last ChainableReader in the chain must
+ be based on a TextReader.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Filters.ChainableReader.Chain(NAnt.Core.Filters.ChainableReader)">
+ <summary>
+ Makes it so all calls to Read and Peek are passed the ChainableReader
+ passed as a parameter.
+ </summary>
+ <param name="parentChainedReader">ChainableReader to forward calls to</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.ChainableReader.Chain(System.IO.TextReader)">
+ <summary>
+ Makes it so all calls to Read and Peek are passed the TextReader
+ passed as a parameter.
+ </summary>
+ <param name="baseReader">TextReader to forward calls to</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.ChainableReader.Peek">
+ <summary>
+ Forwards Peek calls to the TextReader or ChainableReader passed in the corresponding constructor.
+ </summary>
+ <returns>Character or -1 if end of stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ChainableReader.Read">
+ <summary>
+ Forwards Read calls to the TextReader or ChainableReader passed in the corresponding constructor.
+ </summary>
+ <returns>
+ Character or -1 if end of stream.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ChainableReader.Close">
+ <summary>
+ Closes the reader.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.ChainableReader.Dispose">
+ <summary>
+ Calls close and supresses the finalizer for the object.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ChainableReader.Base">
+ <summary>
+ Gets a value indicating if the reader is backed by a stream in the
+ chain.
+ </summary>
+ <value>
+ <see langword="true" /> if the reader is backed by a stream;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Filters.Filter">
+ <summary>
+ Allows a file's content to be modified while performing an operation.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.Filter.InitializeFilter">
+ <summary>
+ Called after construction and after properties are set. Allows
+ for filter initialization.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.Filter.IfDefined">
+ <summary>
+ If <see langword="true" /> then the filter will be used; otherwise,
+ skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.Filter.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Filters.Filter.IfDefined"/>. If <see langword="false"/>
+ then the filter will be executed; otherwise, skipped. The default
+ is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilder.#ctor(System.Reflection.Assembly,System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> class
+ for the specified <see cref="T:NAnt.Core.Filters.Filter"/> class in the specified
+ <see cref="T:System.Reflection.Assembly"/>.
+ </summary>
+ <remarks>
+ An <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> for the specified <see cref="T:System.Reflection.Assembly"/>
+ is cached for future use.
+ </remarks>
+ <param name="assembly">The <see cref="T:System.Reflection.Assembly"/> containing the <see cref="T:NAnt.Core.Filters.Filter"/>.</param>
+ <param name="className">The class representing the <see cref="T:NAnt.Core.Filters.Filter"/>.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilder.#ctor(NAnt.Core.Extensibility.ExtensionAssembly,System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> class
+ for the specified <see cref="T:NAnt.Core.Filters.Filter"/> class in the specified
+ <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/>.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:NAnt.Core.Filters.Filter"/>.</param>
+ <param name="className">The class representing the <see cref="T:NAnt.Core.Filters.Filter"/>.</param>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterBuilder.ClassName">
+ <summary>
+ Gets the name of the <see cref="T:NAnt.Core.Filters.Filter"/> class that can be created
+ using this <see cref="T:NAnt.Core.Filters.FilterBuilder"/>.
+ </summary>
+ <value>
+ The name of the <see cref="T:NAnt.Core.Filters.Filter"/> class that can be created using
+ this <see cref="T:NAnt.Core.Filters.FilterBuilder"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterBuilder.FilterName">
+ <summary>
+ Gets the name of the filter which the <see cref="T:NAnt.Core.Filters.FilterBuilder"/>
+ can create.
+ </summary>
+ <value>
+ The name of the task which the <see cref="T:NAnt.Core.TaskBuilder"/> can
+ create.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Filters.FilterBuilderCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.Core.Filters.FilterBuilder"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.#ctor(NAnt.Core.Filters.FilterBuilderCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.#ctor(NAnt.Core.Filters.FilterBuilder[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Filters.FilterBuilder"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.Add(NAnt.Core.Filters.FilterBuilder)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Filters.FilterBuilder"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.FilterBuilder"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.AddRange(NAnt.Core.Filters.FilterBuilder[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Filters.FilterBuilder"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Filters.FilterBuilder"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.AddRange(NAnt.Core.Filters.FilterBuilderCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.Contains(NAnt.Core.Filters.FilterBuilder)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Filters.FilterBuilder"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.FilterBuilder"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Filters.FilterBuilder"/> for the specified
+ task is in the collection.
+ </summary>
+ <param name="taskName">The name of task for which the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> should be located in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Filters.FilterBuilder"/> for
+ the specified task is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.CopyTo(NAnt.Core.Filters.FilterBuilder[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.IndexOf(NAnt.Core.Filters.FilterBuilder)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Filters.FilterBuilder"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.FilterBuilder"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Filters.FilterBuilder"/>. If the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.Insert(System.Int32,NAnt.Core.Filters.FilterBuilder)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Filters.FilterBuilder"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.FilterBuilder"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Filters.FilterBuilderEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderCollection.Remove(NAnt.Core.Filters.FilterBuilder)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.FilterBuilder"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterBuilderCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterBuilderCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> for the specified task.
+ </summary>
+ <param name="filterName">The name of the filter for which the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> should be located in the collection.</param>
+ </member>
+ <member name="T:NAnt.Core.Filters.FilterBuilderEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Filters.FilterBuilder"/> elements of a <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderEnumerator.#ctor(NAnt.Core.Filters.FilterBuilderCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterBuilderEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Filters.FilterBuilderCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterBuilderEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterBuilderEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Filters.FilterChain">
+ <summary>
+ Represent a chain of NAnt filters that can be applied to a <see cref="T:NAnt.Core.Task"/>.
+ </summary>
+ <remarks>
+ <para>
+ A FilterChain represents a collection of one or more filters that can
+ be appled to a <see cref="T:NAnt.Core.Task"/> such as the <see cref="T:NAnt.Core.Tasks.CopyTask"/>.
+ In the case of the <see cref="T:NAnt.Core.Tasks.CopyTask"/>, the contents of the copied
+ files are filtered through each filter specified in the filter chain.
+ Filtering occurs in the order the filters are specified with filtered
+ output of one filter feeding into another.
+ </para>
+ <para>
+ :--------:---&gt;:----------:---&gt;:----------: ... :----------:---&gt;:--------:<br/>
+ :.Source.:---&gt;:.Filter 1.:---&gt;:.Filter 2.: ... :.Filter n.:---&gt;:.target.:<br/>
+ :--------:---&gt;:----------:---&gt;:----------: ... :----------:---&gt;:--------:<br/>
+ </para>
+ <para>
+ A list of all filters that come with NAnt is available <see href="../filters/index.html">here</see>.
+ </para>
+ <para>
+ The following tasks support filtering with a FilterChain:
+ </para>
+ <list type="bullet">
+ <item>
+ <description><see cref="T:NAnt.Core.Tasks.CopyTask"/></description>
+ </item>
+ <item>
+ <description><see cref="T:NAnt.Core.Tasks.MoveTask"/></description>
+ </item>
+ </list>
+ </remarks>
+ <example>
+ <para>
+ Replace all occurrences of @NOW@ with the current date/time and
+ replace tabs with spaces in all copied files.
+ </para>
+ <code>
+ <![CDATA[
+ <property name="NOW" value="${datetime::now()}" />
+ <copy todir="out">
+ <fileset basedir="in">
+ <include name="**/*" />
+ </fileset>
+ <filterchain>
+ <replacetokens>
+ <token key="NOW" value="${TODAY}" />
+ </replacetokens>
+ <tabstospaces />
+ </filterchain>
+ </copy>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.DataTypeBase">
+ <summary>
+ Provides the abstract base class for types.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBase.Reset">
+ <summary>
+ Should be overridden by derived classes. clones the referenced types
+ data into the current instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBase.CopyTo(NAnt.Core.DataTypeBase)">
+ <summary>
+ Copies all instance data of the <see cref="T:NAnt.Core.DataTypeBase"/> to a given
+ <see cref="T:NAnt.Core.DataTypeBase"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBase.ID">
+ <summary>
+ The ID used to be referenced later.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBase.RefID">
+ <summary>
+ The ID to use as the reference.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBase.CanBeReferenced">
+ <summary>
+ Gets a value indicating whether a reference to the type can be
+ defined.
+ </summary>
+ <remarks>
+ Only types with an <see cref="T:NAnt.Core.Attributes.ElementNameAttribute"/> assigned
+ to it, can be referenced.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBase.Name">
+ <summary>
+ Gets the name of the datatype.
+ </summary>
+ <value>
+ The name of the datatype.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterChain.InitializeXml(System.Xml.XmlNode,NAnt.Core.PropertyDictionary,NAnt.Core.FrameworkInfo)">
+ <summary>
+ Initializes all build attributes and child elements.
+ </summary>
+ <remarks>
+ <see cref="T:NAnt.Core.Filters.FilterChain"/> needs to maintain the order in which the
+ filters are specified in the build file.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterChain.GetBaseFilter(NAnt.Core.Filters.PhysicalTextReader)">
+ <summary>
+ Used to to instantiate and return the chain of stream based filters.
+ </summary>
+ <param name="physicalTextReader">The <see cref="T:NAnt.Core.Filters.PhysicalTextReader"/> that is the source of input to the filter chain.</param>
+ <remarks>
+ The <paramref name="physicalTextReader"/> is the first <see cref="T:NAnt.Core.Filters.Filter"/>
+ in the chain, which is based on a physical stream that feeds the chain.
+ </remarks>
+ <returns>
+ The last <see cref="T:NAnt.Core.Filters.Filter"/> in the chain.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterChain.IsNullOrEmpty(NAnt.Core.Filters.FilterChain)">
+ <summary>
+ Determines whether a given FilterChain is null or empty.
+ </summary>
+ <returns>
+ <c>true</c> if <paramref name="filterChain"/> is null or empty;
+ otherwise, <c>false</c>.
+ </returns>
+ <param name='filterChain'>
+ The FilterChain to check.
+ </param>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterChain.Filters">
+ <summary>
+ The filters to apply.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterChain.InputEncoding">
+ <summary>
+ The encoding to assume when filter-copying files. The default is
+ system's current ANSI code page.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.FilterChain.FilterChainConfigurator">
+ <summary>
+ Configurator that initializes filters in the order in which they've
+ been specified in the build file.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.FilterCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Filters.Filter"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.#ctor(NAnt.Core.Filters.FilterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Filters.FilterCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.#ctor(NAnt.Core.Filters.Filter[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Filters.Filter"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.Add(NAnt.Core.Filters.Filter)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Filters.Filter"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.Filter"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.AddRange(NAnt.Core.Filters.Filter[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Filters.Filter"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Filters.Filter"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.AddRange(NAnt.Core.Filters.FilterCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Filters.FilterCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Filters.FilterCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.Contains(NAnt.Core.Filters.Filter)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Filters.Filter"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.Filter"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.CopyTo(NAnt.Core.Filters.Filter[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.IndexOf(NAnt.Core.Filters.Filter)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Filters.Filter"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.Filter"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Filters.Filter"/>. If the <see cref="T:NAnt.Core.Filters.Filter"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.Insert(System.Int32,NAnt.Core.Filters.Filter)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Filters.Filter"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.Filter"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Filters.FilterEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterCollection.Remove(NAnt.Core.Filters.Filter)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Filters.Filter"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.Core.Filters.FilterEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Filters.Filter"/> elements of a <see cref="T:NAnt.Core.Filters.FilterCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterEnumerator.#ctor(NAnt.Core.Filters.FilterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Filters.FilterEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Filters.FilterCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.FilterEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.FilterEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Filters.PhysicalTextReader">
+ <summary>
+ Represents a physical <see cref="T:System.IO.TextReader"/>. That is a reader based
+ on a stream.
+ </summary>
+ <remarks>
+ Used by <see cref="T:NAnt.Core.Filters.ChainableReader"/> to represent a <see cref="T:NAnt.Core.Filters.Filter"/>
+ based on a <see cref="T:System.IO.TextReader"/> in the chain.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Filters.ExpandProperties">
+ <summary>
+ Parses NAnt properties and expressions
+ </summary>
+ <remarks>
+ <para>
+ This filter parses any NAnt properties or expressions found in its input,
+ inlining their values in its output.
+ </para>
+ <para>
+ Note: Due to limitations on buffering, expressions longer than 2048
+ characters are not guaranteed to be expanded.
+ </para>
+ Filters are intended to be used as a element of a <see cref="T:NAnt.Core.Filters.FilterChain"/>.
+ </remarks>
+ <example>
+ <para>Replace all properties with their corresponding values.</para>
+ <code>
+ <![CDATA[
+ <expandproperties />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.Core.Filters.ExpandProperties._buffer">
+ <summary>
+ Holds data for expression expansion between input and output.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.ExpandProperties.InitializeFilter">
+ <summary>
+ Called after construction and after properties are set. Allows
+ for filter initialization.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.ExpandProperties.Read">
+ <summary>
+ Reads the next character applying the filter logic.
+ </summary>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ExpandProperties.Peek">
+ <summary>
+ Reads the next character applying the filter logic without advancing the current position in the stream.
+ </summary>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ExpandProperties.Advance">
+ <summary>
+ Moves to the next character.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.ExpandProperties.ReplenishBuffer">
+ <summary>
+ Refills the buffer, running our input through
+ <see cref="M:PropertyDictionary.ExpandProperties(string, Location)" />.)
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ExpandProperties.AtEnd">
+ <summary>
+ Determines whether we've passed the end of our data.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.ReplaceString">
+ <summary>
+ Replaces all occurrences of a given string in the original input with
+ user-supplied replacement string.
+ </summary>
+ <remarks>
+ <para>
+ This filter replaces all occurrences of a given string in the original
+ input stream with a user-supplied replacement string. By default string
+ comparisons are case sensitive but this can be changed by setting the
+ optional <see cref="P:NAnt.Core.Filters.ReplaceString.IgnoreCase"/> attribute to <see langword="true"/>.
+ </para>
+ <para>
+ To use this filter specify the string to be replaced with the
+ <see cref="P:NAnt.Core.Filters.ReplaceString.From"/> attribute and the string to replace it with using the
+ <see cref="P:NAnt.Core.Filters.ReplaceString.To"/> attribute.
+ </para>
+ <para>
+ Filters are intended to be used as a element of a <see cref="T:NAnt.Core.Filters.FilterChain"/>.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Replace all occurrences of "3.14" with "PI".
+ </para>
+ <code>
+ <![CDATA[
+ <replacestring from="3.14" to="PI" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Replace all occurrences of "string", "String", etc. with "System.String".
+ </para>
+ <code>
+ <![CDATA[
+ <replacestring from="String" to="System.String" ignorecase="true" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceString.Chain(NAnt.Core.Filters.ChainableReader)">
+ <summary>
+ Construct that allows this filter to be chained to the one
+ in the parameter chainedReader.
+ </summary>
+ <param name="chainedReader">Filter that the filter will be chained to</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceString.Read">
+ <summary>
+ Reads the next character applying the filter logic.
+ </summary>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceString.Peek">
+ <summary>
+ Reads the next character applying the filter logic without
+ advancing the current position in the stream.
+
+ Peek currently is not supported.
+ </summary>
+ <returns>
+ Char as an int or -1 if at the end of the stream.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceString.FindString(System.Int32,System.Boolean@,System.String@)">
+ <summary>
+ <para>
+ Helper function used to search for the filter's traget string. If the string
+ is found the result is true. If the string was not found false is returned and
+ nonMatchingChars contains the characters that were read to determine if the
+ string is present.
+ </para>
+
+ <para>
+ It is assumed the stream is positioned at the character after the first character
+ in the target string.
+ </para>
+ </summary>
+ <param name="startChar">First character in target string</param>
+ <param name="streamEnded">Ture if the stream ended while search for the string.</param>
+ <param name="nonMatchingChars">Characters that were read while searching for the string.</param>
+ <returns></returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceString.GetNextCharacter(NAnt.Core.Filters.ReplaceString.AcquireCharDelegate)">
+ <summary>
+ Returns the next character in the stream replacing the specified character. Using the
+ <see cref="T:NAnt.Core.Filters.ReplaceString.AcquireCharDelegate"/> allows for the same implementation for Read and Peek
+ </summary>
+ <param name="AcquireChar">Delegate to acquire the next character. (Read/Peek)</param>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceString.CompareCharacters(System.Int32,System.Int32)">
+ <summary>
+ Compares to characters taking into account the _ignoreCase flag.
+ </summary>
+ <param name="char1"></param>
+ <param name="char2"></param>
+ <returns></returns>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceString.From">
+ <summary>
+ The string to be replaced.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceString.To">
+ <summary>
+ The new value for the replaced string.
+ Am empty string is permissible.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceString.IgnoreCase">
+ <summary>
+ Determines if case will be ignored.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.ReplaceString.AcquireCharDelegate">
+ <summary>
+ Delegate for Read and Peek. Allows the same implementation
+ to be used for both methods.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.ReplaceTokens">
+ <summary>
+ Replaces tokens in the original input with user-supplied values.
+ </summary>
+ <remarks>
+ <para>
+ This filter replaces all token surrounded by a beginning and ending
+ token. The default beginning and ending tokens both default to '@'. The
+ optional <see cref="P:NAnt.Core.Filters.ReplaceTokens.BeginToken"/> and <see cref="P:NAnt.Core.Filters.ReplaceTokens.EndToken"/> attributes
+ can be specified to change either token. By default string
+ comparisons are case sensitive but this can be changed by setting the
+ optional <see cref="P:NAnt.Core.Filters.ReplaceTokens.IgnoreCase"/> attribute to <see langword="true"/>.
+ </para>
+ <para>
+ Tokens are specified by using the <see cref="T:NAnt.Core.Types.Token"/> element. It is
+ possible to specify from 1 to n tokens and replacement values. Values can
+ be any valid NAnt expression.
+ </para>
+ <para>
+ Filters are intended to be used as a element of a <see cref="T:NAnt.Core.Filters.FilterChain"/>.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Replace all occurrences of the string @DATE@ with the value of property
+ "TODAY".
+ </para>
+ <code>
+ <![CDATA[
+ <replacetokens>
+ <token key="DATE" value="${TODAY}" />
+ </replacetokens>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Replace all occurrences of the string &lt;DATE&gt; with the value of
+ property "TODAY".
+ </para>
+ <code>
+ <![CDATA[
+ <replacetokens begintoken="&lt;" endtoken="&gt;">
+ <token key="DATE" value="${TODAY}" />
+ </replacetokens>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.Chain(NAnt.Core.Filters.ChainableReader)">
+ <summary>
+ Construct that allows this filter to be chained to the one
+ in the parameter chainedReader.
+ </summary>
+ <param name="chainedReader">Filter that the filter will be chained to</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.Read">
+ <summary>
+ Reads the next character applying the filter logic.
+ </summary>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.Peek">
+ <summary>
+ Reads the next character applying the filter logic without
+ advancing the current position in the stream.
+
+ Peek currently is not supported.
+ </summary>
+ <returns>
+ Char as an int or -1 if at the end of the stream.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.Initialize">
+ <summary>
+ Initialize the filter by setting its parameters.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.FindTokenContents(System.Boolean@,System.Boolean@,System.Boolean@)">
+ <summary>
+ Finds a token give that we are positioned at a beginning token character. Either a
+ token replacement is returned or the characters that were read looking for the token.
+ </summary>
+ <param name="tokenNotFound">A token was not found</param>
+ <param name="unknownToken">A token was found by there is no replacement</param>
+ <param name="streamEnded">The stream ended while looking for the token</param>
+ <returns>Either the replacement token or the characters that were read looking for the token</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.GetNextCharacter(NAnt.Core.Filters.ReplaceTokens.AcquireCharDelegate)">
+ <summary>
+ Returns the next character in the stream replacing the specified character. Using the
+ <see cref="T:NAnt.Core.Filters.ReplaceTokens.AcquireCharDelegate"/> allows for the same implementation for Read and Peek
+ </summary>
+ <param name="AcquireChar">Delegate to acquire the next character. (Read/Peek)</param>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.ReplaceTokens.CompareCharacters(System.Int32,System.Int32)">
+ <summary>
+ Compares to characters taking <see cref="P:NAnt.Core.Filters.ReplaceTokens.IgnoreCase"/> into account.
+ </summary>
+ <param name="char1"></param>
+ <param name="char2"></param>
+ <returns>
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceTokens.BeginToken">
+ <summary>
+ Marks the beginning of a token. The default is "@".
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceTokens.EndToken">
+ <summary>
+ Marks the end of a token. The default is "@".
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceTokens.Tokens">
+ <summary>
+ Tokens and replacement values.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Filters.ReplaceTokens.IgnoreCase">
+ <summary>
+ Determines if case will be ignored.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.ReplaceTokens.AcquireCharDelegate">
+ <summary>
+ Delegate for Read and Peek. Allows the same implementation
+ to be used for both methods.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.TabsToSpaces">
+ <summary>
+ Converts tabs to spaces.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:NAnt.Core.Filters.TabsToSpaces"/> filter replaces tabs in a text file
+ with spaces.
+ </para>
+ <para>
+ Filters are intended to be used as a element of a <see cref="T:NAnt.Core.Filters.FilterChain"/>.
+ </para>
+ </remarks>
+ <example>
+ <para>Replace all tabs with four spaces.</para>
+ <code>
+ <![CDATA[
+ <tabtospaces tablength="4" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Filters.TabsToSpaces.Chain(NAnt.Core.Filters.ChainableReader)">
+ <summary>
+ Construct that allows this filter to be chained to the one
+ in the parameter chainedReader.
+ </summary>
+ <param name="chainedReader">Filter that the filter will be chained to</param>
+ </member>
+ <member name="M:NAnt.Core.Filters.TabsToSpaces.Peek">
+ <summary>
+ <para>Retrieves the next character with moving the position in the stream.</para>
+ <note>This method is not implemented</note>
+ </summary>
+ <returns>-1 if end of stream otherwise a character</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.TabsToSpaces.Read">
+ <summary>
+ <para>Retrieves the next character in the stream.</para>
+ </summary>
+ <returns>-1 if end of stream otherwise a character</returns>
+ </member>
+ <member name="M:NAnt.Core.Filters.TabsToSpaces.GetNextCharacter(NAnt.Core.Filters.TabsToSpaces.AcquireCharDelegate)">
+ <summary>
+ Returns the next character in the stream replacing the specified character. Using the
+ <see cref="T:NAnt.Core.Filters.TabsToSpaces.AcquireCharDelegate"/> allows for the same implementation for Read and Peek
+ </summary>
+ <param name="AcquireChar">Delegate to acquire the next character. (Read/Peek)</param>
+ <returns>Char as an int or -1 if at the end of the stream</returns>
+ </member>
+ <member name="P:NAnt.Core.Filters.TabsToSpaces.TabLength">
+ <summary>
+ The number of spaces used when converting a tab. The default is
+ "8".
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Filters.TabsToSpaces.AcquireCharDelegate">
+ <summary>
+ Delegate for Read and Peek. Allows the same implementation
+ to be used for both methods.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Functions.AssemblyFunctions">
+ <summary>
+ Functions to return information for a given assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.FunctionSetBase.Project">
+ <summary>
+ Gets or sets the <see cref="P:NAnt.Core.FunctionSetBase.Project"/> that this functionset will
+ reference.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.FunctionSetBase.Project"/> that this functionset will reference.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyFunctions.LoadFromFile(System.String)">
+ <summary>
+ Loads an assembly given its file name or path.
+ </summary>
+ <param name="assemblyFile">The name or path of the file that contains the manifest of the assembly.</param>
+ <returns>
+ The loaded assembly.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="assemblyFile"/> is an empty <see cref="T:System.String"/>.</exception>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="assemblyFile"/> is not found, or the module you are trying to load does not specify a filename extension.</exception>
+ <exception cref="T:System.BadImageFormatException"><paramref name="assemblyFile"/> is not a valid assembly.</exception>
+ <exception cref="T:System.IO.PathTooLongException">An assembly or module was loaded twice with two different evidences, or the assembly name is longer than MAX_PATH characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyFunctions.Load(System.String)">
+ <summary>
+ Loads an assembly given the long form of its name.
+ </summary>
+ <param name="assemblyString">The long form of the assembly name.</param>
+ <returns>
+ The loaded assembly.
+ </returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="assemblyString"/> is a <see langword="null"/>.</exception>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="assemblyString"/> is not found.</exception>
+ <example>
+ <para>
+ Determine the location of the Microsoft Access 11 Primary Interop
+ Assembly by loading it using its fully qualified name, and copy it
+ to the build directory.
+ </para>
+ <code>
+ <![CDATA[
+ <property name="access.pia.path" value="${assembly::get-location(assembly::load('Microsoft.Office.Interop.Access, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'))}" />
+ <copy file="${access.pia.path}" todir="${build.dir}" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyFunctions.GetFullName(System.Reflection.Assembly)">
+ <summary>
+ Gets the full name of the assembly, also known as the display name.
+ </summary>
+ <param name="assembly">The assembly to get the full name for.</param>
+ <returns>
+ The full name of the assembly, also known as the display name.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyFunctions.GetName(System.Reflection.Assembly)">
+ <summary>
+ Gets an <see cref="T:System.Reflection.AssemblyName"/> for the specified assembly.
+ </summary>
+ <param name="assembly">The assembly to get an <see cref="T:System.Reflection.AssemblyName"/> for.</param>
+ <returns>
+ An <see cref="T:System.Reflection.AssemblyName"/> for the specified assembly.
+ </returns>
+ <seealso cref="T:NAnt.Core.Functions.AssemblyNameFunctions"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyFunctions.GetLocation(System.Reflection.Assembly)">
+ <summary>
+ Gets the physical location, in codebase format, of the loaded file
+ that contains the manifest.
+ </summary>
+ <param name="assembly">The assembly to get the location for.</param>
+ <returns>
+ The location of the specified assembly.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Functions.AssemblyNameFunctions">
+ <summary>
+ Functions that return information about an assembly's identity.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyNameFunctions.GetCodeBase(System.Reflection.AssemblyName)">
+ <summary>
+ Gets the location of the assembly as a URL.
+ </summary>
+ <param name="assemblyName">The <see cref="T:System.Reflection.AssemblyName"/> of the assembly.</param>
+ <returns>
+ The location of the assembly as a URL.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyFunctions.GetName(System.Reflection.Assembly)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyNameFunctions.GetEscapedCodeBase(System.Reflection.AssemblyName)">
+ <summary>
+ Gets the URI, including escape characters, that represents the codebase.
+ </summary>
+ <param name="assemblyName">The <see cref="T:System.Reflection.AssemblyName"/> of the assembly.</param>
+ <returns>
+ The URI, including escape characters, that represents the codebase.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyFunctions.GetName(System.Reflection.Assembly)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyNameFunctions.GetFullName(System.Reflection.AssemblyName)">
+ <summary>
+ Gets the full name of the assembly, also known as the display name.
+ </summary>
+ <param name="assemblyName">The <see cref="T:System.Reflection.AssemblyName"/> of the assembly.</param>
+ <returns>
+ The full name of the assembly, also known as the display name.
+ </returns>
+ <example>
+ <para>
+ Output the full name of the <c>nunit.framework</c> assembly to the
+ build log.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="${assemblyname::get-full-name(assemblyname::get-assembly-name('nunit.framework.dll'))}" />
+ ]]>
+ </code>
+ </example>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyFunctions.GetName(System.Reflection.Assembly)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyNameFunctions.GetName(System.Reflection.AssemblyName)">
+ <summary>
+ Gets the simple, unencrypted name of the assembly.
+ </summary>
+ <param name="assemblyName">The <see cref="T:System.Reflection.AssemblyName"/> of the assembly.</param>
+ <returns>
+ The simple, unencrypted name of the assembly.
+ </returns>
+ <example>
+ <para>
+ Output the simple name of the <c>nunit.framework</c> assembly to
+ the build log.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="${assemblyname::get-name(assemblyname::get-assembly-name('nunit.framework.dll'))}" />
+ ]]>
+ </code>
+ </example>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyFunctions.GetName(System.Reflection.Assembly)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyNameFunctions.GetVersion(System.Reflection.AssemblyName)">
+ <summary>
+ Gets the version of the assembly.
+ </summary>
+ <param name="assemblyName">The <see cref="T:System.Reflection.AssemblyName"/> of the assembly.</param>
+ <returns>
+ The version of the assembly.
+ </returns>
+ <example>
+ <para>
+ Output the major version of the <c>nunit.framework</c> assembly
+ to the build log.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="${version::get-major-version(assemblyname::get-version(assemblyname::get-assembly-name('nunit.framework.dll')))}" />
+ ]]>
+ </code>
+ </example>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyFunctions.GetName(System.Reflection.Assembly)"/>
+ <seealso cref="T:NAnt.Core.Functions.VersionFunctions"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.AssemblyNameFunctions.GetAssemblyName(System.String)">
+ <summary>
+ Gets the <see cref="T:System.Reflection.AssemblyName"/> for a given file.
+ </summary>
+ <param name="assemblyFile">The assembly file for which to get the <see cref="T:System.Reflection.AssemblyName"/>.</param>
+ <returns>
+ An <see cref="T:System.Reflection.AssemblyName"/> object representing the given file.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="assemblyFile"/> is an empty <see cref="T:System.String"/>.</exception>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="assemblyFile"/> does not exist.</exception>
+ <exception cref="T:System.BadImageFormatException"><paramref name="assemblyFile"/> is not a valid assembly.</exception>
+ <remarks>
+ The assembly is not added to this domain.
+ </remarks>
+ <example>
+ <para>
+ Output the full name of the <c>nunit.framework</c> assembly to the
+ build log.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="${assemblyname::get-full-name(assemblyname::get-assembly-name('nunit.framework.dll'))}" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.BooleanConversionFunctions.Parse(System.String)">
+ <summary>
+ Converts the specified string representation of a logical value to
+ its <see cref="T:System.Boolean"/> equivalent.
+ </summary>
+ <param name="s">A string containing the value to convert.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="s"/> is equivalent to
+ "True"; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.FormatException"><paramref name="s"/> is not equivalent to <see cref="F:System.Boolean.TrueString"/> or <see cref="F:System.Boolean.FalseString"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.BooleanConversionFunctions.ToString(System.Boolean)">
+ <summary>
+ Converts the specified <see cref="T:System.Boolean"/> to its equivalent string
+ representation.
+ </summary>
+ <param name="value">A <see cref="T:System.Boolean"/> to convert.</param>
+ <returns>
+ "True" if <paramref name="value"/> is <see langword="true"/>, or
+ "False" if <paramref name="value"/> is <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ConversionFunctions.ToInt(System.Int32)">
+ <summary>
+ Converts the argument to an integer.
+ </summary>
+ <param name="value">value to be converted</param>
+ <returns><paramref name="value" /> converted to integer. The function fails with an exception when the conversion is not possible.</returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ConversionFunctions.ToDouble(System.Double)">
+ <summary>
+ Converts the argument to double
+ </summary>
+ <param name="value">The value to be converted.</param>
+ <returns><paramref name="value" /> converted to double. The function fails with an exception when the conversion is not possible.</returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ConversionFunctions.ConvertToString(System.String)">
+ <summary>
+ Converts the argument to a string.
+ </summary>
+ <param name="value">The value to be converted.</param>
+ <returns>
+ <paramref name="value" /> converted to string. The function fails
+ with an exception when the conversion is not possible.
+ </returns>
+ <remarks>
+ Named method ConvertToString as a static ToString method would break
+ CLS compliance.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.ConversionFunctions.ToDateTime(System.DateTime)">
+ <summary>
+ Converts the argument to a datetime.
+ </summary>
+ <param name="value">value to be converted</param>
+ <returns><paramref name="value" /> converted to datetime. The function fails with an exception when the conversion is not possible.</returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ConversionFunctions.ToBoolean(System.Boolean)">
+ <summary>
+ Converts the argument to a boolean
+ </summary>
+ <param name="value">The string value to be converted to boolean. Must be 'true' or 'false'.</param>
+ <returns>
+ <paramref name="value" /> converted to boolean. The function fails
+ with an exception when the conversion is not possible.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.Now">
+ <summary>
+ Gets a <see cref="T:System.DateTime"/> that is the current local date and
+ time on this computer.
+ </summary>
+ <returns>
+ A <see cref="T:System.DateTime"/> whose value is the current date and time.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetYear(System.DateTime)">
+ <summary>
+ Gets the year component of the specified date.
+ </summary>
+ <param name="date">The date of which to get the year component.</param>
+ <returns>
+ The year, between 1 and 9999.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetMonth(System.DateTime)">
+ <summary>
+ Gets the month component of the specified date.
+ </summary>
+ <param name="date">The date of which to get the month component.</param>
+ <returns>
+ The month, between 1 and 12.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetDay(System.DateTime)">
+ <summary>
+ Gets the day of the month represented by the specified date.
+ </summary>
+ <param name="date">The date of which to get the day of the month.</param>
+ <returns>
+ The day value, between 1 and 31.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetHour(System.DateTime)">
+ <summary>
+ Gets the hour component of the specified date.
+ </summary>
+ <param name="date">The date of which to get the hour component.</param>
+ <returns>
+ The hour, between 0 and 23.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetMinute(System.DateTime)">
+ <summary>
+ Gets the minute component of the specified date.
+ </summary>
+ <param name="date">The date of which to get the minute component.</param>
+ <returns>
+ The minute, between 0 and 59.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetSecond(System.DateTime)">
+ <summary>
+ Gets the seconds component of the specified date.
+ </summary>
+ <param name="date">The date of which to get the seconds component.</param>
+ <returns>
+ The seconds, between 0 and 59.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetMillisecond(System.DateTime)">
+ <summary>
+ Gets the milliseconds component of the specified date.
+ </summary>
+ <param name="date">The date of which to get the milliseconds component.</param>
+ <returns>
+ The millisecond, between 0 and 999.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetTicks(System.DateTime)">
+ <summary>
+ Gets the number of ticks that represent the specified date.
+ </summary>
+ <param name="date">The date of which to get the number of ticks.</param>
+ <returns>
+ The number of ticks that represent the date and time of the
+ specified date.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetDayOfWeek(System.DateTime)">
+ <summary>
+ Gets the day of the week represented by the specified date.
+ </summary>
+ <param name="date">The date of which to get the day of the week.</param>
+ <returns>
+ The day of the week, ranging from zero, indicating Sunday, to six,
+ indicating Saturday.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetDayOfYear(System.DateTime)">
+ <summary>
+ Gets the day of the year represented by the specified date.
+ </summary>
+ <param name="date">The date of which to get the day of the year.</param>
+ <returns>
+ The day of the year, between 1 and 366.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.GetDaysInMonth(System.Int32,System.Int32)">
+ <summary>
+ Returns the number of days in the specified month of the specified
+ year.
+ </summary>
+ <param name="year">The year.</param>
+ <param name="month">The month (a number ranging from 1 to 12).</param>
+ <returns>
+ The number of days in <paramref name="month"/> for the specified
+ <paramref name="year"/>.
+ </returns>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="month"/> is less than 1 or greater than 12.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeFunctions.IsLeapYear(System.Int32)">
+ <summary>
+ Returns an indication whether the specified year is a leap year.
+ </summary>
+ <param name="year">A 4-digit year.</param>
+ <returns>
+ <see langword="true" /> if <paramref name="year" /> is a leap year;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeConversionFunctions.Parse(System.String)">
+ <summary>
+ Converts the specified string representation of a date and time to
+ its <see cref="T:System.DateTime"/> equivalent.
+ </summary>
+ <param name="s">A string containing a date and time to convert.</param>
+ <returns>
+ A <see cref="T:System.DateTime"/> equivalent to the date and time contained
+ in <paramref name="s"/>.
+ </returns>
+ <exception cref="T:System.FormatException"><paramref name="s"/> does not contain a valid string representation of a date and time.</exception>
+ <remarks>
+ The <see cref="T:System.Globalization.DateTimeFormatInfo"/> for the invariant culture is
+ used to supply formatting information about <paramref name="s"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeConversionFunctions.ToString(System.DateTime)">
+ <summary>
+ Converts the specified <see cref="T:System.DateTime"/> to its equivalent
+ string representation.
+ </summary>
+ <param name="value">A <see cref="T:System.DateTime"/> to convert.</param>
+ <returns>
+ A string representation of <paramref name="value"/> formatted using
+ the general format specifier ("G").
+ </returns>
+ <remarks>
+ <paramref name="value"/> is formatted with the
+ <see cref="T:System.Globalization.DateTimeFormatInfo"/> for the invariant culture.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.DateTimeConversionFunctions.ToString(System.DateTime,System.String)">
+ <summary>
+ Converts the specified <see cref="T:System.DateTime"/> to its equivalent
+ string representation.
+ </summary>
+ <param name="value">A <see cref="T:System.DateTime"/> to convert.</param>
+ <param name="format">A format string.</param>
+ <returns>
+ A string representation of <paramref name="value"/> formatted
+ using the specified format
+ </returns>
+ <remarks>
+ <paramref name="value"/> is formatted with the
+ <see cref="T:System.Globalization.DateTimeFormatInfo"/> for the invariant culture.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Functions.DirectoryFunctions">
+ <summary>
+ Groups a set of functions for dealing with directories.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.GetCreationTime(System.String)">
+ <summary>
+ Returns the creation date and time of the specified directory.
+ </summary>
+ <param name="path">The directory for which to obtain creation date and time information.</param>
+ <returns>
+ The creation date and time of the specified directory.
+ </returns>
+ <exception cref="T:System.IO.IOException">The specified directory does not exist.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.GetLastWriteTime(System.String)">
+ <summary>
+ Returns the date and time the specified directory was last written to.
+ </summary>
+ <param name="path">The directory for which to obtain write date and time information.</param>
+ <returns>
+ The date and time the specified directory was last written to.
+ </returns>
+ <exception cref="T:System.IO.IOException">The specified directory does not exist.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.GetLastAccessTime(System.String)">
+ <summary>
+ Returns the date and time the specified directory was last accessed.
+ </summary>
+ <param name="path">The directory for which to obtain access date and time information.</param>
+ <returns>
+ The date and time the specified directory was last accessed.
+ </returns>
+ <exception cref="T:System.IO.IOException">The specified directory does not exist.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ <exception cref="T:System.NotSupportedException">The <paramref name="path"/> parameter is in an invalid format.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.GetCurrentDirectory">
+ <summary>
+ Gets the current working directory.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> containing the path of the current working
+ directory.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.GetParentDirectory(System.String)">
+ <summary>
+ Retrieves the parent directory of the specified path.
+ </summary>
+ <param name="path">The path for which to retrieve the parent directory.</param>
+ <returns>
+ The parent directory, or an empty <see cref="T:System.String"/> if
+ <paramref name="path"/> is the root directory, including the root
+ of a UNC server or share name.
+ </returns>
+ <exception cref="T:System.IO.IOException">The directory specified by <paramref name="path"/> is read-only.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ <exception cref="T:System.IO.DirectoryNotFoundException">The specified path was not found.</exception>
+ <example>
+ <para>
+ Copy "readme.txt" from the current working directory to
+ its parent directory.
+ </para>
+ <code>
+ <![CDATA[
+ <property name="current.dir" value="${directory::get-current-directory()}" />
+ <property name="current.dir.parent" value="${directory::get-parent-directory(current.dir)}" />
+ <copy file="${path::combine(current.dir, 'readme.txt')} todir="${current.dir.parent}" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.GetDirectoryRoot(System.String)">
+ <summary>
+ Returns the volume information, root information, or both for the
+ specified path.
+ </summary>
+ <param name="path">The path for which to retrieve the parent directory.</param>
+ <returns>
+ A string containing the volume information, root information, or
+ both for the specified path.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.DirectoryFunctions.Exists(System.String)">
+ <summary>
+ Determines whether the given path refers to an existing directory
+ on disk.
+ </summary>
+ <param name="path">The path to test.</param>
+ <returns>
+ <see langword="true" /> if <paramref name="path" /> refers to an
+ existing directory; otherwise, <see langword="false" />.
+ </returns>
+ <example>
+ <para>Remove directory "test", if it exists.</para>
+ <code>
+ <![CDATA[
+ <delete dir="test" if="${directory::exists('test')}" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.Functions.DnsFunctions">
+ <summary>
+ Functions for requesting information from DNS.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.DnsFunctions.GetHostName">
+ <summary>
+ Gets the host name of the local computer.
+ </summary>
+ <returns>
+ A string that contains the DNS host name of the local computer.
+ </returns>
+ <exception cref="T:System.Net.Sockets.SocketException">An error is encountered when resolving the local host name.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.DoubleConversionFunctions.Parse(System.String)">
+ <summary>
+ Converts the specified string representation of a number to its
+ double-precision floating point number equivalent.
+ </summary>
+ <param name="s">A string containing a number to convert.</param>
+ <returns>
+ A double-precision floating point number equivalent to the numeric
+ value or symbol specified in <paramref name="s"/>.
+ </returns>
+ <exception cref="T:System.FormatException"><paramref name="s"/> is not a number in a valid format.</exception>
+ <exception cref="T:System.OverflowException"><paramref name="s"/> represents a number less than <see cref="F:System.Double.MinValue"/> or greater than <see cref="F:System.Double.MaxValue"/>.</exception>
+ <remarks>
+ The <see cref="T:System.Globalization.NumberFormatInfo"/> for the invariant culture is
+ used to supply formatting information about <paramref name="s"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.DoubleConversionFunctions.ToString(System.Double)">
+ <summary>
+ Converts the specified <see cref="T:System.Double"/> to its equivalent
+ string representation.
+ </summary>
+ <param name="value">A <see cref="T:System.Double"/> to convert.</param>
+ <returns>
+ The string representation of <paramref name="value"/> formatted
+ using the general format specifier ("G").
+ </returns>
+ <remarks>
+ <paramref name="value"/> is formatted with the
+ <see cref="T:System.Globalization.NumberFormatInfo"/> for the invariant culture.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Functions.EnvironmentFunctions">
+ <summary>
+ Provide information about the current environment and platform.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.GetFolderPath(System.Environment.SpecialFolder)">
+ <summary>
+ Gets the path to the system special folder identified by the
+ specified enumeration.
+ </summary>
+ <param name="folder">An enumerated constant that identifies a system special folder.</param>
+ <returns>
+ The path to the specified system special folder, if that folder
+ physically exists on your computer; otherwise, the empty string ("").
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="folder"/> is not a member of <see cref="T:System.Environment.SpecialFolder"/>.</exception>
+ <example>
+ <para>
+ Copy "out.log" from the project base directory to the
+ program files directory.
+ </para>
+ <code>
+ <![CDATA[
+ <copy file="out.log" todir="${environment::get-folder-path('ProgramFiles')}" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.GetMachineName">
+ <summary>
+ Gets the NetBIOS name of this local computer.
+ </summary>
+ <returns>
+ The NetBIOS name of this local computer.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">The name of this computer cannot be obtained.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.GetOperatingSystem">
+ <summary>
+ Gets an <see cref="T:System.OperatingSystem"/> object that represents the
+ current operating system.
+ </summary>
+ <returns>
+ An <see cref="T:System.OperatingSystem"/> object that contains the current
+ platform identifier and version number.
+ </returns>
+ <example>
+ <para>
+ Output string representation of the current operating system.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="OS=${operating-system::to-string(environment::get-operating-system())}" />
+ ]]>
+ </code>
+ <para>If the operating system is Windows 2000, the output is:</para>
+ <code>
+ Microsoft Windows NT 5.0.2195.0
+ </code>
+ </example>
+ <seealso cref="T:NAnt.Core.Functions.OperatingSystemFunctions"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.GetUserName">
+ <summary>
+ Gets the user name of the person who started the current thread.
+ </summary>
+ <returns>
+ The name of the person logged on to the system who started the
+ current thread.
+ </returns>
+ <example>
+ <para>
+ Modify the home directory of the current user on unix-based systems.
+ </para>
+ <code>
+ <![CDATA[
+ <exec program="usermod">
+ <arg value="-d" />
+ <arg value="/home/temp" />
+ <arg value="${environment::get-user-name()}" />
+ </exec>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.GetVariable(System.String)">
+ <summary>
+ Returns the value of the specified environment variable.
+ </summary>
+ <param name="name">The environment variable of which the value should be returned.</param>
+ <returns>
+ The value of the specified environment variable.
+ </returns>
+ <exception cref="T:System.ArgumentException">Environment variable <paramref name="name"/> does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.VariableExists(System.String)">
+ <summary>
+ Gets a value indicating whether the specified environment variable
+ exists.
+ </summary>
+ <param name="name">The environment variable that should be checked.</param>
+ <returns>
+ <see langword="true" /> if the environment variable exists; otherwise,
+ <see langword="false" />.
+ </returns>
+ <example>
+ <para>
+ Execute a set of tasks only if the &quot;BUILD_DEBUG&quot; environment
+ variable is set.
+ </para>
+ <code>
+ <![CDATA[
+ <if test="${environment::variable-exists('BUILD_DEBUG')}">
+ ...
+ </if>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion">
+ <summary>
+ Gets a <see cref="T:System.Version"/> object that describes the major,
+ minor, build, and revision numbers of the Common Language Runtime.
+ </summary>
+ <returns>
+ A Version object.
+ </returns>
+ <example>
+ <para>Output the major version of the CLR.</para>
+ <code>
+ <![CDATA[
+ <echo message="Major version=${version::get-major(environment::get-version())}" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.EnvironmentFunctions.NewLine">
+ <summary>
+ Gets the newline string defined for this environment.
+ </summary>
+ <returns>
+ A string containing CRLF for non-Unix platforms, or LF for Unix
+ platforms.
+ </returns>
+ <example>
+ <para>Output two lines in a log file.</para>
+ <code>
+ <![CDATA[
+ <echo file="build.log" message="First line${environment::newline()}Second line" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.Functions.FileFunctions">
+ <summary>
+ Groups a set of functions for dealing with files.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.GetCreationTime(System.String)">
+ <summary>
+ Returns the creation date and time of the specified file.
+ </summary>
+ <param name="path">The file for which to obtain creation date and time information.</param>
+ <returns>
+ The creation date and time of the specified file.
+ </returns>
+ <exception cref="T:System.IO.IOException">The specified file does not exist.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ <exception cref="T:System.NotSupportedException">The <paramref name="path"/> parameter is in an invalid format.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.GetLastWriteTime(System.String)">
+ <summary>
+ Returns the date and time the specified file was last written to.
+ </summary>
+ <param name="path">The file for which to obtain write date and time information.</param>
+ <returns>
+ The date and time the specified file was last written to.
+ </returns>
+ <exception cref="T:System.IO.IOException">The specified file does not exist.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.GetLastAccessTime(System.String)">
+ <summary>
+ Returns the date and time the specified file was last accessed.
+ </summary>
+ <param name="path">The file for which to obtain access date and time information.</param>
+ <returns>
+ The date and time the specified file was last accessed.
+ </returns>
+ <exception cref="T:System.IO.IOException">The specified file does not exist.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ <exception cref="T:System.NotSupportedException">The <paramref name="path"/> parameter is in an invalid format.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.Exists(System.String)">
+ <summary>
+ Determines whether the specified file exists.
+ </summary>
+ <param name="file">The file to check.</param>
+ <returns>
+ <see langword="true" /> if <paramref name="file" /> refers to an
+ existing file; otherwise, <see langword="false" />.
+ </returns>
+ <example>
+ <para>Execute a set of tasks, if file "output.xml" does not exist.</para>
+ <code>
+ <![CDATA[
+ <if test="${not file::exists('output.xml')}">
+ ...
+ </if>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.UpToDate(System.String,System.String)">
+ <summary>
+ Determines whether <paramref name="targetFile"/> is more or equal
+ up-to-date than <paramref name="srcFile"/>.
+ </summary>
+ <param name="srcFile">The file to check against the target file.</param>
+ <param name="targetFile">The file for which we want to determine the status.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="targetFile"/> is more
+ or equal up-to-date than <paramref name="srcFile"/>; otherwise,
+ <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="srcFile"/> or <paramref name="targetFile"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both of either <paramref name="srcFile"/> or <paramref name="targetFile"/> exceed the system-defined maximum length.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.GetLength(System.String)">
+ <summary>
+ Gets the length of the file.
+ </summary>
+ <param name="file">filename</param>
+ <returns>
+ Length in bytes, of the file named <paramref name="file"/>.
+ </returns>
+ <exception cref="T:System.IO.FileNotFoundException">The file specified cannot be found.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileFunctions.IsAssembly(System.String)">
+ <summary>
+ Checks if a given file is an assembly.
+ </summary>
+ <param name="assemblyFile">The name or path of the file to be checked.</param>
+ <returns>True if the file is a valid assembly, false if it's not or if the assembly seems corrupted (invalid headers or metadata).</returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="assemblyFile"/> is a null <see cref="T:System.String"/>.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="assemblyFile"/> is an empty <see cref="T:System.String"/>.</exception>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="assemblyFile"/> is not found, or the file you are trying to check does not specify a filename extension.</exception>
+ <exception cref="T:System.Security.SecurityException">The caller does not have path discovery permission.</exception>
+ </member>
+ <member name="T:NAnt.Core.Functions.FileVersionInfoFunctions">
+ <summary>
+ Functions that provide version information for a physical file on disk.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileVersionInfoFunctions.GetVersionInfo(System.String)">
+ <summary>
+ Returns a <see cref="T:System.Diagnostics.FileVersionInfo"/> representing the version
+ information associated with the specified file.
+ </summary>
+ <param name="fileName">The file to retrieve the version information for.</param>
+ <returns>
+ A <see cref="T:System.Diagnostics.FileVersionInfo"/> containing information about the file.
+ </returns>
+ <exception cref="T:System.IO.FileNotFoundException">The file specified cannot be found.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileVersionInfoFunctions.GetCompanyName(System.Diagnostics.FileVersionInfo)">
+ <summary>
+ Gets the name of the company that produced the file.
+ </summary>
+ <param name="fileVersionInfo">A <see cref="T:System.Diagnostics.FileVersionInfo"/> instance containing version information about a file.</param>
+ <returns>
+ The name of the company that produced the file.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileVersionInfoFunctions.GetFileVersion(System.Diagnostics.FileVersionInfo)">
+ <summary>
+ Gets the file version of a file.
+ </summary>
+ <param name="fileVersionInfo">A <see cref="T:System.Diagnostics.FileVersionInfo"/> instance containing version information about a file.</param>
+ <returns>
+ The file version of a file.
+ </returns>
+ <see cref="T:NAnt.Core.Functions.VersionFunctions"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileVersionInfoFunctions.GetProductName(System.Diagnostics.FileVersionInfo)">
+ <summary>
+ Gets the name of the product the file is distributed with.
+ </summary>
+ <param name="fileVersionInfo">A <see cref="T:System.Diagnostics.FileVersionInfo"/> instance containing version information about a file.</param>
+ <returns>
+ The name of the product the file is distributed with.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.FileVersionInfoFunctions.GetProductVersion(System.Diagnostics.FileVersionInfo)">
+ <summary>
+ Gets the product version of a file.
+ </summary>
+ <param name="fileVersionInfo">A <see cref="T:System.Diagnostics.FileVersionInfo"/> instance containing version information about a file.</param>
+ <returns>
+ The product version of a file.
+ </returns>
+ <see cref="T:NAnt.Core.Functions.VersionFunctions"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.Exists(System.String)">
+ <summary>
+ Checks whether the specified framework exists, and is valid.
+ </summary>
+ <param name="framework">The framework to test.</param>
+ <returns>
+ <see langword="true" /> if the specified framework exists ; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.SdkExists(System.String)">
+ <summary>
+ Checks whether the SDK for the specified framework is installed.
+ </summary>
+ <param name="framework">The framework to test.</param>
+ <returns>
+ <see langword="true"/> if the SDK for specified framework is installed;
+ otherwise, <see langword="false"/>.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework">
+ <summary>
+ Gets the identifier of the current target framework.
+ </summary>
+ <returns>
+ The identifier of the current target framework.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework">
+ <summary>
+ Gets the identifier of the runtime framework.
+ </summary>
+ <returns>
+ The identifier of the runtime framework.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetFamily(System.String)">
+ <summary>
+ Gets the family of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the family should be returned.</param>
+ <returns>
+ The family of the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetVersion">
+ <summary>
+ Gets the version of the current target framework.
+ </summary>
+ <returns>
+ The version of the current target framework.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetVersion(System.String)">
+ <summary>
+ Gets the version of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the version should be returned.</param>
+ <returns>
+ The version of the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetDescription">
+ <summary>
+ Gets the description of the current target framework.
+ </summary>
+ <returns>
+ The description of the current target framework.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetDescription(System.String)">
+ <summary>
+ Gets the description of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the description should be returned.</param>
+ <returns>
+ The description of the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetClrVersion">
+ <summary>
+ Gets the Common Language Runtime version of the current target
+ framework.
+ </summary>
+ <returns>
+ The Common Language Runtime version of the current target framework.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetClrVersion(System.String)">
+ <summary>
+ Gets the Common Language Runtime version of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the Common Language Runtime version should be returned.</param>
+ <returns>
+ The Common Language Runtime version of the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetFrameworkDirectory(System.String)">
+ <summary>
+ Gets the framework directory of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the framework directory should be returned.</param>
+ <returns>
+ The framework directory of the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetAssemblyDirectory(System.String)">
+ <summary>
+ Gets the assembly directory of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the assembly directory should be returned.</param>
+ <returns>
+ The assembly directory of the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetSdkDirectory(System.String)">
+ <summary>
+ Gets the SDK directory of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the SDK directory should be returned.</param>
+ <returns>
+ The SDK directory of the specified framework, or an empty
+ <see cref="T:System.String"/> if the SDK of the specified framework is not
+ installed.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetToolPath(System.String)">
+ <summary>
+ Gets the absolute path of the specified tool for the current
+ target framework.
+ </summary>
+ <param name="tool">The file name of the tool to search for.</param>
+ <returns>
+ The absolute path to <paramref name="tool"/> if found in one of the
+ configured tool paths; otherwise, an error is reported.
+ </returns>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="tool"/> could not be found in the configured tool paths.</exception>
+ <remarks>
+ <para>
+ The configured tool paths are scanned in the order in which they
+ are defined in the framework configuration.
+ </para>
+ <para>
+ The file name of the tool to search should include the extension.
+ </para>
+ </remarks>
+ <example>
+ <para>Use <b>gacutil</b> to install an assembly in the GAC.</para>
+ <code>
+ <![CDATA[
+ <exec program="${framework::get-tool-path('gacutil.exe')}" managed="strict">
+ <arg value="/i" />
+ <arg file="Cegeka.HealthFramework.dll" />
+ </exec>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeEngine(System.String)">
+ <summary>
+ Gets the runtime engine of the specified framework.
+ </summary>
+ <param name="framework">The framework of which the runtime engine should be returned.</param>
+ <returns>
+ The full path to the runtime engine of the specified framework, or
+ an empty <see cref="T:System.String"/> if no runtime engine is defined
+ for the specified framework.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetRuntimeFramework"/>
+ <seealso cref="M:NAnt.Core.Functions.FrameworkFunctions.GetTargetFramework"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetFrameworks(NAnt.Core.FrameworkTypes)">
+ <summary>
+ Gets a comma-separated list of frameworks filtered by the specified
+ <see cref="T:NAnt.Core.FrameworkTypes"/>.
+ </summary>
+ <param name="types">A bitwise combination of <see cref="T:NAnt.Core.FrameworkTypes"/> values that filter the frameworks to retrieve.</param>
+ <returns>
+ A comma-separated list of frameworks filtered by the specified
+ <see cref="T:NAnt.Core.FrameworkTypes"/>, sorted on name.
+ </returns>
+ <example>
+ <para>
+ Define a <b>build-all</b> target that executes the <b>build</b>
+ target once for each installed framework targeting compact
+ devices.
+ </para>
+ <code>
+ <![CDATA[
+ <target name="build-all">
+ <foreach item="String" in="${framework::get-frameworks('installed compact')}" delim="," property="framework">
+ <property name="nant.settings.currentframework" value="${framework}" />
+ <call target="build" />
+ </foreach>
+ </target>
+
+ <target name="build">
+ ...
+ </target>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.FrameworkFunctions.GetFramework(System.String)">
+ <summary>
+ Checks whether the specified framework is valid.
+ </summary>
+ <param name="framework">The framework to check.</param>
+ <exception cref="T:System.ArgumentException"><paramref name="framework"/> is not a valid framework identifier.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.Int32ConversionFunctions.Parse(System.String)">
+ <summary>
+ Converts the specified string representation of a number to its
+ 32-bit signed integer equivalent.
+ </summary>
+ <param name="s">A string containing a number to convert.</param>
+ <returns>
+ A 32-bit signed integer equivalent to the number contained in
+ <paramref name="s"/>.
+ </returns>
+ <exception cref="T:System.FormatException"><paramref name="s"/> is not of the correct format.</exception>
+ <exception cref="T:System.OverflowException"><paramref name="s"/> represents a number less than <see cref="F:System.Int32.MinValue"/> or greater than <see cref="F:System.Int32.MaxValue"/>.</exception>
+ <remarks>
+ The <see cref="T:System.Globalization.NumberFormatInfo"/> for the invariant culture is
+ used to supply formatting information about <paramref name="s"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.Int32ConversionFunctions.ToString(System.Int32)">
+ <summary>
+ Converts the specified <see cref="T:System.Int32"/> to its equivalent string
+ representation.
+ </summary>
+ <param name="value">A <see cref="T:System.Int32"/> to convert.</param>
+ <returns>
+ The string representation of <paramref name="value"/>, consisting
+ of a negative sign if the value is negative, and a sequence of
+ digits ranging from 0 to 9 with no leading zeroes.
+ </returns>
+ <remarks>
+ <paramref name="value"/> is formatted with the
+ <see cref="T:System.Globalization.NumberFormatInfo"/> for the invariant culture.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.Int64ConversionFunctions.Parse(System.String)">
+ <summary>
+ Converts the specified string representation of a number to its
+ 64-bit signed integer equivalent.
+ </summary>
+ <param name="s">A string containing a number to convert.</param>
+ <returns>
+ A 64-bit signed integer equivalent to the number contained in
+ <paramref name="s"/>.
+ </returns>
+ <exception cref="T:System.FormatException"><paramref name="s"/> is not of the correct format.</exception>
+ <exception cref="T:System.OverflowException"><paramref name="s"/> represents a number less than <see cref="F:System.Int64.MinValue"/> or greater than <see cref="F:System.Int64.MaxValue"/>.</exception>
+ <remarks>
+ The <see cref="T:System.Globalization.NumberFormatInfo"/> for the invariant culture is
+ used to supply formatting information about <paramref name="s"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.Int64ConversionFunctions.ToString(System.Int64)">
+ <summary>
+ Converts the specified <see cref="T:System.Int64"/> to its equivalent string
+ representation.
+ </summary>
+ <param name="value">A <see cref="T:System.Int64"/> to convert.</param>
+ <returns>
+ The string representation of <paramref name="value"/>, consisting
+ of a negative sign if the value is negative, and a sequence of
+ digits ranging from 0 to 9 with no leading zeroes.
+ </returns>
+ <remarks>
+ <paramref name="value"/> is formatted with the
+ <see cref="T:System.Globalization.NumberFormatInfo"/> for the invariant culture.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Functions.MathFunctions.Round(System.Double)">
+ <summary>
+ Rounds the value to the nearest whole number
+ </summary>
+ <param name="value">Number to be rounded, can be anything convertible to a double.</param>
+ <returns>
+ Rounded value.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.MathFunctions.Floor(System.Double)">
+ <summary>
+ Returns the largest whole number less than or equal to the specified
+ number.
+ </summary>
+ <param name="value">value to be , can be anything convertible to a double</param>
+ <returns>
+ The largest whole number less than or equal to the specified number.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.MathFunctions.Ceiling(System.Double)">
+ <summary>
+ Returns the smallest whole number greater than or equal to the specified number
+ </summary>
+ <param name="value">value</param>
+ <returns>
+ The smallest whole number greater than or equal to the specified number.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.MathFunctions.Abs(System.Double)">
+ <summary>
+ Returns the absolute value of the specified number
+ </summary>
+ <param name="value">value to take the absolute value from</param>
+ <returns>
+ <paramref name="value" /> when <paramref name="value" /> is greater
+ than or equal to zero; otherwise, -<paramref name="value" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.NAntFunctions.GetBaseDirectory">
+ <summary>
+ Gets the base directory of the appdomain in which NAnt is running.
+ </summary>
+ <returns>
+ The base directory of the appdomain in which NAnt is running.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.NAntFunctions.GetAssembly">
+ <summary>
+ Gets the NAnt assembly.
+ </summary>
+ <returns>
+ The NAnt assembly.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.NAntFunctions.ScanProbingPaths(System.String)">
+ <summary>
+ Searches the probing paths of the current target framework for the
+ specified file.
+ </summary>
+ <param name="fileName">The name of the file to search for.</param>
+ <returns>
+ The absolute path to <paramref name="fileName"/> if found in one of the
+ configured probing; otherwise, an error is reported.
+ </returns>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="fileName"/> could not be found in the configured probing paths.</exception>
+ <remarks>
+ <para>
+ The (relative) probing paths are resolved relative to the base
+ directory of the appdomain in which NAnt is running.
+ </para>
+ <para>
+ The configured probing paths are scanned recursively in the order
+ in which they are defined in the framework configuration.
+ </para>
+ <para>
+ The file name to search should include the extension.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Compile an assembly referencing the <c>nunit.framework</c> assembly
+ for the current target framework that is shipped as part of the
+ NAnt distribution.
+ </para>
+ <code>
+ <![CDATA[
+ <csc target="library" output="NAnt.Core.Tests.dll">
+ <sources basedir="NAnt.Core">
+ <include name="**/*.cs" />
+ </sources>
+ <references>
+ <include name="NAnt.Core.dll" />
+ <include name="${framework::get-lib-path('nunit.framework.dll')}" />
+ </references>
+ </csc>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.NAntFunctions.ScanProbingPaths(System.String,System.String)">
+ <summary>
+ Searches the probing paths of the current target framework for the
+ specified file.
+ </summary>
+ <param name="baseDirectory">The directory to use a base directory for the probing paths.</param>
+ <param name="fileName">The name of the file to search for.</param>
+ <returns>
+ The absolute path to <paramref name="fileName"/> if found in one of the
+ configured probing; otherwise, an error is reported.
+ </returns>
+ <exception cref="T:System.IO.FileNotFoundException"><paramref name="fileName"/> could not be found in the configured probing paths.</exception>
+ <remarks>
+ <para>
+ The (relative) probing paths are resolved relative to the specified
+ base directory.
+ </para>
+ <para>
+ The configured probing paths are scanned recursively in the order
+ in which they are defined in the framework configuration.
+ </para>
+ <para>
+ The file name to search should include the extension.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Compile an assembly referencing the <c>nunit.framework</c> assembly
+ for the current target framework that is shipped as part of the
+ NAnt distribution.
+ </para>
+ <code>
+ <![CDATA[
+ <csc target="library" output="NAnt.Core.Tests.dll">
+ <sources basedir="NAnt.Core">
+ <include name="**/*.cs" />
+ </sources>
+ <references>
+ <include name="NAnt.Core.dll" />
+ <include name="${framework::get-lib-path('nunit.framework.dll')}" />
+ </references>
+ </csc>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.ProjectFunctions.GetName">
+ <summary>
+ Gets the name of the current project.
+ </summary>
+ <returns>
+ The name of the current project, or an empty <see cref="T:System.String"/>
+ if no name is specified in the build file.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ProjectFunctions.GetBuildFileUri">
+ <summary>
+ Gets the <see cref="T:System.Uri"/> form of the build file.
+ </summary>
+ <returns>
+ The <see cref="T:System.Uri"/> form of the build file, or
+ an empty <see cref="T:System.String"/> if the project is not file backed.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ProjectFunctions.GetBuildFilePath">
+ <summary>
+ Gets the local path to the build file.
+ </summary>
+ <returns>
+ The local path of the build file, or an empty <see cref="T:System.String"/>
+ if the project is not file backed.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ProjectFunctions.GetDefaultTarget">
+ <summary>
+ Gets the name of the target that will be executed when no other
+ build targets are specified.
+ </summary>
+ <returns>
+ The name of the target that will be executed when no other build
+ targets are specified, or an empty <see cref="T:System.String"/> if no
+ default target is defined for the project.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.ProjectFunctions.GetBaseDirectory">
+ <summary>
+ Gets the base directory of the current project.
+ </summary>
+ <returns>
+ The base directory of the current project.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TargetFunctions.Exists(System.String)">
+ <summary>
+ Checks whether the specified target exists.
+ </summary>
+ <param name="name">The target to test.</param>
+ <returns>
+ <see langword="true" /> if the specified target exists; otherwise,
+ <see langword="false" />.
+ </returns>
+ <example>
+ <para>
+ Execute target &quot;clean&quot;, if it exists.
+ </para>
+ <code>
+ <![CDATA[
+ <if test="${target::exists('clean')}">
+ <call target="clean" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.TargetFunctions.GetCurrentTarget">
+ <summary>
+ Gets the name of the target being executed.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that contains the name of the target
+ being executed.
+ </returns>
+ <exception cref="T:System.InvalidOperationException">No target is being executed.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.TargetFunctions.HasExecuted(System.String)">
+ <summary>
+ Checks whether the specified target has already been executed.
+ </summary>
+ <param name="name">The target to test.</param>
+ <returns>
+ <see langword="true"/> if the specified target has already been
+ executed; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException">Target <paramref name="name"/> does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.TaskFunctions.Exists(System.String)">
+ <summary>
+ Checks whether the specified task exists.
+ </summary>
+ <param name="name">The task to test.</param>
+ <returns>
+ <see langword="true" /> if the specified task exists; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TaskFunctions.GetAssembly(System.String)">
+ <summary>
+ Returns the <see cref="T:System.Reflection.Assembly"/> from which the specified task
+ was loaded.
+ </summary>
+ <param name="name">The name of the task to get the <see cref="T:System.Reflection.Assembly"/> of.</param>
+ <returns>
+ The <see cref="T:System.Reflection.Assembly"/> from which the specified task was loaded.
+ </returns>
+ <exception cref="T:System.ArgumentException">Task <paramref name="name"/> is not available.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PropertyFunctions.Exists(System.String)">
+ <summary>
+ Checks whether the specified property exists.
+ </summary>
+ <param name="name">The property to test.</param>
+ <returns>
+ <see langword="true" /> if the specified property exists; otherwise,
+ <see langword="false" />.
+ </returns>
+ <example>
+ <para>
+ Execute a set of tasks if the &quot;build.debug&quot; property
+ exists.
+ </para>
+ <code>
+ <![CDATA[
+ <if test="${property::exists('build.debug')}">
+ <echo message="Starting debug build" />
+ <call target="init-debug" />
+ <call target="build" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.PropertyFunctions.IsReadOnly(System.String)">
+ <summary>
+ Checks whether the specified property is read-only.
+ </summary>
+ <param name="name">The property to test.</param>
+ <returns>
+ <see langword="true"/> if the specified property is read-only;
+ otherwise, <see langword="false"/>.
+ </returns>
+ <example>
+ <para>Check whether the "debug" property is read-only.</para>
+ <code>property::is-readonly('debug')</code>
+ </example>
+ <exception cref="T:System.ArgumentException">Property <paramref name="name"/> has not been set.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PropertyFunctions.IsDynamic(System.String)">
+ <summary>
+ Checks whether the specified property is a dynamic property.
+ </summary>
+ <param name="name">The property to test.</param>
+ <returns>
+ <see langword="true"/> if the specified property is a dynamic
+ property; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException">Property <paramref name="name"/> has not been set.</exception>
+ <example>
+ <para>
+ Check whether the "debug" property is a dynamic property.
+ </para>
+ <code>property::is-dynamic('debug')</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.PlatformFunctions.GetName">
+ <summary>
+ Gets the name of the platform on which NAnt is running.
+ </summary>
+ <returns>
+ The name of the platform on which NAnt is running.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PlatformFunctions.IsWin32">
+ <summary>
+ Checks whether NAnt is running on Windows (and not just 32-bit Windows
+ as the name may lead you to believe).
+ </summary>
+ <returns>
+ <see langword="true" /> if NAnt is running on Windows;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PlatformFunctions.IsWindows">
+ <summary>
+ Checks whether NAnt is running on Windows.
+ </summary>
+ <returns>
+ <see langword="true" /> if NAnt is running on Windows;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PlatformFunctions.IsUnix">
+ <summary>
+ Checks whether NAnt is running on Unix.
+ </summary>
+ <returns>
+ <see langword="true" /> if NAnt is running on Unix;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Functions.OperatingSystemFunctions">
+ <summary>
+ Functions that return information about an operating system.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Functions.OperatingSystemFunctions.GetPlatform(System.OperatingSystem)">
+ <summary>
+ Gets a <see cref="T:System.PlatformID"/> value that identifies the operating
+ system platform.
+ </summary>
+ <param name="operatingSystem">The operating system.</param>
+ <returns>
+ <see cref="T:System.PlatformID"/> value that identifies the operating system
+ platform.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetOperatingSystem"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.OperatingSystemFunctions.GetVersion(System.OperatingSystem)">
+ <summary>
+ Gets a <see cref="T:System.Version"/> object that identifies this operating
+ system.
+ </summary>
+ <param name="operatingSystem">The operating system.</param>
+ <returns>
+ A <see cref="T:System.Version"/> object that describes the major version,
+ minor version, build, and revision of the operating system.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetOperatingSystem"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.OperatingSystemFunctions.ToString(System.OperatingSystem)">
+ <summary>
+ Converts the value of the specified operating system to its equivalent
+ <see cref="T:System.String"/> representation.
+ </summary>
+ <param name="operatingSystem">The operating system.</param>
+ <returns>
+ The <see cref="T:System.String"/> representation of
+ <paramref name="operatingSystem"/>.
+ </returns>
+ <example>
+ <para>
+ Output string representation of the current operating system.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="OS=${operating-system::to-string(environment::get-operating-system())}" />
+ ]]>
+ </code>
+ <para>If the operating system is Windows 2000, the output is:</para>
+ <code>
+ Microsoft Windows NT 5.0.2195.0
+ </code>
+ </example>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetOperatingSystem"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetFullPath(System.String)">
+ <summary>
+ Returns the fully qualified path.
+ </summary>
+ <param name="path">The file or directory for which to obtain absolute path information.</param>
+ <returns>
+ A string containing the fully qualified location of <paramref name="path"/>,
+ such as "C:\MyFile.txt".
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> is a zero-length string, contains only white space, or contains one or more invalid characters.</exception>
+ <exception cref="T:System.NotSupportedException"><paramref name="path"/> contains a colon (":").</exception>
+ <exception cref="T:System.IO.PathTooLongException">The specified path, file name, or both exceed the system-defined maximum length.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.Combine(System.String,System.String)">
+ <summary>
+ Combines two paths.
+ </summary>
+ <param name="path1">first path</param>
+ <param name="path2">second path</param>
+ <returns>
+ A string containing the combined paths. If one of the specified paths
+ is a zero-length string, this method returns the other path. If
+ <paramref name="path2"/> contains an absolute path, this method
+ returns <paramref name="path2"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path1"/> or <paramref name="path2"/> contain one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.ChangeExtension(System.String,System.String)">
+ <summary>
+ Changes the extension of the path string.
+ </summary>
+ <param name="path">The path information to modify. The path cannot contain any of the characters
+ defined in <see cref="T:System.IO.Path.InvalidPathChars"/>InvalidPathChars.</param>
+ <param name="extension">The new extension (with a leading period). Specify a null reference
+ to remove an existing extension from <paramref name="path"/>.</param>
+ <returns>
+ <para>
+ A string containing the modified path information.
+ </para>
+ <para>
+ On Windows-based desktop platforms, if <paramref name="path"/> is
+ an empty <see cref="T:System.String"/>, the path information is returned
+ unmodified. If <paramref name="path"/> has no extension, the returned
+ path <see cref="T:System.String"/> contains <paramref name="extension"/>
+ appended to the end of <paramref name="path"/>.
+ </para>
+ </returns>
+ <remarks>
+ For more information see the <see cref="T:System.IO.Path"/> documentation.
+ </remarks>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetDirectoryName(System.String)">
+ <summary>
+ Returns the directory information for the specified path string.
+ </summary>
+ <param name="path">The path of a file or directory.</param>
+ <returns>
+ A <see cref="T:System.String"/> containing directory information for
+ <paramref name="path"/>, or an empty <see cref="T:System.String"/> if
+ <paramref name="path"/> denotes a root directory, or does not
+ contain directory information.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains invalid characters, is empty, or contains only white spaces.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetExtension(System.String)">
+ <summary>
+ Returns the extension for the specified path string.
+ </summary>
+ <param name="path">The path string from which to get the extension.</param>
+ <returns>
+ A <see cref="T:System.String"/> containing the extension of the specified
+ <paramref name="path"/> (including the "."), or an empty
+ <see cref="T:System.String"/> if <paramref name="path"/> does not have
+ extension information.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetFileName(System.String)">
+ <summary>
+ Returns the filename for the specified path string.
+ </summary>
+ <param name="path">The path string from which to obtain the file name and extension.</param>
+ <returns>
+ <para>
+ A <see cref="T:System.String"/> consisting of the characters after the last
+ directory character in path.
+ </para>
+ <para>
+ If the last character of <paramref name="path"/> is a directory or
+ volume separator character, an empty <see cref="T:System.String"/> is returned.
+ </para>
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetFileNameWithoutExtension(System.String)">
+ <summary>
+ Returns the filename without extension for the specified path string.
+ </summary>
+ <param name="path">The path of the file.</param>
+ <returns>
+ A <see cref="T:System.String"/> containing the <see cref="T:System.String"/> returned
+ by <see cref="M:NAnt.Core.Functions.PathFunctions.GetFileName(System.String)"/>, minus the last period (.) and all
+ characters following it.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetPathRoot(System.String)">
+ <summary>
+ Gets the root directory of the specified path.
+ </summary>
+ <param name="path">The path from which to obtain root directory information.</param>
+ <returns>
+ A <see cref="T:System.String"/> containing the root directory of
+ <paramref name="path"/>, such as "C:\", or an empty <see cref="T:System.String"/>
+ if <paramref name="path"/> does not contain root directory information.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains invalid characters, or is empty.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetTempFileName">
+ <summary>
+ Returns a uniquely named zero-byte temporary file on disk and returns the full path to that file.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> containing the name of the temporary file.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.GetTempPath">
+ <summary>
+ Gets the path to the temporary directory.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> containing the path information of a
+ temporary directory.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.HasExtension(System.String)">
+ <summary>
+ Determines whether a path string includes an extension.
+ </summary>
+ <param name="path">The path to search for an extension.</param>
+ <returns>
+ <see langword="true"/>. if the characters that follow the last
+ directory separator or volume separator in the <paramref name="path"/>
+ include a period (.) followed by one or more characters;
+ otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PathFunctions.IsPathRooted(System.String)">
+ <summary>
+ Determines whether a path string is absolute.
+ </summary>
+ <param name="path">The path to test.</param>
+ <returns>
+ <see langword="true"/> if path contains an absolute <paramref name="path"/>;
+ otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> contains one or more invalid characters.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.GetVariable(System.String,System.String)">
+ <summary>
+ Gets the value of a variable for the specified package.
+ </summary>
+ <param name="package">The package for which the variable should be retrieved.</param>
+ <param name="name">The name of the variable.</param>
+ <returns>
+ The value of variable <paramref name="name"/> for the specified
+ package.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="package"/> does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.GetLinkFlags(System.String)">
+ <summary>
+ Gets the link flags required to compile the package, including all
+ its dependencies.
+ </summary>
+ <param name="package">The package for which the link flags should be retrieved.</param>
+ <returns>
+ The link flags required to compile the package.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="package"/> does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.GetCompileFlags(System.String)">
+ <summary>
+ Gets the compile flags required to compile the package, including all
+ its dependencies.
+ </summary>
+ <param name="package">The package for which the compile flags should be retrieved.</param>
+ <returns>
+ The pre-processor and compile flags required to compile the package.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="package"/> does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.GetModVersion(System.String)">
+ <summary>
+ Determines the version of the given package.
+ </summary>
+ <param name="package">The package to get the version of.</param>
+ <returns>
+ The version of the given package.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="package"/> does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.IsAtLeastVersion(System.String,System.String)">
+ <summary>
+ Determines whether the given package is at least version
+ <paramref name="version"/>.
+ </summary>
+ <param name="package">The package to check.</param>
+ <param name="version">The version the package should at least have.</param>
+ <returns>
+ <see langword="true"/> if the given package is at least version
+ <paramref name="version"/>; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.IsExactVersion(System.String,System.String)">
+ <summary>
+ Determines whether the given package is exactly version
+ <paramref name="version"/>.
+ </summary>
+ <param name="package">The package to check.</param>
+ <param name="version">The version the package should have.</param>
+ <returns>
+ <see langword="true"/> if the given package is exactly version
+ <paramref name="version"/>; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.IsMaxVersion(System.String,System.String)">
+ <summary>
+ Determines whether the given package is at no newer than version
+ <paramref name="version"/>.
+ </summary>
+ <param name="package">The package to check.</param>
+ <param name="version">The version the package should maximum have.</param>
+ <returns>
+ <see langword="true"/> if the given package is at no newer than
+ version <paramref name="version"/>; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.IsBetweenVersion(System.String,System.String,System.String)">
+ <summary>
+ Determines whether the given package is between two versions.
+ </summary>
+ <param name="package">The package to check.</param>
+ <param name="minVersion">The version the package should at least have.</param>
+ <param name="maxVersion">The version the package should maximum have.</param>
+ <returns>
+ <see langword="true"/> if the given package is between <paramref name="minVersion"/>
+ and <paramref name="maxVersion"/>; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.Exists(System.String)">
+ <summary>
+ Determines whether the given package exists.
+ </summary>
+ <param name="package">The package to check.</param>
+ <returns>
+ <see langword="true"/> if the package exists; otherwise,
+ <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>pkg-config</c> could not be started.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.RunPkgConfigBool(NAnt.Core.Types.Argument[])">
+ <summary>
+ Runs pkg-config with the specified arguments and returns a
+ <see cref="T:System.Boolean"/> based on the exit code.
+ </summary>
+ <param name="args">The arguments to pass to pkg-config.</param>
+ <returns>
+ <see langword="true"/> if pkg-config exited with exit code 0;
+ otherwise, <see langword="false"/>
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.RunPkgConfigString(NAnt.Core.Types.Argument[])">
+ <summary>
+ Runs pkg-config with the specified arguments and returns the result
+ as a <see cref="T:System.String"/>.
+ </summary>
+ <param name="args">The arguments to pass to pkg-config.</param>
+ <returns>
+ The result of running pkg-config with the specified arguments.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.PkgConfigFunctions.GetTask(System.IO.Stream)">
+ <summary>
+ Factory method to return a new instance of ExecTask
+ </summary>
+ <param name="stream"></param>
+ <returns></returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.GetLength(System.String)">
+ <summary>
+ Returns the length of the specified string.
+ </summary>
+ <param name="s">input string</param>
+ <returns>
+ The string's length.
+ </returns>
+ <example>
+ <code>string::get-length('foo') ==> 3</code>
+ </example>
+ <example>
+ <code>string::get-length('') ==> 0</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.Substring(System.String,System.Int32,System.Int32)">
+ <summary>
+ Returns a substring of the specified string.
+ </summary>
+ <param name="str">input string</param>
+ <param name="startIndex">position of the start of the substring</param>
+ <param name="length">the length of the substring</param>
+ <returns>
+ <para>
+ If the <paramref name="length"/> is greater than zero, the
+ function returns a substring starting at character position
+ <paramref name="startIndex"/> with a length of <paramref name="length"/>
+ characters.
+ </para>
+ <para>
+ If the <paramref name="length"/> is equal to zero, the function
+ returns an empty string.
+ </para>
+ </returns>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="startIndex"/> or <paramref name="length"/> is less than zero.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="startIndex"/> is greater than the length of <paramref name="str"/>.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="startIndex"/> plus <paramref name="length"/> indicates a position not within <paramref name="str"/>.</exception>
+ <example>
+ <code>string::substring('testing string', 0, 4) ==&gt; 'test'</code>
+ </example>
+ <example>
+ <code>string::substring('testing string', 8, 3) ==&gt; 'str'</code>
+ </example>
+ <example>
+ <code>string::substring('testing string', 8, 0) ==&gt; ''</code>
+ </example>
+ <example>
+ <code>string::substring('testing string', -1, 5) ==&gt; ERROR</code>
+ </example>
+ <example>
+ <code>string::substring('testing string', 8, -1) ==&gt; ERROR</code>
+ </example>
+ <example>
+ <code>string::substring('testing string', 5, 17) ==&gt; ERROR</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.StartsWith(System.String,System.String)">
+ <summary>
+ Tests whether the specified string starts with the specified prefix
+ string.
+ </summary>
+ <param name="s1">test string</param>
+ <param name="s2">prefix string</param>
+ <returns>
+ <see langword="true" /> when <paramref name="s2" /> is a prefix for
+ the string <paramref name="s1" />. Meaning, the characters at the
+ beginning of <paramref name="s1" /> are identical to
+ <paramref name="s2" />; otherwise, <see langword="false" />.
+ </returns>
+ <remarks>
+ This function performs a case-sensitive word search using the
+ invariant culture.
+ </remarks>
+ <example>
+ <code>string::starts-with('testing string', 'test') ==> true</code>
+ </example>
+ <example>
+ <code>string::starts-with('testing string', 'testing') ==> true</code>
+ </example>
+ <example>
+ <code>string::starts-with('testing string', 'string') ==> false</code>
+ </example>
+ <example>
+ <code>string::starts-with('test', 'testing string') ==> false</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.EndsWith(System.String,System.String)">
+ <summary>
+ Tests whether the specified string ends with the specified suffix
+ string.
+ </summary>
+ <param name="s1">test string</param>
+ <param name="s2">suffix string</param>
+ <returns>
+ <see langword="true" /> when <paramref name="s2" /> is a suffix for
+ the string <paramref name="s1" />. Meaning, the characters at the
+ end of <paramref name="s1" /> are identical to
+ <paramref name="s2" />; otherwise, <see langword="false" />.
+ </returns>
+ <remarks>
+ This function performs a case-sensitive word search using the
+ invariant culture.
+ </remarks>
+ <example>
+ <code>string::ends-with('testing string', 'string') ==> true</code>
+ </example>
+ <example>
+ <code>string::ends-with('testing string', '') ==> true</code>
+ </example>
+ <example>
+ <code>string::ends-with('testing string', 'bring') ==> false</code>
+ </example>
+ <example>
+ <code>string::ends-with('string', 'testing string') ==> false</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.ToLower(System.String)">
+ <summary>
+ Returns the specified string converted to lowercase.
+ </summary>
+ <param name="s">input string</param>
+ <returns>
+ The string <paramref name="s" /> in lowercase.
+ </returns>
+ <remarks>
+ The casing rules of the invariant culture are used to convert the
+ <paramref name="s" /> to lowercase.
+ </remarks>
+ <example>
+ <code>string::to-lower('testing string') ==> 'testing string'</code>
+ </example>
+ <example>
+ <code>string::to-lower('Testing String') ==> 'testing string'</code>
+ </example>
+ <example>
+ <code>string::to-lower('Test 123') ==> 'test 123'</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.ToUpper(System.String)">
+ <summary>
+ Returns the specified string converted to uppercase.
+ </summary>
+ <param name="s">input string</param>
+ <returns>
+ The string <paramref name="s" /> in uppercase.
+ </returns>
+ <remarks>
+ The casing rules of the invariant culture are used to convert the
+ <paramref name="s" /> to uppercase.
+ </remarks>
+ <example>
+ <code>string::to-upper('testing string') ==> 'TESTING STRING'</code>
+ </example>
+ <example>
+ <code>string::to-upper('Testing String') ==> 'TESTING STRING'</code>
+ </example>
+ <example>
+ <code>string::to-upper('Test 123') ==> 'TEST 123'</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.Replace(System.String,System.String,System.String)">
+ <summary>
+ Returns a string corresponding to the replacement of a given string
+ with another in the specified string.
+ </summary>
+ <param name="str">input string</param>
+ <param name="oldValue">A <see cref="T:System.String"/> to be replaced.</param>
+ <param name="newValue">A <see cref="T:System.String"/> to replace all occurrences of <paramref name="oldValue"/>.</param>
+ <returns>
+ A <see cref="T:System.String"/> equivalent to <paramref name="str"/> but
+ with all instances of <paramref name="oldValue"/> replaced with
+ <paramref name="newValue"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="oldValue"/> is an empty string.</exception>
+ <remarks>
+ This function performs a word (case-sensitive and culture-sensitive)
+ search to find <paramref name="oldValue"/>.
+ </remarks>
+ <example>
+ <code>string::replace('testing string', 'test', 'winn') ==&gt; 'winning string'</code>
+ </example>
+ <example>
+ <code>string::replace('testing string', 'foo', 'winn') ==&gt; 'testing string'</code>
+ </example>
+ <example>
+ <code>string::replace('testing string', 'ing', '') ==&gt; 'test str'</code>
+ </example>
+ <example>
+ <code>string::replace('banana', 'ana', 'ana') ==&gt; 'banana'</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.Contains(System.String,System.String)">
+ <summary>
+ Tests whether the specified string contains the given search string.
+ </summary>
+ <param name="source">The string to search.</param>
+ <param name="value">The string to locate within <paramref name="source" />.</param>
+ <returns>
+ <see langword="true" /> if <paramref name="value" /> is found in
+ <paramref name="source" />; otherwise, <see langword="false" />.
+ </returns>
+ <remarks>
+ This function performs a case-sensitive word search using the
+ invariant culture.
+ </remarks>
+ <example>
+ <code>string::contains('testing string', 'test') ==> true</code>
+ </example>
+ <example>
+ <code>string::contains('testing string', '') ==> true</code>
+ </example>
+ <example>
+ <code>string::contains('testing string', 'Test') ==> false</code>
+ </example>
+ <example>
+ <code>string::contains('testing string', 'foo') ==> false</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.IndexOf(System.String,System.String)">
+ <summary>
+ Returns the position of the first occurrence in the specified string
+ of the given search string.
+ </summary>
+ <param name="source">The string to search.</param>
+ <param name="value">The string to locate within <paramref name="source" />.</param>
+ <returns>
+ <para>
+ The lowest-index position of <paramref name="value" /> in
+ <paramref name="source" /> if it is found, or -1 if <paramref name="source" />
+ does not contain <paramref name="value" />.
+ </para>
+ <para>
+ If <paramref name="value" /> is an empty string, the return value
+ will always be <c>0</c>.
+ </para>
+ </returns>
+ <remarks>
+ This function performs a case-sensitive word search using the
+ invariant culture.
+ </remarks>
+ <example>
+ <code>string::index-of('testing string', 'test') ==> 0</code>
+ </example>
+ <example>
+ <code>string::index-of('testing string', '') ==> 0</code>
+ </example>
+ <example>
+ <code>string::index-of('testing string', 'Test') ==> -1</code>
+ </example>
+ <example>
+ <code>string::index-of('testing string', 'ing') ==> 4</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.LastIndexOf(System.String,System.String)">
+ <summary>
+ Returns the position of the last occurrence in the specified string
+ of the given search string.
+ </summary>
+ <param name="source">The string to search.</param>
+ <param name="value">The string to locate within <paramref name="source" />.</param>
+ <returns>
+ <para>
+ The highest-index position of <paramref name="value" /> in
+ <paramref name="source" /> if it is found, or -1 if <paramref name="source" />
+ does not contain <paramref name="value" />.
+ </para>
+ <para>
+ If <paramref name="value" /> is an empty string, the return value
+ is the last index position in <paramref name="source" />.
+ </para>
+ </returns>
+ <remarks>
+ This function performs a case-sensitive word search using the
+ invariant culture.
+ </remarks>
+ <example>
+ <code>string::last-index-of('testing string', 'test') ==> 0</code>
+ </example>
+ <example>
+ <code>string::last-index-of('testing string', '') ==> 13</code>
+ </example>
+ <example>
+ <code>string::last-index-of('testing string', 'Test') ==> -1</code>
+ </example>
+ <example>
+ <code>string::last-index-of('testing string', 'ing') ==> 11</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.PadLeft(System.String,System.Int32,System.String)">
+ <summary>
+ Returns the given string left-padded to the given length.
+ </summary>
+ <param name="s">The <see cref="T:System.String"/> that needs to be left-padded.</param>
+ <param name="totalWidth">The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters.</param>
+ <param name="paddingChar">A Unicode padding character.</param>
+ <returns>
+ If the length of <paramref name="s"/> is at least
+ <paramref name="totalWidth"/>, then a new <see cref="T:System.String"/> identical
+ to <paramref name="s"/> is returned. Otherwise, <paramref name="s"/>
+ will be padded on the left with as many <paramref name="paddingChar"/>
+ characters as needed to create a length of <paramref name="totalWidth"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="totalWidth"/> is less than zero.</exception>
+ <remarks>
+ Note that only the first character of <paramref name="paddingChar"/>
+ will be used when padding the result.
+ </remarks>
+ <example>
+ <code>string::pad-left('test', 10, ' ') ==&gt; ' test'</code>
+ </example>
+ <example>
+ <code>string::pad-left('test', 10, 'test') ==&gt; 'tttttttest'</code>
+ </example>
+ <example>
+ <code>string::pad-left('test', 3, ' ') ==&gt; 'test'</code>
+ </example>
+ <example>
+ <code>string::pad-left('test', -4, ' ') ==&gt; ERROR</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.PadRight(System.String,System.Int32,System.String)">
+ <summary>
+ Returns the given string right-padded to the given length.
+ </summary>
+ <param name="s">The <see cref="T:System.String"/> that needs to be right-padded.</param>
+ <param name="totalWidth">The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters.</param>
+ <param name="paddingChar">A Unicode padding character.</param>
+ <returns>
+ If the length of <paramref name="s"/> is at least
+ <paramref name="totalWidth"/>, then a new <see cref="T:System.String"/> identical
+ to <paramref name="s"/> is returned. Otherwise, <paramref name="s"/>
+ will be padded on the right with as many <paramref name="paddingChar"/>
+ characters as needed to create a length of <paramref name="totalWidth"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="totalWidth"/> is less than zero.</exception>
+ <remarks>
+ Note that only the first character of <paramref name="paddingChar"/>
+ will be used when padding the result.
+ </remarks>
+ <example>
+ <code>string::pad-right('test', 10, ' ') ==&gt; 'test '</code>
+ </example>
+ <example>
+ <code>string::pad-right('test', 10, 'abcd') ==&gt; 'testaaaaaa'</code>
+ </example>
+ <example>
+ <code>string::pad-right('test', 3, ' ') ==&gt; 'test'</code>
+ </example>
+ <example>
+ <code>string::pad-right('test', -3, ' ') ==&gt; ERROR</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.Trim(System.String)">
+ <summary>
+ Returns the given string trimmed of whitespace.
+ </summary>
+ <param name="s">input string</param>
+ <returns>
+ The string <paramref name="s" /> with any leading or trailing
+ white space characters removed.
+ </returns>
+ <example>
+ <code>string::trim(' test ') ==> 'test'</code>
+ </example>
+ <example>
+ <code>string::trim('\t\tfoo \r\n') ==> 'foo'</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.TrimStart(System.String)">
+ <summary>
+ Returns the given string trimmed of leading whitespace.
+ </summary>
+ <param name="s">input string</param>
+ <returns>
+ The string <paramref name="s" /> with any leading
+ whites pace characters removed.
+ </returns>
+ <example>
+ <code>string::trim-start(' test ') ==> 'test '</code>
+ </example>
+ <example>
+ <code>string::trim-start('\t\tfoo \r\n') ==> 'foo \r\n'</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.StringFunctions.TrimEnd(System.String)">
+ <summary>
+ Returns the given string trimmed of trailing whitespace.
+ </summary>
+ <param name="s">input string</param>
+ <returns>
+ The string <paramref name="s" /> with any trailing
+ white space characters removed.
+ </returns>
+ <example>
+ <code>string::trim-end(' test ') ==> ' test'</code>
+ </example>
+ <example>
+ <code>string::trim-end('\t\tfoo \r\n') ==> '\t\tfoo'</code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetTotalDays(System.TimeSpan)">
+ <summary>
+ Returns the total number of days represented by the specified
+ <see cref="T:System.TimeSpan"/>, expressed in whole and fractional days.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The total number of days represented by the given <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetTotalHours(System.TimeSpan)">
+ <summary>
+ Returns the total number of hours represented by the specified
+ <see cref="T:System.TimeSpan"/>, expressed in whole and fractional hours.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The total number of hours represented by the given <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetTotalMinutes(System.TimeSpan)">
+ <summary>
+ Returns the total number of minutes represented by the specified
+ <see cref="T:System.TimeSpan"/>, expressed in whole and fractional minutes.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The total number of minutes represented by the given <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetTotalSeconds(System.TimeSpan)">
+ <summary>
+ Returns the total number of seconds represented by the specified
+ <see cref="T:System.TimeSpan"/>, expressed in whole and fractional seconds.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The total number of seconds represented by the given <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetTotalMilliseconds(System.TimeSpan)">
+ <summary>
+ Returns the total number of milliseconds represented by the specified
+ <see cref="T:System.TimeSpan"/>, expressed in whole and fractional milliseconds.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The total number of milliseconds represented by the given
+ <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetDays(System.TimeSpan)">
+ <summary>
+ Returns the number of whole days represented by the specified
+ <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The number of whole days represented by the given
+ <see cref="T:System.TimeSpan"/>.
+ </returns>
+ <example>
+ <para>
+ Remove all files that have not been modified in the last 7 days from directory "binaries".</para>
+ <code>
+ <![CDATA[
+ <foreach item="File" in="binaries" property="filename">
+ <if test="${timespan::get-days(datetime::now() - file::get-last-write-time(filename)) >= 7}">
+ <delete file="${filename}" />
+ </if>
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetHours(System.TimeSpan)">
+ <summary>
+ Returns the number of whole hours represented by the specified
+ <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The number of whole hours represented by the given
+ <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetMinutes(System.TimeSpan)">
+ <summary>
+ Returns the number of whole minutes represented by the specified
+ <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The number of whole minutes represented by the given
+ <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetSeconds(System.TimeSpan)">
+ <summary>
+ Returns the number of whole seconds represented by the specified
+ <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The number of whole seconds represented by the given
+ <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetMilliseconds(System.TimeSpan)">
+ <summary>
+ Returns the number of whole milliseconds represented by the specified
+ <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The number of whole milliseconds represented by the given
+ <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.GetTicks(System.TimeSpan)">
+ <summary>
+ Returns the number of ticks contained in the specified
+ <see cref="T:System.TimeSpan"/>.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/>.</param>
+ <returns>
+ The number of ticks contained in the given <see cref="T:System.TimeSpan"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.FromDays(System.Double)">
+ <summary>
+ Returns a <see cref="T:System.TimeSpan"/> that represents a specified number
+ of days, where the specification is accurate to the nearest millisecond.
+ </summary>
+ <param name="value">A number of days, accurate to the nearest millisecond.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that represents <paramref name="value"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.FromHours(System.Double)">
+ <summary>
+ Returns a <see cref="T:System.TimeSpan"/> that represents a specified number
+ of hours, where the specification is accurate to the nearest
+ millisecond.
+ </summary>
+ <param name="value">A number of hours, accurate to the nearest millisecond.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that represents <paramref name="value"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.FromMinutes(System.Double)">
+ <summary>
+ Returns a <see cref="T:System.TimeSpan"/> that represents a specified number
+ of minutes, where the specification is accurate to the nearest
+ millisecond.
+ </summary>
+ <param name="value">A number of minutes, accurate to the nearest millisecond.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that represents <paramref name="value"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.FromSeconds(System.Double)">
+ <summary>
+ Returns a <see cref="T:System.TimeSpan"/> that represents a specified number
+ of seconds, where the specification is accurate to the nearest
+ millisecond.
+ </summary>
+ <param name="value">A number of seconds, accurate to the nearest millisecond.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that represents <paramref name="value"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.FromMilliseconds(System.Double)">
+ <summary>
+ Returns a <see cref="T:System.TimeSpan"/> that represents a specified number
+ of milliseconds.
+ </summary>
+ <param name="value">A number of milliseconds.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that represents <paramref name="value"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanFunctions.FromTicks(System.Int64)">
+ <summary>
+ Returns a <see cref="T:System.TimeSpan"/> that represents a specified time,
+ where the specification is in units of ticks.
+ </summary>
+ <param name="value">A number of ticks that represent a time.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that represents <paramref name="value"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanConversionFunctions.Parse(System.String)">
+ <summary>
+ Constructs a <see cref="T:System.TimeSpan"/> from a time indicated by a
+ specified string.
+ </summary>
+ <param name="s">A string.</param>
+ <returns>
+ A <see cref="T:System.TimeSpan"/> that corresponds to <paramref name="s"/>.
+ </returns>
+ <exception cref="T:System.FormatException"><paramref name="s"/> has an invalid format.</exception>
+ <exception cref="T:System.OverflowException">At least one of the hours, minutes, or seconds components is outside its valid range.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.TimeSpanConversionFunctions.ToString(System.TimeSpan)">
+ <summary>
+ Converts the specified <see cref="T:System.TimeSpan"/> to its equivalent
+ string representation.
+ </summary>
+ <param name="value">A <see cref="T:System.TimeSpan"/> to convert.</param>
+ <returns>
+ The string representation of <paramref name="value"/>. The format
+ of the return value is of the form: [-][d.]hh:mm:ss[.ff].
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Functions.VersionFunctions.GetMajor(System.Version)">
+ <summary>
+ Gets the value of the major component of a given version.
+ </summary>
+ <param name="version">A version.</param>
+ <returns>
+ The major version number.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyNameFunctions.GetVersion(System.Reflection.AssemblyName)"/>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion"/>
+ <seealso cref="M:NAnt.Core.Functions.OperatingSystemFunctions.GetVersion(System.OperatingSystem)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.VersionFunctions.GetMinor(System.Version)">
+ <summary>
+ Gets the value of the minor component of a given version.
+ </summary>
+ <param name="version">A version.</param>
+ <returns>
+ The minor version number.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyNameFunctions.GetVersion(System.Reflection.AssemblyName)"/>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion"/>
+ <seealso cref="M:NAnt.Core.Functions.OperatingSystemFunctions.GetVersion(System.OperatingSystem)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.VersionFunctions.GetBuild(System.Version)">
+ <summary>
+ Gets the value of the build component of a given version.
+ </summary>
+ <param name="version">A version.</param>
+ <returns>
+ The build number, or -1 if the build number is undefined.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyNameFunctions.GetVersion(System.Reflection.AssemblyName)"/>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion"/>
+ <seealso cref="M:NAnt.Core.Functions.OperatingSystemFunctions.GetVersion(System.OperatingSystem)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.VersionFunctions.GetRevision(System.Version)">
+ <summary>
+ Gets the value of the revision component of a given version.
+ </summary>
+ <param name="version">A version.</param>
+ <returns>
+ The revision number, or -1 if the revision number is undefined.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyNameFunctions.GetVersion(System.Reflection.AssemblyName)"/>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion"/>
+ <seealso cref="M:NAnt.Core.Functions.OperatingSystemFunctions.GetVersion(System.OperatingSystem)"/>
+ </member>
+ <member name="M:NAnt.Core.Functions.VersionConversionFunctions.Parse(System.String)">
+ <summary>
+ Converts the specified string representation of a version to
+ its <see cref="T:System.Version"/> equivalent.
+ </summary>
+ <param name="version">A string containing the major, minor, build, and revision numbers, where each number is delimited with a period character ('.').</param>
+ <returns>
+ A <see cref="T:System.Version"/> instance representing the specified
+ <see cref="T:System.String"/>.
+ </returns>
+ <exception cref="T:System.ArgumentException"><paramref name="version"/> has fewer than two components or more than four components.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException">A major, minor, build, or revision component is less than zero.</exception>
+ <exception cref="T:System.FormatException">At least one component of <paramref name="version"/> does not parse to a decimal integer.</exception>
+ </member>
+ <member name="M:NAnt.Core.Functions.VersionConversionFunctions.ToString(System.Version)">
+ <summary>
+ Converts the specified <see cref="T:System.Version"/> to its equivalent
+ string representation.
+ </summary>
+ <param name="value">A <see cref="T:System.Version"/> to convert.</param>
+ <returns>
+ The string representation of the values of the major, minor, build,
+ and revision components of the specified <see cref="T:System.Version"/>.
+ </returns>
+ <seealso cref="M:NAnt.Core.Functions.AssemblyNameFunctions.GetVersion(System.Reflection.AssemblyName)"/>
+ <seealso cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion"/>
+ <seealso cref="M:NAnt.Core.Functions.OperatingSystemFunctions.GetVersion(System.OperatingSystem)"/>
+ </member>
+ <member name="T:NAnt.Core.Tasks.AttribTask">
+ <summary>
+ Changes the file attributes of a file or set of files and directories.
+ </summary>
+ <remarks>
+ <para>
+ <see cref="T:NAnt.Core.Tasks.AttribTask"/> does not have the concept of turning
+ attributes off. Instead you specify all the attributes that you want
+ turned on and the rest are turned off by default.
+ </para>
+ <para>
+ Refer to the <see cref="T:System.IO.FileAttributes"/> enumeration in the .NET SDK
+ for more information about file attributes.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Set the <c>read-only</c> file attribute for the specified file in
+ the project directory.
+ </para>
+ <code>
+ <![CDATA[
+ <attrib file="myfile.txt" readonly="true" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Set the <c>normal</c> file attribute for the specified file.
+ </para>
+ <code>
+ <![CDATA[
+ <attrib file="myfile.txt" normal="true" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Set the <c>normal</c> file attribute for all executable files in
+ the current project directory and sub-directories.
+ </para>
+ <code>
+ <![CDATA[
+ <attrib normal="true">
+ <fileset>
+ <include name="**/*.exe" />
+ <include name="bin" />
+ </fileset>
+ </attrib>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.Task">
+ <summary>
+ Provides the abstract base class for tasks.
+ </summary>
+ <remarks>
+ A task is a piece of code that can be executed.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Task.Execute">
+ <summary>
+ Executes the task unless it is skipped.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Task.Log(NAnt.Core.Level,System.String)">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to be logged.</param>
+ <remarks>
+ <para>
+ The actual logging is delegated to the project.
+ </para>
+ <para>
+ If the <see cref="P:NAnt.Core.Task.Verbose"/> attribute is set on the task and a
+ message is logged with level <see cref="F:NAnt.Core.Level.Verbose"/>, the
+ priority of the message will be increased to <see cref="F:NAnt.Core.Level.Info"/>
+ when the threshold of the build log is <see cref="F:NAnt.Core.Level.Info"/>.
+ </para>
+ <para>
+ This will allow individual tasks to run in verbose mode while
+ the build log itself is still configured with threshold
+ <see cref="F:NAnt.Core.Level.Info"/>.
+ </para>
+ <para>
+ The threshold of the project is not taken into account to determine
+ whether a message should be passed to the logging infrastructure,
+ as build listeners might be interested in receiving all messages.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Task.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Logs a formatted message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <remarks>
+ <para>
+ The actual logging is delegated to the project.
+ </para>
+ <para>
+ If the <see cref="P:NAnt.Core.Task.Verbose"/> attribute is set on the task and a
+ message is logged with level <see cref="F:NAnt.Core.Level.Verbose"/>, the
+ priority of the message will be increased to <see cref="F:NAnt.Core.Level.Info"/>.
+ when the threshold of the build log is <see cref="F:NAnt.Core.Level.Info"/>.
+ </para>
+ <para>
+ This will allow individual tasks to run in verbose mode while
+ the build log itself is still configured with threshold
+ <see cref="F:NAnt.Core.Level.Info"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Task.IsLogEnabledFor(NAnt.Core.Level)">
+ <summary>
+ Determines whether build output is enabled for the given
+ <see cref="T:NAnt.Core.Level"/>.
+ </summary>
+ <param name="messageLevel">The <see cref="T:NAnt.Core.Level"/> to check.</param>
+ <returns>
+ <see langword="true"/> if messages with the given <see cref="T:NAnt.Core.Level"/>
+ should be passed on to the logging infrastructure; otherwise,
+ <see langword="false"/>.
+ </returns>
+ <remarks>
+ The threshold of the project is not taken into account to determine
+ whether a message should be passed to the logging infrastructure,
+ as build listeners might be interested in receiving all messages.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Task.InitializeTaskConfiguration">
+ <summary>
+ Initializes the configuration of the task using configuration
+ settings retrieved from the NAnt configuration file.
+ </summary>
+ <remarks>
+ TO-DO : Remove this temporary hack when a permanent solution is
+ available for loading the default values from the configuration
+ file if a build element is constructed from code.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Task.Initialize">
+ <summary>Initializes the task.</summary>
+ </member>
+ <member name="M:NAnt.Core.Task.InitializeTask(System.Xml.XmlNode)">
+ <summary>Initializes the task.</summary>
+ </member>
+ <member name="M:NAnt.Core.Task.ExecuteTask">
+ <summary>Executes the task.</summary>
+ </member>
+ <member name="M:NAnt.Core.Task.GetAttributeConfigurationNode(NAnt.Core.FrameworkInfo,System.String)">
+ <summary>
+ Locates the XML node for the specified attribute in either the
+ configuration section of the extension assembly or the.project.
+ </summary>
+ <param name="attributeName">The name of attribute for which the XML configuration node should be located.</param>
+ <param name="framework">The framework to use to obtain framework specific information, or <see langword="null" /> if no framework specific information should be used.</param>
+ <returns>
+ The XML configuration node for the specified attribute, or
+ <see langword="null" /> if no corresponding XML node could be
+ located.
+ </returns>
+ <remarks>
+ If there's a valid current framework, the configuration section for
+ that framework will first be searched. If no corresponding
+ configuration node can be located in that section, the framework-neutral
+ section of the project configuration node will be searched.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Task.FailOnError">
+ <summary>
+ Determines if task failure stops the build, or is just reported.
+ The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Task.Verbose">
+ <summary>
+ Determines whether the task should report detailed build log messages.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Task.IfDefined">
+ <summary>
+ If <see langword="true" /> then the task will be executed; otherwise,
+ skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Task.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Task.IfDefined"/>. If <see langword="false"/>
+ then the task will be executed; otherwise, skipped. The default is
+ <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Task.Name">
+ <summary>
+ The name of the task.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Task.LogPrefix">
+ <summary>
+ The prefix used when sending messages to the log.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Task.Threshold">
+ <summary>
+ Gets or sets the log threshold for this <see cref="T:NAnt.Core.Task"/>. By
+ default the threshold of a task is <see cref="F:NAnt.Core.Level.Debug"/>,
+ causing no messages to be filtered in the task itself.
+ </summary>
+ <value>
+ The log threshold level for this <see cref="T:NAnt.Core.Task"/>.
+ </value>
+ <remarks>
+ When the threshold of a <see cref="T:NAnt.Core.Task"/> is higher than the
+ threshold of the <see cref="T:NAnt.Core.Project"/>, then all messages will
+ still be delivered to the build listeners.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Task.TaskBuilder">
+ <summary>
+ Returns the TaskBuilder used to construct an instance of this
+ <see cref="T:NAnt.Core.Task"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.File">
+ <summary>
+ The name of the file which will have its attributes set. This is
+ provided as an alternate to using the task's fileset.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.AttribFileSet">
+ <summary>
+ All the matching files and directories in this fileset will have
+ their attributes set.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.ArchiveAttrib">
+ <summary>
+ Set the archive attribute. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.HiddenAttrib">
+ <summary>
+ Set the hidden attribute. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.NormalAttrib">
+ <summary>
+ Set the normal file attributes. This attribute is only valid if used
+ alone. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.ReadOnlyAttrib">
+ <summary>
+ Set the read-only attribute. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AttribTask.SystemAttrib">
+ <summary>
+ Set the system attribute. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.AvailableTask">
+ <summary>
+ Checks if a resource is available at runtime.
+ </summary>
+ <remarks>
+ <para>
+ The specified property is set to <see langword="true"/> if the
+ requested resource is available at runtime, and <see langword="false"/>
+ if the resource is not available.
+ </para>
+ <note>
+ we advise you to use the following functions instead:
+ </note>
+ <list type="table">
+ <listheader>
+ <term>Function</term>
+ <description>Description</description>
+ </listheader>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.FileFunctions.Exists(System.String)"/></term>
+ <description>Determines whether the specified file exists.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.DirectoryFunctions.Exists(System.String)"/></term>
+ <description>Determines whether the given path refers to an existing directory on disk.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.FrameworkFunctions.Exists(System.String)"/></term>
+ <description>Checks whether the specified framework exists..</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.FrameworkFunctions.SdkExists(System.String)"/></term>
+ <description>Checks whether the SDK for the specified framework is installed.</description>
+ </item>
+ </list>
+ </remarks>
+ <example>
+ <para>
+ Sets the <c>myfile.present</c> property to <see langword="true"/> if the
+ file is available on the filesystem and <see langword="false"/> if the
+ file is not available.
+ </para>
+ <code>
+ <![CDATA[
+ <available type="File" resource="myfile.txt" property="myfile.present" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Sets the <c>build.dir.present</c> property to <see langword="true"/>
+ if the directory is available on the filesystem and <see langword="false"/>
+ if the directory is not available.
+ </para>
+ <code>
+ <![CDATA[
+ <available type="Directory" resource="build" property="build.dir.present" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Sets the <c>mono-0.21.framework.present</c> property to <see langword="true"/>
+ if the Mono 0.21 framework is available on the current system and
+ <see langword="false"/> if the framework is not available.
+ </para>
+ <code>
+ <![CDATA[
+ <available type="Framework" resource="mono-0.21" property="mono-0.21.framework.present" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Sets the <c>net-1.1.frameworksdk.present</c> property to <see langword="true"/>
+ if the .NET 1.1 Framework SDK is available on the current system and
+ <see langword="false"/> if the SDK is not available.
+ </para>
+ <code>
+ <![CDATA[
+ <available type="FrameworkSDK" resource="net-1.1" property="net-1.1.frameworksdk.present" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.AvailableTask.ExecuteTask">
+ <summary>
+ Executes the task.
+ </summary>
+ <remarks>
+ <para>
+ Sets the property identified by <see cref="P:NAnt.Core.Tasks.AvailableTask.PropertyName"/> to
+ <see langword="true"/> when the resource exists and to <see langword="false"/>
+ when the resource doesn't exist.
+ </para>
+ </remarks>
+ <exception cref="T:NAnt.Core.BuildException">The availability of the resource could not be evaluated.</exception>
+ </member>
+ <member name="M:NAnt.Core.Tasks.AvailableTask.Evaluate">
+ <summary>
+ Evaluates the availability of a resource.
+ </summary>
+ <returns>
+ <see langword="true"/> if the resource is available; otherwise,
+ <see langword="false"/>.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">The availability of the resource could not be evaluated.</exception>
+ </member>
+ <member name="M:NAnt.Core.Tasks.AvailableTask.CheckFile">
+ <summary>
+ Checks if the file specified in the <see cref="P:NAnt.Core.Tasks.AvailableTask.Resource"/> property is
+ available on the filesystem.
+ </summary>
+ <returns>
+ <see langword="true"/> when the file exists; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.AvailableTask.CheckDirectory">
+ <summary>
+ Checks if the directory specified in the <see cref="P:NAnt.Core.Tasks.AvailableTask.Resource"/>
+ property is available on the filesystem.
+ </summary>
+ <returns>
+ <see langword="true"/> when the directory exists; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.AvailableTask.CheckFramework">
+ <summary>
+ Checks if the framework specified in the <see cref="P:NAnt.Core.Tasks.AvailableTask.Resource"/>
+ property is available on the current system.
+ </summary>
+ <returns>
+ <see langword="true"/> when the framework is available; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.AvailableTask.CheckFrameworkSDK">
+ <summary>
+ Checks if the SDK for the framework specified in the <see cref="P:NAnt.Core.Tasks.AvailableTask.Resource"/>
+ property is available on the current system.
+ </summary>
+ <returns>
+ <see langword="true"/> when the SDK for the specified framework is
+ available; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AvailableTask.Resource">
+ <summary>
+ The resource which must be available.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AvailableTask.Type">
+ <summary>
+ The type of resource which must be present.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.AvailableTask.PropertyName">
+ <summary>
+ The property that must be set if the resource is available.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.AvailableTask.ResourceType">
+ <summary>
+ Defines the possible resource checks.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.AvailableTask.ResourceType.File">
+ <summary>
+ Determines whether a given file exists.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.AvailableTask.ResourceType.Directory">
+ <summary>
+ Determines whether a given directory exists.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.AvailableTask.ResourceType.Framework">
+ <summary>
+ Determines whether a given framework is available.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.AvailableTask.ResourceType.FrameworkSDK">
+ <summary>
+ Determines whether a given SDK is available.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.CallTask">
+ <summary>
+ Calls a NAnt target in the current project.
+ </summary>
+ <remarks>
+ <para>
+ When the <see cref="T:NAnt.Core.Tasks.CallTask"/> is used to execute a target, both that
+ target and all its dependent targets will be re-executed.
+ </para>
+ <para>
+ To avoid dependent targets from being executed more than once, two
+ options are available:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>
+ Add an "unless" attribute with value "${<see href="../functions/target.has-executed.html">target::has-executed</see>('<c>&lt;target name&gt;</c>')}"
+ to the dependent targets.
+ </description>
+ </item>
+ <item>
+ <description>
+ Set the <see cref="P:NAnt.Core.Tasks.CallTask.CascadeDependencies"/> attribute on the
+ <see cref="T:NAnt.Core.Tasks.CallTask"/> to <see langword="false "/> (<c>recommended</c>).
+ </description>
+ </item>
+ </list>
+ </remarks>
+ <example>
+ <para>
+ Call the target "build".
+ </para>
+ <code>
+ <![CDATA[
+ <call target="build" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ This shows how a project could 'compile' a debug and release build
+ using a common compile target.
+ </para>
+ <code>
+ <![CDATA[
+ <project default="build">
+ <property name="debug" value="false" />
+ <target name="init">
+ <echo message="initializing" />
+ </target>
+ <target name="compile" depends="init">
+ <echo message="compiling with debug = ${debug}" />
+ </target>
+ <target name="build">
+ <property name="debug" value="false" />
+ <call target="compile" />
+ <property name="debug" value="true" />
+ <call target="compile" />
+ </target>
+ </project>
+ ]]>
+ </code>
+ <para>
+ The <see cref="P:NAnt.Core.Tasks.CallTask.CascadeDependencies"/> parameter of the
+ <see cref="T:NAnt.Core.Tasks.CallTask"/> defaults to <see langword="true"/>,
+ causing the "init" target to be executed for both
+ the "debug" and "release" build.
+ </para>
+ <para>
+ This results in the following build log:
+ </para>
+ <code>
+ build:
+
+ init:
+
+ [echo] initializing
+
+ compile:
+
+ [echo] compiling with debug = false
+
+ init:
+
+ [echo] initializing
+
+ compile:
+
+ [echo] compiling with debug = true
+
+ BUILD SUCCEEDED
+ </code>
+ <para>
+ If the "init" should only be executed once, set the
+ <see cref="P:NAnt.Core.Tasks.CallTask.CascadeDependencies"/> attribute of the <see cref="T:NAnt.Core.Tasks.CallTask"/>
+ to <see langword="false"/>.
+ </para>
+ <para>
+ The build log would then look like this:
+ </para>
+ <code>
+ build:
+
+ init:
+
+ [echo] initializing
+
+ compile:
+
+ [echo] compiling with debug = false
+
+ compile:
+
+ [echo] compiling with debug = true
+
+ BUILD SUCCEEDED
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CallTask.ExecuteTask">
+ <summary>
+ Executes the specified target.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CallTask.Initialize">
+ <summary>
+ Makes sure the <see cref="T:NAnt.Core.Tasks.CallTask"/> is not calling its own
+ parent.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CallTask.TargetName">
+ <summary>
+ NAnt target to call.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CallTask.ForceExecute">
+ <summary>
+ Force an execute even if the target has already been executed. The
+ default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CallTask.CascadeDependencies">
+ <summary>
+ Execute the specified targets dependencies -- even if they have been
+ previously executed. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.ChooseTask">
+ <summary>
+ <para>
+ Executes an alternate set of task or type definition depending on
+ conditions that are individually set on each group.
+ </para>
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="T:NAnt.Core.Tasks.ChooseTask"/> selects one among a number of possible
+ alternatives. It consists of a sequence of <c>&lt;when&gt;</c> elements
+ followed by an optional <c>&lt;otherwise&gt;</c> element.
+ </para>
+ <para>
+ Each <c>&lt;when&gt;</c> element has a single attribute, test, which
+ specifies an expression. The content of the <c>&lt;when&gt;</c> and
+ <c>&lt;otherwise&gt;</c> elements is a set of nested tasks.
+ </para>
+ <para>
+ The content of the first, and only the first, <c>&lt;when&gt;</c>
+ element whose test is <see langword="true"/> is executed. If no
+ <c>&lt;when&gt;</c> element is <see langword="true"/>, the
+ content of the <c>&lt;otherwise&gt;</c> element is executed.
+ If no <c>&lt;when&gt;</c> element is <see langword="true"/>, and no
+ <c>&lt;otherwise&gt;</c> element is present, nothing is done.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Execute alternate set of tasks depending on the configuration being
+ built.
+ </para>
+ <code>
+ <![CDATA[
+ <choose>
+ <when test="${build.config == 'Debug'}">
+ <!-- compile app in debug configuration -->
+ ...
+ </when>
+ <when test="${build.config == 'Release'}">
+ <!-- compile app in release configuration -->
+ ...
+ </when>
+ <otherwise>
+ <fail>Build configuration '${build.config}' is not supported!</fail>
+ </otherwise>
+ </choose>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Define a <c>sources</c> patternset holding an alternate set of patterns
+ depending on the configuration being built.
+ </para>
+ <code>
+ <![CDATA[
+ <choose>
+ <when test="${build.config == 'Debug'}">
+ <patternset id="sources">
+ <include name="**/*.cs" />
+ </patternset>
+ </when>
+ <when test="${build.config == 'Release'}">
+ <patternset id="sources">
+ <include name="**/*.cs" />
+ <exclude name="**/Instrumentation/*.cs" />
+ </patternset>
+ </when>
+ <otherwise>
+ <fail>Build configuration '${build.config}' is not supported!</fail>
+ </otherwise>
+ </choose>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ChooseTask.AddCondition(NAnt.Core.Tasks.ChooseTask.When)">
+ <summary>
+ One or more alternative sets of tasks to execute.
+ </summary>
+ <param name="when">The set of tasks to add.</param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ChooseTask.AddFallback(NAnt.Core.ElementContainer)">
+ <summary>
+ The set of tasks to execute if none of the <see cref="T:NAnt.Core.Tasks.ChooseTask.When"/>
+ elements are <see langword="true"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ChooseTask.IsFallbackDefined">
+ <summary>
+ Gets a value indicating whether a fallback element is defined.
+ </summary>
+ <value>
+ <see langword="true" /> if a fallback element is defined; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Tasks.ChooseTask.When">
+ <summary>
+ Groups a set of tasks to execute when a condition is met.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.ElementContainer">
+ <summary>
+ Executes embedded tasks/elements in the order in which they are defined.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ElementContainer.ExecuteChildTasks">
+ <summary>
+ Creates and executes the embedded (child XML nodes) elements.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.ElementContainer.CustomXmlProcessing">
+ <summary>
+ Gets a value indicating whether the element is performing additional
+ processing using the <see cref="T:System.Xml.XmlNode"/> that was use to
+ initialize the element.
+ </summary>
+ <value>
+ <see langword="true"/>, as a <see cref="T:NAnt.Core.ElementContainer"/> is
+ responsable for creating tasks from the nested build elements.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ChooseTask.When.Test">
+ <summary>
+ Used to test arbitrary boolean expression.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.CopyTask">
+ <summary>
+ Copies a file, a directory, or set of files to a new file or directory.
+ </summary>
+ <remarks>
+ <para>
+ Files are only copied if the source file is newer than the destination
+ file, or if the destination file does not exist. However, you can
+ explicitly overwrite files with the <see cref="P:NAnt.Core.Tasks.CopyTask.Overwrite"/> attribute.
+ </para>
+ <para>
+ Entire directory structures can be copied to a new location. For this
+ to happen, the following criteria must be met:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>
+ Everything in the fileset is included
+ </description>
+ </item>
+ <item>
+ <description>
+ The directory structure is not flattened
+ </description>
+ </item>
+ <item>
+ <description>
+ Empty directories are included
+ </description>
+ </item>
+ <item>
+ <description>
+ Destination directory does not exist
+ </description>
+ </item>
+ </list>
+ <para>
+ If any of these items are not met, then the files within the source
+ directory will be copied over instead of the entire directory structure.
+ </para>
+ <para>
+ When a <see cref="T:NAnt.Core.Types.FileSet"/> is used to select files or directories to
+ copy, the <see cref="P:NAnt.Core.Tasks.CopyTask.ToDirectory"/> attribute must be set. Files that are
+ located under the base directory of the <see cref="T:NAnt.Core.Types.FileSet"/> will
+ be copied to a directory under the destination directory matching the
+ path relative to the base directory of the <see cref="T:NAnt.Core.Types.FileSet"/>,
+ unless the <see cref="P:NAnt.Core.Tasks.CopyTask.Flatten"/> attribute is set to
+ <see langword="true"/>.
+ </para>
+ <para>
+ Files that are not located under the the base directory of the
+ <see cref="T:NAnt.Core.Types.FileSet"/> will be copied directly under to the destination
+ directory, regardless of the value of the <see cref="P:NAnt.Core.Tasks.CopyTask.Flatten"/>
+ attribute.
+ </para>
+ <h4>Encoding</h4>
+ <para>
+ Unless an encoding is specified, the encoding associated with the
+ system's current ANSI code page is used.
+ </para>
+ <para>
+ An UTF-8, little-endian Unicode, and big-endian Unicode encoded text
+ file is automatically recognized, if the file starts with the
+ appropriate byte order marks.
+ </para>
+ <note>
+ If you employ filters in your copy operation, you should limit the copy
+ to text files. Binary files will be corrupted by the copy operation.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Copy a single file while changing its encoding from "latin1" to
+ "utf-8".
+ </para>
+ <code>
+ <![CDATA[
+ <copy
+ file="myfile.txt"
+ tofile="mycopy.txt"
+ inputencoding="latin1"
+ outputencoding="utf-8" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Copy a set of files to a new directory.</para>
+ <code>
+ <![CDATA[
+ <copy todir="${build.dir}">
+ <fileset basedir="bin">
+ <include name="*.dll" />
+ </fileset>
+ </copy>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Copy a set of files to a directory, replacing <c>@TITLE@</c> with
+ "Foo Bar" in all files.
+ </para>
+ <code>
+ <![CDATA[
+ <copy todir="../backup/dir">
+ <fileset basedir="src_dir">
+ <include name="**/*" />
+ </fileset>
+ <filterchain>
+ <replacetokens>
+ <token key="TITLE" value="Foo Bar" />
+ </replacetokens>
+ </filterchain>
+ </copy>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Copy an entire directory and its contents.
+ </para>
+ <code>
+ <![CDATA[
+ <copy todir="target/dir">
+ <fileset basedir="source/dir"/>
+ </copy>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.#ctor">
+ <summary>
+ Initialize new instance of the <see cref="T:NAnt.Core.Tasks.CopyTask"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.Initialize">
+ <summary>
+ Checks whether the task is initialized with valid attributes.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.ExecuteTask">
+ <summary>
+ Executes the Copy task.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">A file that has to be copied does not exist or could not be copied.</exception>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.DoFileOperations">
+ <summary>
+ Actually does the file copies.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.SourceFile">
+ <summary>
+ The file to copy.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.ToFile">
+ <summary>
+ The file to copy to.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.ToDirectory">
+ <summary>
+ The directory to copy to.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.Overwrite">
+ <summary>
+ Overwrite existing files even if the destination files are newer.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.Flatten">
+ <summary>
+ Ignore directory structure of source directory, copy all files into
+ a single directory, specified by the <see cref="P:NAnt.Core.Tasks.CopyTask.ToDirectory"/>
+ attribute. The default is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.IncludeEmptyDirs">
+ <summary>
+ Copy any empty directories included in the <see cref="T:NAnt.Core.Types.FileSet"/>.
+ The default is <see langword="true"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.CopyFileSet">
+ <summary>
+ Used to select the files to copy. To use a <see cref="T:NAnt.Core.Types.FileSet"/>,
+ the <see cref="P:NAnt.Core.Tasks.CopyTask.ToDirectory"/> attribute must be set.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.Filters">
+ <summary>
+ Chain of filters used to alter the file's content as it is copied.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.InputEncoding">
+ <summary>
+ The encoding to use when reading files. The default is the system's
+ current ANSI code page.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.OutputEncoding">
+ <summary>
+ The encoding to use when writing the files. The default is
+ the encoding of the input file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileCopyMap">
+ <summary>
+ The set of files to perform a file operation on.
+ </summary>
+ <remarks>
+ <para>
+ FileCopyMap should now be considered a readonly hashtable. Any changes to
+ this property will not be taken into account during the file operation
+ task. To interact with the file operation, use the
+ <see cref="P:NAnt.Core.Tasks.CopyTask.OperationMap"/> property.
+ </para>
+ <para>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the absolute path of
+ the destination file and the value is a <see cref="T:NAnt.Core.Tasks.CopyTask.FileDateInfo"/>
+ holding the path and last write time of the most recently updated
+ source file that is selected to be copied or moved to the
+ destination file.
+ </para>
+ <para>
+ On Windows, the <see cref="T:System.Collections.Hashtable"/> is case-insensitive.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.OperationMap">
+ <summary>
+ Gets the operation map containing all the files/directories to
+ perform file operations on.
+ </summary>
+ <remarks>
+ <para>
+ The type of class for this object inherits from KeyedCollection
+ and is structured so that the key of this collection contains the
+ full path of the target file/location while the value contains
+ the <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> object
+ with the operation details.
+ </para>
+ <para>
+ On Windows, the <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/>
+ is case-insensitive.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Tasks.CopyTask.FileDateInfo">
+ <summary>
+ Holds the absolute paths and last write time of a given file.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileDateInfo.#ctor(System.IO.FileSystemInfo)">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileDateInfo"/> class
+ for the specified <paramref name="file"/>.
+ </summary>
+ <param name="file">
+ A <see cref="T:System.IO.FileSystemInfo"/> object containing
+ the full path and last write time of the file the object represents.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileDateInfo.#ctor(System.String,System.DateTime)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Tasks.CopyTask.FileDateInfo"/>
+ class for the specified file and last write time.
+ </summary>
+ <param name="path">The absolute path of the file.</param>
+ <param name="lastWriteTime">The last write time of the file.</param>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileDateInfo.Path">
+ <summary>
+ Gets the absolute path of the current file.
+ </summary>
+ <value>
+ The absolute path of the current file.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileDateInfo.LastWriteTime">
+ <summary>
+ Gets the time when the current file was last written to.
+ </summary>
+ <value>
+ The time when the current file was last written to.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Tasks.CopyTask.FileOperation">
+ <summary>
+ Provides methods and properties to properly manage file operations for
+ NAnt file system based tasks (such as CopyTask and MoveTask).
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.#ctor(System.IO.FileSystemInfo,System.IO.FileSystemInfo)">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> class with the
+ source and target locations specified.
+ </summary>
+ <param name="source">
+ A <see cref="T:System.IO.FileSystemInfo"/> object representing the file/location
+ where the file operation will start.
+ </param>
+ <param name="target">
+ A <see cref="T:System.IO.FileSystemInfo"/> object representing the file/location
+ where the file operation will end.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.NormalizeTargetAttributes">
+ <summary>
+ Normalizes the attributes of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.SourceEqualsTarget">
+ <summary>
+ Checks to see whether or not the full path of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/>
+ matches the full path of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/>.
+ </summary>
+ <remarks>
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.Comparer"/> is
+ used to check path equality.
+ </remarks>
+ <returns>
+ <c>true</c> if both paths match; otherwise <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.SourceIsIdenticalToTarget">
+ <summary>
+ Checks to see whether or not the full path of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/>
+ is identical to the full path of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/>.
+ </summary>
+ <remarks>
+ The difference between this method and SourceEqualsTarget is
+ that the casing of the path is never ignored regardless of
+ operating system.
+ </remarks>
+ <returns>
+ <c>true</c> if both paths are identical; otherwise <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.UpdateSource(System.IO.FileSystemInfo)">
+ <summary>
+ Updates the source of a given instance based on the
+ <see cref="P:System.IO.FileSystemInfo.LastWriteTime"/>.
+ <remarks>
+ If the LastWriteTime property of the <paramref name="newSource"/>
+ is greater than the LastWriteTime property of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/>, then
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/> is
+ replaced with <paramref name="newSource"/>.
+ </remarks>
+ </summary>
+ <param name="newSource">
+ The new <see cref="T:System.IO.FileSystemInfo"/> to replace
+ the current <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/>
+ object.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.ToString">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents the current
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that represents the current
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.TargetIsOutdated(System.IO.FileSystemInfo,System.IO.FileSystemInfo)">
+ <summary>
+ Checks to see if a given <see cref="T:System.IO.FileSystemInfo"/>
+ target is considered outdated.
+ </summary>
+ <param name="source">
+ A <see cref="T:System.IO.FileSystemInfo"/> used for comparison purposes
+ against <paramref name="target"/>.
+ </param>
+ <param name="target">
+ The <see cref="T:System.IO.FileSystemInfo"/> to check.
+ </param>
+ <returns>
+ <c>true</c> if the target file is considered out of date; otherwise
+ <c>false</c>
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.TargetDirectoryDoesNotExist(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
+ <summary>
+ Checks to see if the target directory does not exist or that
+ it does match the source directory name but not string casing.
+ </summary>
+ <param name="source">
+ Source directory to check against <paramref name="target"/>.
+ </param>
+ <param name="target">
+ The target directory to validate.
+ </param>
+ <returns>
+ <c>true</c> if the target directory does not exist or matches the source
+ directory name but not casing; otherwise <c>false</c>
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperation.IsFileSystemType``1(System.IO.FileSystemInfo)">
+ <summary>
+ Checks to see whether <paramref name="item"/> is a file type or
+ a directory type.
+ </summary>
+ <typeparam name="TFileSystemInfo">
+ The FileSystemInfo type used to compare <paramref name="item"/> with.
+ </typeparam>
+ <param name="item">
+ The object to check.
+ </param>
+ <returns>
+ <c>true</c> if <paramref name="item"/> is the same type as
+ <typeparamref name="TFileSystemInfo"/>; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.Comparer">
+ <summary>
+ Gets or sets the string comparer to use when comparing
+ the source path to the target path.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.Source">
+ <summary>
+ Gets the full path of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo">
+ <summary>
+ Gets the details of the source path.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceType">
+ <summary>
+ Gets the type of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.SourceInfo"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.OperationType">
+ <summary>
+ Gets the type of the file operation an instance of
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> represents.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.Outdated">
+ <summary>
+ Gets a value indicating whether
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/> is
+ outdated.
+ </summary>
+ <value>
+ <c>true</c> if
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/> is
+ outdated (or simply a directory); otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.Target">
+ <summary>
+ Gets the full path of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo">
+ <summary>
+ Gets the details of the target path.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetType">
+ <summary>
+ Gets the type of
+ <see cref="P:NAnt.Core.Tasks.CopyTask.FileOperation.TargetInfo"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.CopyTask.FileOperationMap">
+ <summary>
+ A collection class used to track all of the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> objects for
+ a given file operation task (such as the CopyTask or MoveTask).
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.CopyTask.FileOperationMap._stringComparer">
+ <summary>
+ The StringComparer used when comparing file paths.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.#ctor">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/>
+ class that uses the default string comparer.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.#ctor(System.StringComparer)">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/>
+ class that uses the specified string comparer.
+ </summary>
+ <param name="comparer">
+ The string comparer to use when comparing keys in the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/>.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.ContainsKey(System.String)">
+ <summary>
+ Determines whether the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/> contains the
+ specified key.
+ </summary>
+ <param name="key">
+ The key to locate in the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/>.
+ </param>
+ <returns>
+ <c>true</c> if the <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/>
+ contains an element with the specified key; otherwise, <c>false</c>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.CountDirectoryOperations">
+ <summary>
+ Counts the number of directory operations in a collection.
+ </summary>
+ <returns>
+ The number of directory operations performed by this collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.CountFileOperations">
+ <summary>
+ Counts the number of file operations in a collection.
+ </summary>
+ <returns>
+ The number of file operations performed by this collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.ConvertToHashtable">
+ <summary>
+ Converts the current instance of
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/> to
+ the old style FileCopyMap hashtable.
+ </summary>
+ <returns>
+ The contents of
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/> in a
+ new hashtable.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.GetKeyForItem(NAnt.Core.Tasks.CopyTask.FileOperation)">
+ <summary>
+ Extracts the key from the specified
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> element.
+ </summary>
+ <param name="item">
+ The <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> from which to
+ extract the key.
+ </param>
+ <returns>
+ The key for the specified
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.InsertItem(System.Int32,NAnt.Core.Tasks.CopyTask.FileOperation)">
+ <summary>
+ Inserts an element into the
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperationMap"/> at the
+ specified index.
+ </summary>
+ <param name="index">
+ The zero-based index at which item should be inserted.
+ </param>
+ <param name="item">
+ The <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> to insert.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.CopyTask.FileOperationMap.SetItem(System.Int32,NAnt.Core.Tasks.CopyTask.FileOperation)">
+ <summary>
+ Replaces the item at the specified index with the specified item.
+ </summary>
+ <param name="index">
+ The zero-based index of the item to be replaced.
+ </param>
+ <param name="item">
+ The new item.
+ </param>
+ </member>
+ <member name="T:NAnt.Core.Tasks.CopyTask.OperationType">
+ <summary>
+ Used to identify the type of operation a given
+ <see cref="T:NAnt.Core.Tasks.CopyTask.FileOperation"/> represent.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.CopyTask.OperationType.FileToFile">
+ <summary>
+ Indicates that the operation is from file to file.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.CopyTask.OperationType.FileToDirectory">
+ <summary>
+ Indicates that the operation is from file to directory.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.CopyTask.OperationType.DirectoryToDirectory">
+ <summary>
+ Indicates that the operation is from directory to directory.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.DeleteTask">
+ <summary>
+ Deletes a file, fileset or directory.
+ </summary>
+ <remarks>
+ <para>
+ Deletes either a single file, all files in a specified directory and
+ its sub-directories, or a set of files specified by one or more filesets.
+ </para>
+ <para>
+ If the <see cref="P:NAnt.Core.Tasks.DeleteTask.File"/> or <see cref="P:NAnt.Core.Tasks.DeleteTask.Directory"/> attribute is
+ set then the fileset contents will be ignored. To delete the files
+ in the fileset ommit the <see cref="P:NAnt.Core.Tasks.DeleteTask.File"/> and <see cref="P:NAnt.Core.Tasks.DeleteTask.Directory"/>
+ attributes in the <c>&lt;delete&gt;</c> element.
+ </para>
+ <para>
+ If the specified file or directory does not exist, no error is
+ reported.
+ </para>
+ <note>
+ Read-only files cannot be deleted. Use the <see cref="T:NAnt.Core.Tasks.AttribTask"/>
+ first to remove the read-only attribute.
+ </note>
+ </remarks>
+ <example>
+ <para>Delete a single file.</para>
+ <code>
+ <![CDATA[
+ <delete file="myfile.txt" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Delete a directory and the contents within. If the directory does not
+ exist, no error is reported.
+ </para>
+ <code>
+ <![CDATA[
+ <delete dir="${build.dir}" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Delete a set of files.
+ </para>
+ <code>
+ <![CDATA[
+ <delete>
+ <fileset>
+ <include name="${basename}-??.exe" />
+ <include name="${basename}-??.pdb" />
+ </fileset>
+ </delete>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.DeleteTask.Initialize">
+ <summary>
+ Ensures the supplied attributes are valid.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.DeleteTask.File">
+ <summary>
+ The file to delete.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.DeleteTask.Directory">
+ <summary>
+ The directory to delete.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.DeleteTask.IncludeEmptyDirs">
+ <summary>
+ Remove any empty directories included in the <see cref="T:NAnt.Core.Types.FileSet"/>.
+ The default is <see langword="true"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.DeleteTask.DeleteFileSet">
+ <summary>
+ All the files in the file set will be deleted.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.DeleteTask.Verbose">
+ <summary>
+ Controls whether to show the name of each deleted file or directory.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.DescriptionTask">
+ <summary>
+ An empty task that allows a build file to contain a description.
+ </summary>
+ <example>
+ <para>Set a description.</para>
+ <code>
+ <![CDATA[
+ <description>This is a description.</description>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.Tasks.EchoTask">
+ <summary>
+ Writes a message to the build log or a specified file.
+ </summary>
+ <remarks>
+ <para>
+ The message can be specified using the <see cref="P:NAnt.Core.Tasks.EchoTask.Message"/> attribute
+ or as inline content. If neither is included - or the message contains
+ only whitespace - then an empty message will be emitted in the output.
+ </para>
+ <para>
+ Macros in the message will be expanded.
+ </para>
+ <para>
+ When writing to a file, the <see cref="P:NAnt.Core.Tasks.EchoTask.MessageLevel"/> attribute is
+ ignored.
+ </para>
+ <note>
+ Since NAnt 0.86, a newline will no longer be implictly added when
+ writing a message to a file.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Writes a message with level <see cref="F:NAnt.Core.Level.Debug"/> to the build log.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="Hello, World!" level="Debug" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Writes a two-line message to the build log using inline content.
+ </para>
+ <code>
+ <![CDATA[
+ <echo>First line
+ Second line</echo>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Writes a two-line message to the build log using the <see cref="P:NAnt.Core.Tasks.EchoTask.Message"/> attribute.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message='First line
+ Second line</echo>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Writes a message with expanded macro to the build log.
+ </para>
+ <code>
+ <![CDATA[
+ <echo message="Base build directory = ${nant.project.basedir}" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Functionally equivalent to the previous example.
+ </para>
+ <code>
+ <![CDATA[
+ <echo>Base build directory = ${nant.project.basedir}</echo>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Writes the previous message to a file in the project directory,
+ overwriting the file if it exists.
+ </para>
+ <code>
+ <![CDATA[
+ <echo file="buildmessage.txt">Base build directory = ${nant.project.basedir}</echo>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.EchoTask.ExecuteTask">
+ <summary>
+ Outputs the message to the build log or the specified file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.EchoTask.Encoding">
+ <summary>
+ The encoding to use when writing message to a file. The default is
+ UTF-8 encoding without a Byte Order Mark (BOM).
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.EchoTask.Message">
+ <summary>
+ The message to output.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.EchoTask.Contents">
+ <summary>
+ Gets or sets the inline content that should be output.
+ </summary>
+ <value>
+ The inline content that should be output.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.EchoTask.File">
+ <summary>
+ The file to write the message to.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.EchoTask.Append">
+ <summary>
+ Determines whether the <see cref="T:NAnt.Core.Tasks.EchoTask"/> should append to the
+ file, or overwrite it. By default, the file will be overwritten.
+ </summary>
+ <value>
+ <see langword="true"/> if output should be appended to the file;
+ otherwise, <see langword="false"/>. The default is
+ <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.EchoTask.MessageLevel">
+ <summary>
+ The logging level with which the message should be output. The default
+ is <see cref="F:NAnt.Core.Level.Info"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.ExecTask">
+ <summary>
+ Executes a system command.
+ </summary>
+ <remarks>
+ <para>
+ Use of nested <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Arguments"/> element(s)
+ is advised over the <see cref="P:NAnt.Core.Tasks.ExecTask.CommandLineArguments"/> parameter, as
+ it supports automatic quoting and can resolve relative to absolute
+ paths.
+ </para>
+ </remarks>
+ <example>
+ <para>Ping "nant.sourceforge.net".</para>
+ <code>
+ <![CDATA[
+ <exec program="ping">
+ <arg value="nant.sourceforge.net" />
+ </exec>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Execute a java application using <c>IKVM.NET</c> that requires the
+ Apache FOP jars, and a set of custom jars.
+ </para>
+ <code>
+ <![CDATA[
+ <path id="fop-classpath">
+ <pathelement file="${fop.dist.dir}/build/fop.jar" />
+ <pathelement file="${fop.dist.dir}/lib/xercesImpl-2.2.1.jar" />
+ <pathelement file="${fop.dist.dir}/lib/avalon-framework-cvs-20020806.jar" />
+ <pathelement file="${fop.dist.dir}/lib/batik.jar" />
+ </path>
+ <exec program="ikvm.exe" useruntimeengine="true">
+ <arg value="-cp" />
+ <arg>
+ <path>
+ <pathelement dir="conf" />
+ <path refid="fop-classpath" />
+ <pathelement file="lib/mylib.jar" />
+ <pathelement file="lib/otherlib.zip" />
+ </path>
+ </arg>
+ <arg value="org.me.MyProg" />
+ </exec>
+ ]]>
+ </code>
+ <para>
+ Assuming the base directory of the build file is "c:\ikvm-test" and
+ the value of the "fop.dist.dir" property is "c:\fop", then the value
+ of the <c>-cp</c> argument that is passed to<c>ikvm.exe</c> is
+ "c:\ikvm-test\conf;c:\fop\build\fop.jar;conf;c:\fop\lib\xercesImpl-2.2.1.jar;c:\fop\lib\avalon-framework-cvs-20020806.jar;c:\fop\lib\batik.jar;c:\ikvm-test\lib\mylib.jar;c:\ikvm-test\lib\otherlib.zip"
+ on a DOS-based system.
+ </para>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.Tasks.ExternalProgramBase">
+ <summary>
+ Provides the abstract base class for tasks that execute external applications.
+ </summary>
+ <remarks>
+ <para>
+ When a <see cref="T:NAnt.Core.Attributes.ProgramLocationAttribute"/> is applied to the
+ deriving class and <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.ExeName"/> does not return an
+ absolute path, then the program to execute will first be searched for
+ in the location specified by <see cref="P:NAnt.Core.Attributes.ProgramLocationAttribute.LocationType"/>.
+ </para>
+ <para>
+ If the program does not exist in that location, then the list of tool
+ paths of the current target framework will be scanned in the order in
+ which they are defined in the NAnt configuration file.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.Tasks.ExternalProgramBase.UnknownExitCode">
+ <summary>
+ Defines the exit code that will be returned by <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.ExitCode"/>
+ if the process could not be started, or did not exit (in time).
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.ExternalProgramBase._lockObject">
+ <summary>
+ Will be used to ensure thread-safe operations.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExternalProgramBase.ExecuteTask">
+ <summary>
+ Starts the external process and captures its output.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The external process did not finish within the configured timeout.</para>
+ <para>-or-</para>
+ <para>The exit code of the external process indicates a failure.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExternalProgramBase.PrepareProcess(System.Diagnostics.Process)">
+ <summary>
+ Updates the <see cref="T:System.Diagnostics.ProcessStartInfo"/> of the specified
+ <see cref="T:System.Diagnostics.Process"/>.
+ </summary>
+ <param name="process">The <see cref="T:System.Diagnostics.Process"/> of which the <see cref="T:System.Diagnostics.ProcessStartInfo"/> should be updated.</param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExternalProgramBase.StartProcess">
+ <summary>
+ Starts the process and handles errors.
+ </summary>
+ <returns>The <see cref="T:System.Diagnostics.Process"/> that was started.</returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExternalProgramBase.StreamReaderThread_Output">
+ <summary>
+ Reads from the stream until the external program is ended.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExternalProgramBase.StreamReaderThread_Error">
+ <summary>
+ Reads from the stream until the external program is ended.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExternalProgramBase.DetermineFilePath">
+ <summary>
+ Determines the path of the external program that should be executed.
+ </summary>
+ <returns>
+ A fully qualifies pathname including the program name.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">The task is not available or not configured for the current framework.</exception>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.ExeName">
+ <summary>
+ The name of the executable that should be used to launch the
+ external program.
+ </summary>
+ <value>
+ The name of the executable that should be used to launch the external
+ program, or <see langword="null" /> if no name is specified.
+ </value>
+ <remarks>
+ If available, the configured value in the NAnt configuration
+ file will be used if no name is specified.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>
+ The filename of the external program.
+ </value>
+ <remarks>
+ Override in derived classes to explicitly set the location of the
+ external tool.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.Output">
+ <summary>
+ Gets the file to which the standard output should be redirected.
+ </summary>
+ <value>
+ The file to which the standard output should be redirected, or
+ <see langword="null" /> if the standard output should not be
+ redirected.
+ </value>
+ <remarks>
+ The default implementation will never allow the standard output
+ to be redirected to a file. Deriving classes should override this
+ property to change this behaviour.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.OutputAppend">
+ <summary>
+ Gets a value indicating whether output will be appended to the
+ <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Output"/>.
+ </summary>
+ <value>
+ <see langword="true"/> if output should be appended to the <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Output"/>;
+ otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.BaseDirectory">
+ <summary>
+ Gets the working directory for the application.
+ </summary>
+ <value>
+ The working directory for the application.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.TimeOut">
+ <summary>
+ The maximum amount of time the application is allowed to execute,
+ expressed in milliseconds. Defaults to no time-out.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.Arguments">
+ <summary>
+ The command-line arguments for the external program.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.UseRuntimeEngine">
+ <summary>
+ Specifies whether the external program is a managed application
+ which should be executed using a runtime engine, if configured.
+ The default is <see langword="false"/>.
+ </summary>
+ <value>
+ <see langword="true"/> if the external program should be executed
+ using a runtime engine; otherwise, <see langword="false"/>.
+ </value>
+ <remarks>
+ <para>
+ The value of <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.UseRuntimeEngine"/> is only used from
+ <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Managed"/>, and then only if its value is set to
+ <see cref="F:NAnt.Core.Types.ManagedExecution.Default"/>. In which case
+ <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Managed"/> returns <see cref="F:NAnt.Core.Types.ManagedExecution.Auto"/>
+ if <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.UseRuntimeEngine"/> is <see langword="true"/>.
+ </para>
+ <para>
+ In all other cases, the value of <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.UseRuntimeEngine"/>
+ is ignored.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.Managed">
+ <summary>
+ Specifies whether the external program should be treated as a managed
+ application, possibly forcing it to be executed under the currently
+ targeted version of the CLR.
+ </summary>
+ <value>
+ A <see cref="T:NAnt.Core.Types.ManagedExecution"/> indicating how the program should
+ be treated.
+ </value>
+ <remarks>
+ <para>
+ If <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Managed"/> is set to <see cref="F:NAnt.Core.Types.ManagedExecution.Default"/>,
+ which is the default value, and <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.UseRuntimeEngine"/> is
+ <see langword="true"/> then <see cref="F:NAnt.Core.Types.ManagedExecution.Auto"/>
+ is returned.
+ </para>
+ <para>
+ When the changing <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Managed"/> to <see cref="F:NAnt.Core.Types.ManagedExecution.Default"/>,
+ then <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.UseRuntimeEngine"/> is set to <see langword="false"/>;
+ otherwise, it is changed to <see langword="true"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.OutputWriter">
+ <summary>
+ Gets or sets the <see cref="T:System.IO.TextWriter"/> to which standard output
+ messages of the external program will be written.
+ </summary>
+ <value>
+ The <see cref="T:System.IO.TextWriter"/> to which standard output messages of
+ the external program will be written.
+ </value>
+ <remarks>
+ By default, standard output messages wil be written to the build log
+ with level <see cref="F:NAnt.Core.Level.Info"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.ErrorWriter">
+ <summary>
+ Gets or sets the <see cref="T:System.IO.TextWriter"/> to which error output
+ of the external program will be written.
+ </summary>
+ <value>
+ The <see cref="T:System.IO.TextWriter"/> to which error output of the external
+ program will be written.
+ </value>
+ <remarks>
+ By default, error output wil be written to the build log with level
+ <see cref="F:NAnt.Core.Level.Warning"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.ExitCode">
+ <summary>
+ Gets the value that the process specified when it terminated.
+ </summary>
+ <value>
+ The code that the associated process specified when it terminated,
+ or <c>-1000</c> if the process could not be started or did not
+ exit (in time).
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.ProcessId">
+ <summary>
+ Gets the unique identifier for the spawned application.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.Spawn">
+ <summary>
+ Gets or sets a value indicating whether the application should be
+ spawned. If you spawn an application, its output will not be logged
+ by NAnt. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExternalProgramBase.CommandLine">
+ <summary>
+ Gets the command-line arguments, separated by spaces.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExecTask.Initialize">
+ <summary>
+ Performs additional checks after the task has been initialized.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException"><see cref="P:NAnt.Core.Tasks.ExecTask.FileName"/> does not hold a valid file name.</exception>
+ </member>
+ <member name="M:NAnt.Core.Tasks.ExecTask.ExecuteTask">
+ <summary>
+ Executes the external program.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.FileName">
+ <summary>
+ The program to execute without command arguments.
+ </summary>
+ <remarks>
+ The path will not be evaluated to a full path using the project
+ base directory.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.CommandLineArguments">
+ <summary>
+ The command-line arguments for the program. These will be
+ passed as is to the external program. When quoting is necessary,
+ these must be explictly set as part of the value. Consider using
+ nested <see cref="P:NAnt.Core.Tasks.ExternalProgramBase.Arguments"/> elements instead.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.EnvironmentSet">
+ <summary>
+ Environment variables to pass to the program.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.WorkingDirectory">
+ <summary>
+ The directory in which the command will be executed.
+ </summary>
+ <value>
+ The directory in which the command will be executed. The default
+ is the project's base directory.
+ </value>
+ <remarks>
+ <para>
+ The working directory will be evaluated relative to the project's
+ base directory if it is relative.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.ResultProperty">
+ <summary>
+ <para>
+ The name of a property in which the exit code of the program should
+ be stored. Only of interest if <see cref="P:NAnt.Core.Task.FailOnError"/> is
+ <see langword="false"/>.
+ </para>
+ <para>
+ If the exit code of the program is "-1000" then the program could
+ not be started, or did not exit (in time).
+ </para>
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.UseRuntimeEngine">
+ <summary>
+ Specifies whether the external program should be executed using a
+ runtime engine, if configured. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the external program should be executed
+ using a runtime engine; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.Managed">
+ <summary>
+ Specifies whether the external program is a managed application
+ which should be executed using a runtime engine, if configured.
+ The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the external program should be executed
+ using a runtime engine; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>
+ The filename of the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.BaseDirectory">
+ <summary>
+ The directory the program is in.
+ </summary>
+ <remarks>
+ <value>
+ The directory the program is in. The default is the project's base
+ directory.
+ </value>
+ <para>
+ The basedir will be evaluated relative to the project's base
+ directory if it is relative.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.Output">
+ <summary>
+ The file to which the standard output will be redirected.
+ </summary>
+ <remarks>
+ By default, the standard output is redirected to the console.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.OutputAppend">
+ <summary>
+ Gets or sets a value indicating whether output should be appended
+ to the output file. The default is <see langword="false"/>.
+ </summary>
+ <value>
+ <see langword="true"/> if output should be appended to the <see cref="P:NAnt.Core.Tasks.ExecTask.Output"/>;
+ otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.Spawn">
+ <summary>
+ Gets or sets a value indicating whether the application should be
+ spawned. If you spawn an application, its output will not be logged
+ by NAnt. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.ExecTask.ProcessIdProperty">
+ <summary>
+ The name of a property in which the unique identifier of the spawned
+ application should be stored. Only of interest if <see cref="P:NAnt.Core.Tasks.ExecTask.Spawn"/>
+ is <see langword="true"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.FailTask">
+ <summary>
+ Exits the current build by throwing a <see cref="T:NAnt.Core.BuildException"/>,
+ optionally printing additional information.
+ </summary>
+ <remarks>
+ <para>
+ The cause of the build failure can be specified using the <see cref="P:NAnt.Core.Tasks.FailTask.Message"/>
+ attribute or as inline content.
+ </para>
+ <para>
+ Macros in the message will be expanded.
+ </para>
+ </remarks>
+ <example>
+ <para>Exits the current build without giving further information.</para>
+ <code>
+ <![CDATA[
+ <fail />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Exits the current build and writes a message to the build log.</para>
+ <code>
+ <![CDATA[
+ <fail message="Something wrong here." />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Functionally equivalent to the previous example.</para>
+ <code>
+ <![CDATA[
+ <fail>Something wrong here.</fail>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.FailTask.Message">
+ <summary>
+ A message giving further information on why the build exited.
+ </summary>
+ <remarks>
+ Inline content and <see cref="P:NAnt.Core.Tasks.FailTask.Message"/> are mutually exclusive.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.FailTask.Contents">
+ <summary>
+ Gets or sets the inline content that should be output in the build
+ log, giving further information on why the build exited.
+ </summary>
+ <value>
+ The inline content that should be output in the build log.
+ </value>
+ <remarks>
+ Inline content and <see cref="P:NAnt.Core.Tasks.FailTask.Message"/> are mutually exclusive.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Tasks.GetTask">
+ <summary>
+ Gets a particular file from a URL source.
+ </summary>
+ <remarks>
+ <para>
+ Options include verbose reporting and timestamp based fetches.
+ </para>
+ <para>
+ Currently, only HTTP and UNC protocols are supported. FTP support may
+ be added when more pluggable protocols are added to the System.Net
+ assembly.
+ </para>
+ <para>
+ The <see cref="P:NAnt.Core.Tasks.GetTask.UseTimeStamp"/> option enables you to control downloads
+ so that the remote file is only fetched if newer than the local copy.
+ If there is no local copy, the download always takes place. When a file
+ is downloaded, the timestamp of the downloaded file is set to the remote
+ timestamp.
+ </para>
+ <note>
+ This timestamp facility only works on downloads using the HTTP protocol.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Gets the index page of the NAnt home page, and stores it in the file
+ <c>help/index.html</c> relative to the project base directory.
+ </para>
+ <code>
+ <![CDATA[
+ <get src="http://nant.sourceforge.org/" dest="help/index.html" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Gets the index page of a secured web site using the given credentials,
+ while connecting using the specified password-protected proxy server.
+ </para>
+ <code>
+ <![CDATA[
+ <get src="http://password.protected.site/index.html" dest="secure/index.html">
+ <credentials username="user" password="guess" domain="mydomain" />
+ <proxy host="proxy.company.com" port="8080">
+ <credentials username="proxyuser" password="dunno" />
+ </proxy>
+ </get>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.GetTask.Initialize">
+ <summary>
+ Initializes task and ensures the supplied attributes are valid.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.GetTask.ExecuteTask">
+ <summary>
+ This is where the work is done
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.GetTask.TouchFile(System.IO.FileInfo,System.DateTime)">
+ <summary>
+ Sets the timestamp of a given file to a specified time.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.Source">
+ <summary>
+ The URL from which to retrieve a file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.DestinationFile">
+ <summary>
+ The file where to store the retrieved file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.HttpProxy">
+ <summary>
+ If inside a firewall, proxy server/port information
+ Format: {proxy server name}:{port number}
+ Example: proxy.mycompany.com:8080
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.Proxy">
+ <summary>
+ The network proxy to use to access the Internet resource.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.Credentials">
+ <summary>
+ The network credentials used for authenticating the request with
+ the Internet resource.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.IgnoreErrors">
+ <summary>
+ Log errors but don't treat as fatal. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.UseTimeStamp">
+ <summary>
+ Conditionally download a file based on the timestamp of the local
+ copy. HTTP only. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.Timeout">
+ <summary>
+ The length of time, in milliseconds, until the request times out.
+ The default is <c>100000</c> milliseconds.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.GetTask.Certificates">
+ <summary>
+ The security certificates to associate with the request.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.IfTask">
+ <summary>
+ Checks the conditional attributes and executes the children if
+ <see langword="true"/>.
+ </summary>
+ <remarks>
+ <para>
+ If no conditions are checked, all child tasks are executed.
+ </para>
+ <para>
+ If more than one attribute is used, they are &amp;&amp;'d. The first
+ to fail stops the check.
+ </para>
+ <para>
+ The order of condition evaluation is, <see cref="P:NAnt.Core.Tasks.IfTask.TargetNameExists"/>,
+ <see cref="P:NAnt.Core.Tasks.IfTask.PropertyNameExists"/>, <see cref="P:NAnt.Core.Tasks.IfTask.PropertyNameTrue"/>,
+ <see cref="P:NAnt.Core.Tasks.IfTask.UpToDateFile"/>.
+ </para>
+ <note>
+ instead of using the deprecated attributes, we advise you to use the
+ following functions in combination with the <see cref="P:NAnt.Core.Tasks.IfTask.Test"/>
+ attribute:
+ </note>
+ <list type="table">
+ <listheader>
+ <term>Function</term>
+ <description>Description</description>
+ </listheader>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.PropertyFunctions.Exists(System.String)"/></term>
+ <description>Checks whether the specified property exists.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.TargetFunctions.Exists(System.String)"/></term>
+ <description>Checks whether the specified target exists.</description>
+ </item>
+ </list>
+ </remarks>
+ <example>
+ <para>Tests the value of a property using expressions.</para>
+ <code>
+ <![CDATA[
+ <if test="${build.configuration=='release'}">
+ <echo>Build release configuration</echo>
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Tests the the output of a function.</para>
+ <code>
+ <![CDATA[
+ <if test="${not file::exists(filename) or file::get-length(filename) = 0}">
+ <echo message="The version file ${filename} doesn't exist or is empty!" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para><c>(Deprecated)</c> Check that a target exists.</para>
+ <code>
+ <![CDATA[
+ <target name="myTarget" />
+ <if targetexists="myTarget">
+ <echo message="myTarget exists" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para><c>(Deprecated)</c> Check existence of a property.</para>
+ <code>
+ <![CDATA[
+ <if propertyexists="myProp">
+ <echo message="myProp Exists. Value='${myProp}'" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para><c>(Deprecated)</c> Check that a property value is true.</para>
+ <code>
+ <![CDATA[
+ <if propertytrue="myProp">
+ <echo message="myProp is true. Value='${myProp}'" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ <c>(Deprecated)</c> Check that a property exists and is <see langword="true"/>
+ (uses multiple conditions).
+ </para>
+ <code>
+ <![CDATA[
+ <if propertyexists="myProp" propertytrue="myProp">
+ <echo message="myProp is '${myProp}'" />
+ </if>
+ ]]>
+ </code>
+ <para>which is the same as</para>
+ <code>
+ <![CDATA[
+ <if propertyexists="myProp">
+ <if propertytrue="myProp">
+ <echo message="myProp is '${myProp}'" />
+ </if>
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ <c>(Deprecated)</c> Check file dates. If <c>myfile.dll</c> is uptodate,
+ then do stuff.
+ </para>
+ <code>
+ <![CDATA[
+ <if uptodatefile="myfile.dll" comparefile="myfile.cs">
+ <echo message="myfile.dll is newer/same-date as myfile.cs" />
+ </if>
+ ]]>
+ </code>
+ <para>or</para>
+ <code>
+ <![CDATA[
+ <if uptodatefile="myfile.dll">
+ <comparefiles>
+ <include name="*.cs" />
+ </comparefiles>
+ <echo message="myfile.dll is newer/same-date as myfile.cs" />
+ </if>
+ ]]>
+ </code>
+ <para>or</para>
+ <code>
+ <![CDATA[
+ <if>
+ <uptodatefiles>
+ <include name="myfile.dll" />
+ </uptodatefiles>
+ <comparefiles>
+ <include name="*.cs" />
+ </comparefiles>
+ <echo message="myfile.dll is newer/same-date as myfile.cs" />
+ </if>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.TaskContainer">
+ <summary>
+ Executes embedded tasks in the order in which they are defined.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskContainer.Initialize">
+ <summary>
+ Automatically exclude build elements that are defined on the task
+ from things that get executed, as they are evaluated normally during
+ XML task initialization.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskContainer.ExecuteChildTasks">
+ <summary>
+ Creates and executes the embedded (child XML nodes) elements.
+ </summary>
+ <remarks>
+ Skips any element defined by the host <see cref="T:NAnt.Core.Task"/> that has
+ a <see cref="T:NAnt.Core.Attributes.BuildElementAttribute"/> defined.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.TaskContainer.CustomXmlProcessing">
+ <summary>
+ Gets a value indicating whether the element is performing additional
+ processing using the <see cref="T:System.Xml.XmlNode"/> that was use to
+ initialize the element.
+ </summary>
+ <value>
+ <see langword="true"/>, as a <see cref="T:NAnt.Core.TaskContainer"/> is
+ responsable for creating tasks from the nested build elements.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.UpToDateFile">
+ <summary>
+ The file to compare if uptodate.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.CompareFile">
+ <summary>
+ The file to check against for the uptodate file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.CompareFiles">
+ <summary>
+ The <see cref="T:NAnt.Core.Types.FileSet"/> that contains the comparison files for
+ the <see cref="P:NAnt.Core.Tasks.IfTask.UpToDateFile"/>(s) check.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.UpToDateFiles">
+ <summary>
+ The <see cref="T:NAnt.Core.Types.FileSet"/> that contains the uptodate files for
+ the <see cref="P:NAnt.Core.Tasks.IfTask.CompareFile"/>(s) check.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.PropertyNameTrue">
+ <summary>
+ Used to test whether a property is true.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.PropertyNameExists">
+ <summary>
+ Used to test whether a property exists.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.TargetNameExists">
+ <summary>
+ Used to test whether a target exists.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IfTask.Test">
+ <summary>
+ Used to test arbitrary boolean expression.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.IfNotTask">
+ <summary>
+ The opposite of the <c>if</c> task.
+ </summary>
+ <example>
+ <para>Check that a property does not exist.</para>
+ <code>
+ <![CDATA[
+ <ifnot propertyexists="myProp">
+ <echo message="myProp does not exist."/>
+ </if>
+ ]]>
+ </code>
+ <para>Check that a property value is not true.</para>
+ <code>
+ <![CDATA[
+ <ifnot propertytrue="myProp">
+ <echo message="myProp is not true."/>
+ </if>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Check that a target does not exist.</para>
+ <code>
+ <![CDATA[
+ <ifnot targetexists="myTarget">
+ <echo message="myTarget does not exist."/>
+ </if>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.Core.Tasks.IncludeTask">
+ <summary>
+ Includes an external build file.
+ </summary>
+ <remarks>
+ <para>
+ This task is used to break your build file into smaller chunks. You
+ can load a partial build file and have it included into the build file.
+ </para>
+ <note>
+ Any global (project level) tasks in the included build file are executed
+ when this task is executed. Tasks in target elements are only executed
+ if that target is executed.
+ </note>
+ <note>
+ The project element attributes are ignored.
+ </note>
+ <note>
+ This task can only be in the global (project level) section of the
+ build file.
+ </note>
+ <note>
+ This task can only include files from the file system.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Include a task that fetches the project version from the
+ <c>GetProjectVersion.include</c> build file.
+ </para>
+ <code>
+ <![CDATA[
+ <include buildfile="GetProjectVersion.include" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.Core.Tasks.IncludeTask._includedFileNames">
+ <summary>
+ Used to check for recursived includes.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.IncludeTask.Initialize">
+ <summary>
+ Verifies parameters.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.IncludeTask.BuildFileName">
+ <summary>
+ Build file to include.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.LoadFileTask">
+ <summary>
+ Load a text file into a single property.
+ </summary>
+ <remarks>
+ <para>
+ Unless an encoding is specified, the encoding associated with the
+ system's current ANSI code page is used.
+ </para>
+ <para>
+ An UTF-8, little-endian Unicode, and big-endian Unicode encoded text
+ file is automatically recognized, if the file starts with the appropriate
+ byte order marks.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Load file <c>message.txt</c> into property "message".
+ </para>
+ <code>
+ <![CDATA[
+ <loadfile
+ file="message.txt"
+ property="message" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Load a file using the "latin-1" encoding.
+ </para>
+ <code>
+ <![CDATA[
+ <loadfile
+ file="loadfile.xml"
+ property="encoded-file"
+ encoding="iso-8859-1" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Load a file, replacing all <c>@NOW@</c> tokens with the current
+ date/time.
+ </para>
+ <code>
+ <![CDATA[
+ <loadfile file="token.txt" property="token-file">
+ <filterchain>
+ <replacetokens>
+ <token key="NOW" value="${datetime::now()}" />
+ </replacetokens>
+ </filterchain>
+ </loadfile>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadFileTask.File">
+ <summary>
+ The file to load.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadFileTask.Property">
+ <summary>
+ The name of the property to save the content to.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadFileTask.Encoding">
+ <summary>
+ The encoding to use when loading the file. The default is the encoding
+ associated with the system's current ANSI code page.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadFileTask.FilterChain">
+ <summary>
+ The filterchain definition to use.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.LoadTasksTask">
+ <summary>
+ Loads tasks form a given assembly or all assemblies in a given directory
+ or <see cref="T:NAnt.Core.Types.FileSet"/>.
+ </summary>
+ <example>
+ <para>
+ Load tasks from a single assembly.
+ </para>
+ <code>
+ <![CDATA[
+ <loadtasks assembly="c:foo\NAnt.Contrib.Tasks.dll" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Scan a single directory for task assemblies.
+ </para>
+ <code>
+ <![CDATA[
+ <loadtasks path="c:\foo" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Use a <see cref="P:NAnt.Core.Tasks.LoadTasksTask.TaskFileSet"/> containing both a directory and an
+ assembly.
+ </para>
+ <code>
+ <![CDATA[
+ <loadtasks>
+ <fileset>
+ <include name="C:\cvs\NAntContrib\build" />
+ <include name="C:\cvs\NAntContrib\build\NAnt.Contrib.Tasks.dll" />
+ </fileset>
+ </loadtasks>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.LoadTasksTask.ExecuteTask">
+ <summary>
+ Executes the Load Tasks task.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">Specified assembly or path does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Tasks.LoadTasksTask.Initialize">
+ <summary>
+ Validates the attributes.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">Both <see cref="P:NAnt.Core.Tasks.LoadTasksTask.AssemblyPath"/> and <see cref="P:NAnt.Core.Tasks.LoadTasksTask.Path"/> are set.</exception>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadTasksTask.AssemblyPath">
+ <summary>
+ An assembly to load tasks from.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadTasksTask.Path">
+ <summary>
+ A directory to scan for task assemblies.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoadTasksTask.TaskFileSet">
+ <summary>
+ Used to select which directories or individual assemblies to scan.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.LoopTask">
+ <summary>
+ Loops over a set of items.
+ </summary>
+ <remarks>
+ <para>
+ Can loop over files in directory, lines in a file, etc.
+ </para>
+ <para>
+ The property value is stored before the loop is done, and restored
+ when the loop is finished.
+ </para>
+ <para>
+ The property is returned to its normal value once it is used. Read-only
+ parameters cannot be overridden in this loop.
+ </para>
+ </remarks>
+ <example>
+ <para>Loops over the files in <c>c:\</c>.</para>
+ <code>
+ <![CDATA[
+ <foreach item="File" in="c:\" property="filename">
+ <echo message="${filename}" />
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Loops over all files in the project directory.</para>
+ <code>
+ <![CDATA[
+ <foreach item="File" property="filename">
+ <in>
+ <items>
+ <include name="**" />
+ </items>
+ </in>
+ <do>
+ <echo message="${filename}" />
+ </do>
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Loops over the folders in <c>c:\</c>.</para>
+ <code>
+ <![CDATA[
+ <foreach item="Folder" in="c:\" property="foldername">
+ <echo message="${foldername}" />
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Loops over all folders in the project directory.</para>
+ <code>
+ <![CDATA[
+ <foreach item="Folder" property="foldername">
+ <in>
+ <items>
+ <include name="**" />
+ </items>
+ </in>
+ <do>
+ <echo message="${foldername}" />
+ </do>
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Loops over a list.</para>
+ <code>
+ <![CDATA[
+ <foreach item="String" in="1 2,3" delim=" ," property="count">
+ <echo message="${count}" />
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Loops over lines in the file <c>properties.csv</c>, where each line
+ is of the format name,value.
+ </para>
+ <code>
+ <![CDATA[
+ <foreach item="Line" in="properties.csv" delim="," property="x,y">
+ <echo message="Read pair ${x}=${y}" />
+ </foreach>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.Property">
+ <summary>
+ The NAnt property name(s) that should be used for the current
+ iterated item.
+ </summary>
+ <remarks>
+ If specifying multiple properties, separate them with a comma.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.ItemType">
+ <summary>
+ The type of iteration that should be done.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.TrimType">
+ <summary>
+ The type of whitespace trimming that should be done. The default
+ is <see cref="F:NAnt.Core.Tasks.LoopTask.LoopTrim.None"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.Source">
+ <summary>
+ The source of the iteration.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.Delimiter">
+ <summary>
+ The deliminator char.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.InElement">
+ <summary>
+ Stuff to operate in. Just like the <see cref="P:NAnt.Core.Tasks.LoopTask.Source"/>
+ attribute, but supports more complicated things like a <see cref="T:NAnt.Core.Types.FileSet"/>
+ and such.
+ <note>
+ Please remove the <see cref="P:NAnt.Core.Tasks.LoopTask.Source"/> attribute if you
+ are using this element.
+ </note>
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.LoopTask.StuffToDo">
+ <summary>
+ Tasks to execute for each matching item.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.LoopTask.LoopTrim.None">
+ <summary>
+ Do not remove any white space characters.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.LoopTask.LoopTrim.End">
+ <summary>
+ Remove all white space characters from the end of the current
+ item.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.LoopTask.LoopTrim.Start">
+ <summary>
+ Remove all white space characters from the beginning of the
+ current item.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.LoopTask.LoopTrim.Both">
+ <summary>
+ Remove all white space characters from the beginning and end of
+ the current item.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.MailTask">
+ <summary>
+ Sends an SMTP message.
+ </summary>
+ <remarks>
+ <para>
+ Text and text files to include in the message body may be specified as
+ well as binary attachments.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Sends an email from <c>nant@sourceforge.net</c> to three recipients
+ with a subject about the attachments. The body of the message will be
+ the combined contents of all <c>.txt</c> files in the base directory.
+ All zip files in the base directory will be included as attachments.
+ The message will be sent using the <c>smtpserver.anywhere.com</c> SMTP
+ server.
+ </para>
+ <code>
+ <![CDATA[
+ <mail
+ from="nant@sourceforge.net"
+ tolist="recipient1@sourceforge.net"
+ cclist="recipient2@sourceforge.net"
+ bcclist="recipient3@sourceforge.net"
+ subject="Msg 7: With attachments"
+ mailhost="smtpserver.anywhere.com">
+ <files>
+ <include name="*.txt" />
+ </files>
+ <attachments>
+ <include name="*.zip" />
+ </attachments>
+ </mail>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Sends an email from a gmail account to multiple recipients. This example
+ illustrates how to add a recipient's name to an email address.
+ </para>
+ <code>
+ <![CDATA[
+ <mail
+ from="+xxxx+@gmail.com"
+ tolist="(Rep A) recipient1@sourceforge.net;(Rep B) recipient2@sourceforge.net"
+ subject="Sample Email"
+ mailhost="smtp.gmail.com"
+ mailport="465"
+ ssl="true"
+ user="+xxxx+@gmail.com"
+ password="p@ssw0rd!"
+ message="Email from NAnt" />
+ ]]>
+ </code>
+ <para>
+ Email addresses in any of the lists (to, cc, bcc, from) can be in one of
+ the five listed formats below.
+ </para>
+ <list type="bullet">
+ <item>
+ <description>Full Name &lt;address@abcxyz.com&gt;</description>
+ </item>
+ <item>
+ <description>&lt;address@abcxyz.com&gt; Full Name</description>
+ </item>
+ <item>
+ <description>(Full Name) address@abcxyz.com</description>
+ </item>
+ <item>
+ <description>address@abcxyz.com (Full Name)</description>
+ </item>
+ <item>
+ <description>address@abcxyz.com</description>
+ </item>
+ </list>
+ <para>
+ Remember to use &amp;gt; and &amp;lt; XML entities for the angle brackets.
+ </para>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MailTask.Initialize">
+ <summary>
+ Initializes task and ensures the supplied attributes are valid.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MailTask.ExecuteTask">
+ <summary>
+ This is where the work is done.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MailTask.ReadFile(System.String)">
+ <summary>
+ Reads a text file and returns the content
+ in a string.
+ </summary>
+ <param name="filename">The file to read content of.</param>
+ <returns>
+ The content of the specified file.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MailTask.ParseAddresses(System.String)">
+ <summary>
+ Converts an email address or a series of email addresses from
+ a <see cref="T:System.String"/> object to a new
+ <see cref="T:System.Net.Mail.MailAddressCollection"/> object.
+ </summary>
+ <param name="addresses">
+ A list of email addresses separated by a semicolon.
+ </param>
+ <returns>
+ A new <see cref="T:System.Net.Mail.MailAddressCollection"/> object
+ containing the addresses from <paramref name="addresses"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MailTask.ConvertStringToMailAddress(System.String)">
+ <summary>
+ Converts a <see cref="T:System.String"/> object containing
+ email address information to a
+ <see cref="T:System.Net.Mail.MailAddress"/> object.
+ </summary>
+ <remarks>
+ <para>
+ Email address information passed to this method should be in
+ one of five formats.
+ </para>
+ <list type="bullet">
+ <item>
+ <description>Full Name &lt;address@abcxyz.com&gt;</description>
+ </item>
+ <item>
+ <description>&lt;address@abcxyz.com&gt; Full Name</description>
+ </item>
+ <item>
+ <description>(Full Name) address@abcxyz.com</description>
+ </item>
+ <item>
+ <description>address@abcxyz.com (Full Name)</description>
+ </item>
+ <item>
+ <description>address@abcxyz.com</description>
+ </item>
+ </list>
+ <para>
+ If the full name of the intended recipient (or sender) is provided,
+ that information is included in the resulting
+ <see cref="T:System.Net.Mail.MailAddress"/> object.
+ </para>
+ </remarks>
+ <param name="address">
+ The string that contains the address to parse.
+ </param>
+ <returns>
+ A new MailAddress object containing the information from
+ <paramref name="address"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MailTask.UnescapeXmlCodes(System.String)">
+ <summary>
+ Simple method that converts an XML escaped string back to its unescaped
+ format.
+ </summary>
+ <param name="value">
+ An html encoded string.
+ </param>
+ <returns>
+ The decoded format of the html encoded string.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.From">
+ <summary>
+ Email address of sender.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.ToList">
+ <summary>
+ Semicolon-separated list of recipient email addresses.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.ReplyTo">
+ <summary>
+ Reply to email address.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.CcList">
+ <summary>
+ Semicolon-separated list of CC: recipient email addresses.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.BccList">
+ <summary>
+ Semicolon-separated list of BCC: recipient email addresses.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Mailhost">
+ <summary>
+ Host name of mail server. The default is <c>localhost</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Port">
+ <summary>
+ The port number used to connect to the mail server.
+ The default is <c>25</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.EnableSsl">
+ <summary>
+ Indicates whether or not ssl should be used to
+ connect to the smtp host.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Message">
+ <summary>
+ Text to send in body of email message.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Subject">
+ <summary>
+ Text to send in subject line of email message.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.IsBodyHtml">
+ <summary>
+ Indicates whether or not the body of the email is in
+ html format. The default value is <c>false</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.UserName">
+ <summary>
+ The username to use when connecting to the smtp host.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Password">
+ <summary>
+ The password to use when connecting to the smtp host.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Format">
+ <summary>
+ Format of the message. The default is <see cref="F:NAnt.Core.Tasks.MailTask.MailFormat.Text"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Files">
+ <summary>
+ Files that are transmitted as part of the body of the email message.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MailTask.Attachments">
+ <summary>
+ Attachments that are transmitted with the message.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.MailTask.MailFormat">
+ <summary>
+ Temporary enum replacement of <see cref="T:System.Web.Mail.MailFormat"/>
+ to ease transition to newer property flags.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.MailTask.MailFormat.Text">
+ <summary>
+ Indicates the body of the email is formatted in plain text.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Tasks.MailTask.MailFormat.Html">
+ <summary>
+ Indicates the body of the email is formatted in html.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.MkDirTask">
+ <summary>
+ Creates a directory and any non-existent parent directory if necessary.
+ </summary>
+ <example>
+ <para>Create the directory <c>build</c>.</para>
+ <code>
+ <![CDATA[
+ <mkdir dir="build" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Create the directory tree <c>one/two/three</c>.</para>
+ <code>
+ <![CDATA[
+ <mkdir dir="one/two/three" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MkDirTask.ExecuteTask">
+ <summary>
+ Creates the directory specified by the <see cref="P:NAnt.Core.Tasks.MkDirTask.Dir"/> property.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">The directory could not be created.</exception>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MkDirTask.Dir">
+ <summary>
+ The directory to create.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.MoveTask">
+ <summary>
+ Moves a file, a directory, or set of files to a new file or directory.
+ </summary>
+ <remarks>
+ <para>
+ Files are only moved if the source file is newer than the destination
+ file, or if the destination file does not exist. However, you can
+ explicitly overwrite files with the <see cref="P:NAnt.Core.Tasks.CopyTask.Overwrite"/>
+ attribute.
+ </para>
+ <para>
+ Entire directory structures can be moved to a new location. For this
+ to happen, the following criteria must be met:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>
+ Everything in the fileset is included
+ </description>
+ </item>
+ <item>
+ <description>
+ The directory structure is not flattened
+ </description>
+ </item>
+ <item>
+ <description>
+ Empty directories are included
+ </description>
+ </item>
+ <item>
+ <description>
+ Destination directory does not exist
+ </description>
+ </item>
+ </list>
+ <para>
+ If any of these items are not met, then the files within the source
+ directory will be moved over instead of the entire directory structure.
+ </para>
+ <para>
+ A <see cref="T:NAnt.Core.Types.FileSet"/> can be used to select files or directories to move.
+ To use a <see cref="T:NAnt.Core.Types.FileSet"/>, the <see cref="P:NAnt.Core.Tasks.CopyTask.ToDirectory"/>
+ attribute must be set.
+ </para>
+ <h3>Encoding</h3>
+ <para>
+ Unless an encoding is specified, the encoding associated with the
+ system's current ANSI code page is used.
+ </para>
+ <para>
+ An UTF-8, little-endian Unicode, and big-endian Unicode encoded text
+ file is automatically recognized, if the file starts with the
+ appropriate byte order marks.
+ </para>
+ <note>
+ If you employ filters in your move operation, you should limit the
+ move to text files. Binary files will be corrupted by the move
+ operation.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Move a single file while changing its encoding from "latin1" to
+ "utf-8".
+ </para>
+ <code>
+ <![CDATA[
+ <move
+ file="myfile.txt"
+ tofile="mycopy.txt"
+ inputencoding="latin1"
+ outputencoding="utf-8" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Move a set of files.</para>
+ <code>
+ <![CDATA[
+ <move todir="${build.dir}">
+ <fileset basedir="bin">
+ <include name="*.dll" />
+ </fileset>
+ </move>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Move a set of files to a directory, replacing <c>@TITLE@</c> with
+ "Foo Bar" in all files.
+ </para>
+ <code>
+ <![CDATA[
+ <move todir="../backup/dir">
+ <fileset basedir="src_dir">
+ <include name="**/*" />
+ </fileset>
+ <filterchain>
+ <replacetokens>
+ <token key="TITLE" value="Foo Bar" />
+ </replacetokens>
+ </filterchain>
+ </move>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Move an entire directory and its contents.
+ </para>
+ <code>
+ <![CDATA[
+ <move todir="target/dir">
+ <fileset basedir="source/dir"/>
+ </move>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.MoveTask.DoFileOperations">
+ <summary>
+ Actually does the file moves.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MoveTask.SourceFile">
+ <summary>
+ The file to move.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MoveTask.ToFile">
+ <summary>
+ The file to move to.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MoveTask.ToDirectory">
+ <summary>
+ The directory to move to.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MoveTask.CopyFileSet">
+ <summary>
+ Used to select the files to move. To use a <see cref="T:NAnt.Core.Types.FileSet"/>,
+ the <see cref="P:NAnt.Core.Tasks.MoveTask.ToDirectory"/> attribute must be set.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MoveTask.Flatten">
+ <summary>
+ Ignore directory structure of source directory, move all files into
+ a single directory, specified by the <see cref="P:NAnt.Core.Tasks.MoveTask.ToDirectory"/>
+ attribute. The default is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.MoveTask.Filters">
+ <summary>
+ Chain of filters used to alter the file's content as it is moved.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.NAntSchemaTask">
+ <summary>
+ Creates an XSD File for all available tasks.
+ </summary>
+ <remarks>
+ <para>
+ This can be used in conjuntion with the command-line option to do XSD
+ Schema validation on the build file.
+ </para>
+ </remarks>
+ <example>
+ <para>Creates a <c>NAnt.xsd</c> file in the current project directory.</para>
+ <code>
+ <![CDATA[
+ <nantschema output="NAnt.xsd" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.NAntSchemaTask.WriteSchema(System.IO.Stream,System.Type[],System.Type[],System.String)">
+ <summary>
+ Creates a NAnt Schema for given types
+ </summary>
+ <param name="stream">The output stream to save the schema to. If <see langword="null" />, writing is ignored, no exception generated.</param>
+ <param name="tasks">The list of tasks to generate XML Schema for.</param>
+ <param name="dataTypes">The list of datatypes to generate XML Schema for.</param>
+ <param name="targetNS">The target namespace to output.</param>
+ <returns>The new NAnt Schema.</returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.NAntSchemaTask.CreateXsdAttribute(System.String,System.Boolean)">
+ <summary>
+ Creates a new <see cref="T:System.Xml.Schema.XmlSchemaAttribute"/> instance.
+ </summary>
+ <param name="name">The name of the attribute.</param>
+ <param name="required">Value indicating whether the attribute should be required.</param>
+ <returns>The new <see cref="T:System.Xml.Schema.XmlSchemaAttribute"/> instance.</returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.NAntSchemaTask.CreateXsdSequence(System.Decimal,System.Decimal)">
+ <summary>
+ Creates a new <see cref="T:System.Xml.Schema.XmlSchemaSequence"/> instance.
+ </summary>
+ <param name="min">The minimum value to allow for this choice</param>
+ <param name="max">The maximum value to allow, Decimal.MaxValue sets it to 'unbound'</param>
+ <returns>The new <see cref="T:System.Xml.Schema.XmlSchemaSequence"/> instance.</returns>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntSchemaTask.OutputFile">
+ <summary>
+ The name of the output file to which the XSD should be written.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntSchemaTask.TargetNamespace">
+ <summary>
+ The target namespace for the output. Defaults to "http://tempuri.org/nant-donotuse.xsd"
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntSchemaTask.ForType">
+ <summary>
+ The <see cref="T:System.Type"/> for which an XSD should be created. If not
+ specified, an XSD will be created for all available tasks.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.NAntSchemaTask.NAntSchemaGenerator.#ctor(System.Type[],System.Type[],System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.Tasks.NAntSchemaTask.NAntSchemaGenerator"/>
+ class.
+ </summary>
+ <param name="tasks">Tasks for which a schema should be generated.</param>
+ <param name="dataTypes">Data Types for which a schema should be generated.</param>
+ <param name="targetNS">The namespace to use.
+ <example> http://tempuri.org/nant.xsd </example>
+ </param>
+ </member>
+ <member name="T:NAnt.Core.Tasks.NAntTask">
+ <summary>
+ Runs NAnt on a supplied build file, or a set of build files.
+ </summary>
+ <remarks>
+ <para>
+ By default, all the properties of the current project will be available
+ in the new project. Alternatively, you can set <see cref="P:NAnt.Core.Tasks.NAntTask.InheritAll"/>
+ to <see langword="false"/> to not copy any properties to the new
+ project.
+ </para>
+ <para>
+ You can also set properties in the new project from the old project by
+ using nested property tags. These properties are always passed to the
+ new project regardless of the setting of <see cref="P:NAnt.Core.Tasks.NAntTask.InheritAll"/>.
+ This allows you to parameterize your subprojects.
+ </para>
+ <para>
+ References to data types can also be passed to the new project, but by
+ default they are not. If you set the <see cref="P:NAnt.Core.Tasks.NAntTask.InheritRefs"/> to
+ <see langword="true"/>, all references will be copied.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Build a project located in a different directory if the <c>debug</c>
+ property is not <see langword="true"/>.
+ </para>
+ <code>
+ <![CDATA[
+ <nant buildfile="${src.dir}/Extras/BuildServer/BuildServer.build" unless="${debug}" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Build a project while adding a set of properties to that project.
+ </para>
+ <code>
+ <![CDATA[
+ <nant buildfile="${src.dir}/Extras/BuildServer/BuildServer.build">
+ <properties>
+ <property name="build.dir" value="c:/buildserver" />
+ <property name="build.debug" value="false" />
+ <property name="lib.dir" value="c:/shared/lib" readonly="true" />
+ </properties>
+ </nant>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Build all projects named <c>default.build</c> located anywhere under
+ the project base directory.
+ </para>
+ <code>
+ <![CDATA[
+ <nant>
+ <buildfiles>
+ <include name="**/default.build" />
+ <!-- avoid recursive execution of current build file -->
+ <exclude name="${project::get-buildfile-path()}" />
+ </buildfiles>
+ </nant>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.NAntTask.Initialize">
+ <summary>
+ Validates the <see cref="T:NAnt.Core.Tasks.NAntTask"/> element.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntTask.BuildFile">
+ <summary>
+ The build file to build.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntTask.DefaultTarget">
+ <summary>
+ The target to execute. To specify more than one target seperate
+ targets with a space. Targets are executed in order if possible.
+ The default is to use target specified in the project's default
+ attribute.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntTask.BuildFiles">
+ <summary>
+ Used to specify a set of build files to process.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntTask.InheritAll">
+ <summary>
+ Specifies whether current property values should be inherited by
+ the executed project. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntTask.InheritRefs">
+ <summary>
+ Specifies whether all references will be copied to the new project.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.NAntTask.OverrideProperties">
+ <summary>
+ Specifies a collection of properties that should be created in the
+ executed project. Note, existing properties with identical names
+ that are not read-only will be overwritten.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.PropertyTask">
+ <summary>
+ Sets a property in the current project.
+ </summary>
+ <remarks>
+ <note>NAnt uses a number of predefined properties.</note>
+ </remarks>
+ <example>
+ <para>
+ Define a <c>debug</c> property with value <see langword="true" />.
+ </para>
+ <code>
+ <![CDATA[
+ <property name="debug" value="true" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Use the user-defined <c>debug</c> property.
+ </para>
+ <code>
+ <![CDATA[
+ <property name="trace" value="${debug}" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Define a read-only property. This is just like passing in the param
+ on the command line.
+ </para>
+ <code>
+ <![CDATA[
+ <property name="do_not_touch_ME" value="hammer" readonly="true" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Define a property, but do not overwrite the value if the property already exists (eg. it was specified on the command line).
+ </para>
+ <code>
+ <![CDATA[
+ <project name="property-example">
+ <property name="debug" value="true" overwrite="false" />
+ <echo message="debug: ${debug}" />
+ </project>
+ ]]>
+ </code>
+ <para>
+ Executing this build file with the command line option <c>-D:debug=false</c>,
+ would cause the value specified on the command line to remain unaltered.
+ </para>
+ <code>
+ <![CDATA[
+ [echo] debug: false
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.PropertyTask.PropertyName">
+ <summary>
+ The name of the NAnt property to set.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.PropertyTask.Value">
+ <summary>
+ The value to assign to the NAnt property.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.PropertyTask.ReadOnly">
+ <summary>
+ Specifies whether the property is read-only or not.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.PropertyTask.Dynamic">
+ <summary>
+ Specifies whether references to other properties should not be
+ expanded when the value of the property is set, but expanded when
+ the property is actually used. By default, properties will be
+ expanded when set.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.PropertyTask.Overwrite">
+ <summary>
+ Specifies whether the value of a property should be overwritten if
+ the property already exists (unless the property is read-only).
+ The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.RegexTask">
+ <summary>
+ Sets project properties based on the evaluatuion of a regular expression.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:NAnt.Core.Tasks.RegexTask.Pattern"/> attribute must contain one or more
+ <see href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpcongroupingconstructs.asp">
+ named grouping constructs</see>, which represents the names of the
+ properties to be set. These named grouping constructs can be enclosed
+ by angle brackets (?&lt;name&gt;) or single quotes (?'name').
+ </para>
+ <note>
+ In the build file, use the XML element <![CDATA[&lt;]]> to specify &lt;,
+ and <![CDATA[&gt;]]> to specify &gt;.
+ </note>
+ <note>
+ The named grouping construct must not contain any punctuation and it
+ cannot begin with a number.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Find the last word in the given string and stores it in the property
+ <c>lastword</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <regex pattern="(?'lastword'\w+)$" input="This is a test sentence" />
+ <echo message="${lastword}" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Split the full filename and extension of a filename.
+ </para>
+ <code>
+ <![CDATA[
+ <regex pattern="^(?'filename'.*)\.(?'extension'\w+)$" input="d:\Temp\SomeDir\SomeDir\bla.xml" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Split the path and the filename. (This checks for <c>/</c> or <c>\</c>
+ as the path separator).
+ </para>
+ <code>
+ <![CDATA[
+ <regex pattern="^(?'path'.*(\\|/)|(/|\\))(?'file'.*)$" input="d:\Temp\SomeDir\SomeDir\bla.xml" />
+ ]]>
+ </code>
+ <para>
+ Results in path=<c>d:\Temp\SomeDir\SomeDir\</c> and file=<c>bla.xml</c>.
+ </para>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.RegexTask.ExecuteTask">
+ <summary>
+ Executes the task.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.RegexTask.Pattern">
+ <summary>
+ Represents the regular expression to be evalued.
+ </summary>
+ <value>
+ The regular expression to be evalued.
+ </value>
+ <remarks>
+ The pattern must contain one or more named constructs, which may
+ not contain any punctuation and cannot begin with a number.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.RegexTask.Options">
+ <summary>
+ A comma separated list of options to pass to the regex engine. The
+ default is <see cref="F:System.Text.RegularExpressions.RegexOptions.None"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.RegexTask.Input">
+ <summary>
+ Represents the input for the regular expression.
+ </summary>
+ <value>
+ The input for the regular expression.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Tasks.SetEnvTask">
+ <summary>
+ Sets an environment variable or a whole collection of them. Use an empty
+ <see cref="P:NAnt.Core.Tasks.SetEnvTask.LiteralValue"/> attribute to clear a variable.
+ </summary>
+ <remarks>
+ <note>
+ Variables will be set for the current NAnt process and all child
+ processes that NAnt spawns (compilers, shell tools, etc). If the
+ intention is to only set a variable for a single child process, then
+ using the <see cref="T:NAnt.Core.Tasks.ExecTask"/> and its nested <see cref="P:NAnt.Core.Tasks.ExecTask.EnvironmentSet"/>
+ element might be a better option.
+ </note>
+ <note>
+ Expansion of inline environment variables is performed using the syntax
+ of the current platform. So on Windows platforms using the string %PATH%
+ in the <see cref="P:NAnt.Core.Tasks.SetEnvTask.LiteralValue"/> attribute will result in the value of
+ the PATH variable being expanded in place before the variable is set.
+ </note>
+ </remarks>
+ <example>
+ <para>Set the MONO_PATH environment variable on a *nix platform.</para>
+ <code>
+ <![CDATA[
+ <setenv name=="MONO_PATH" value="/home/jimbob/dev/foo:%MONO_PATH%"/>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Set a collection of environment variables. Note the nested variable used to set var3.</para>
+ <code>
+ <![CDATA[
+ <setenv>
+ <variable name="var1" value="value2" />
+ <variable name="var2" value="value2" />
+ <variable name="var3" value="value3:%var2%" />
+ </setenv>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Set environment variables using nested path elements.</para>
+ <code>
+ <![CDATA[
+ <path id="build.path">
+ <pathelement dir="c:/windows" />
+ <pathelement dir="c:/cygwin/usr/local/bin" />
+ </path>
+ <setenv>
+ <variable name="build_path" >
+ <path refid="build.path" />
+ </variable>
+ <variable name="path2">
+ <path>
+ <pathelement dir="c:/windows" />
+ <pathelement dir="c:/cygwin/usr/local/bin" />
+ </path>
+ </variable>
+ </setenv>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.SetEnvTask.Initialize">
+ <summary>
+ Checks whether the task is initialized with valid attributes.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.SetEnvTask.ExecuteTask">
+ <summary>
+ Set the environment variables
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.SetEnvTask.SetSingleEnvironmentVariable(System.String,System.String)">
+ <summary>
+ Do the actual work here.
+ </summary>
+ <param name="name">The name of the environment variable.</param>
+ <param name="value">The value of the environment variable.</param>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SetEnvTask.EnvName">
+ <summary>
+ The name of a single Environment variable to set
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SetEnvTask.LiteralValue">
+ <summary>
+ The literal value for the environment variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SetEnvTask.File">
+ <summary>
+ The value for a file-based environment variable. NAnt will convert
+ it to an absolute filename.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SetEnvTask.Directory">
+ <summary>
+ The value for a directory-based environment variable. NAnt will
+ convert it to an absolute path.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SetEnvTask.Path">
+ <summary>
+ The value for a PATH like environment variable. You can use
+ <c>:</c> or <c>;</c> as path separators and NAnt will convert it to
+ the platform's local conventions.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.SleepTask">
+ <summary>
+ A task for sleeping a specified period of time, useful when a build or deployment process
+ requires an interval between tasks.
+ </summary>
+ <example>
+ <para>Sleep 1 hour, 2 minutes, 3 seconds and 4 milliseconds.</para>
+ <code>
+ <![CDATA[
+ <sleep hours="1" minutes="2" seconds="3" milliseconds="4" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Sleep 123 milliseconds.</para>
+ <code>
+ <![CDATA[
+ <sleep milliseconds="123" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.SleepTask.Initialize">
+ <summary>
+ Verify parameters.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.SleepTask.GetSleepTime">
+ <summary>
+ Return time to sleep.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.SleepTask.DoSleep(System.Int32)">
+ <summary>
+ Sleeps for the specified number of milliseconds.
+ </summary>
+ <param name="millis">Number of milliseconds to sleep.</param>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SleepTask.Hours">
+ <summary>
+ Hours to add to the sleep time.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SleepTask.Minutes">
+ <summary>
+ Minutes to add to the sleep time.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SleepTask.Seconds">
+ <summary>
+ Seconds to add to the sleep time.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SleepTask.Milliseconds">
+ <summary>
+ Milliseconds to add to the sleep time.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.StyleTask">
+ <summary>
+ Processes a document via XSLT.
+ </summary>
+ <example>
+ <para>Create a report in HTML.</para>
+ <code>
+ <![CDATA[
+ <style style="report.xsl" in="data.xml" out="report.html" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Create a report in HTML, with a param.</para>
+ <code>
+ <![CDATA[
+ <style style="report.xsl" in="data.xml" out="report.html">
+ <parameters>
+ <parameter name="reportType" namespaceuri="" value="Plain" />
+ </parameters>
+ </style>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Create a report in HTML, with a expanded param.</para>
+ <code>
+ <![CDATA[
+ <style style="report.xsl" in="data.xml" out="report.html">
+ <parameters>
+ <parameter name="reportType" namespaceuri="" value="${report.type}" />
+ </parameters>
+ </style>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Create some code based on a directory of templates.</para>
+ <code>
+ <![CDATA[
+ <style style="CodeGenerator.xsl" extension="java">
+ <infiles>
+ <include name="*.xml" />
+ </infiles>
+ <parameters>
+ <parameter name="reportType" namespaceuri="" value="Plain" if="${report.plain}" />
+ </parameters>
+ <style>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Create a report in HTML, with an extension object.</para>
+ <code>
+ <![CDATA[
+ <style style="report.xsl" in="data.xml" out="report.html">
+ <extensionobjects>
+ <extensionobject namespaceuri="urn:Formatter" typename="XsltExtensionObjects.Formatter" assembly="XsltExtensionObjects.dll" />
+ </extensionobjects>
+ </style>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.DestDir">
+ <summary>
+ Directory in which to store the results. The default is the project
+ base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.Extension">
+ <summary>
+ Desired file extension to be used for the targets. The default is
+ <c>html</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.XsltFile">
+ <summary>
+ URI or path that points to the stylesheet to use. If given as path, it can
+ be relative to the project's basedir or absolute.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.SrcFile">
+ <summary>
+ Specifies a single XML document to be styled. Should be used with
+ the <see cref="P:NAnt.Core.Tasks.StyleTask.OutputFile"/> attribute.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.OutputFile">
+ <summary>
+ Specifies the output name for the styled result from the <see cref="P:NAnt.Core.Tasks.StyleTask.SrcFile"/>
+ attribute.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.InFiles">
+ <summary>
+ Specifies a group of input files to which to apply the stylesheet.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.Parameters">
+ <summary>
+ XSLT parameters to be passed to the XSLT transformation.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.ExtensionObjects">
+ <summary>
+ XSLT extension objects to be passed to the XSLT transformation.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.StyleTask.Proxy">
+ <summary>
+ The network proxy to use to access the Internet resource.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.SysInfoTask">
+ <summary>
+ Sets properties with system information.
+ </summary>
+ <remarks>
+ <para>Sets a number of properties with information about the system environment. The intent of this task is for nightly build logs to have a record of system information so that the build was performed on.</para>
+ <list type="table">
+ <listheader>
+ <term>Property</term>
+ <description>Value</description>
+ </listheader>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.clr.version</term>
+ <description>Common Language Runtime version number.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.env.*</term>
+ <description>Environment variables (e.g., &lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.env.PATH).</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.platform</term>
+ <description>Operating system platform ID.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.version</term>
+ <description>Operating system version.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os</term>
+ <description>Operating system version string.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.applicationdata</term>
+ <description>The directory that serves as a common repository for application-specific data for the current roaming user.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.commonapplicationdata</term>
+ <description>The directory that serves as a common repository for application-specific data that is used by all users.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.commonprogramfiles</term>
+ <description>The directory for components that are shared across applications.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.desktopdirectory</term>
+ <description>The directory used to physically store file objects on the desktop. Do not confuse this directory with the desktop folder itself, which is a virtual folder.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.programfiles</term>
+ <description>The Program Files directory.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.system</term>
+ <description>The System directory.</description>
+ </item>
+ <item>
+ <term>&lt;<see cref="P:NAnt.Core.Tasks.SysInfoTask.Prefix"/>&gt;.os.folder.temp</term>
+ <description>The temporary directory.</description>
+ </item>
+ </list>
+ <para>
+ When the name of an environment variable is not a valid property name,
+ the task will fail. In that case, set <see cref="P:NAnt.Core.Task.FailOnError"/> to
+ <see langword="true"/> to allow that environment variable to be
+ skipped.
+ </para>
+ <note>
+ we advise you to use the following functions instead:
+ </note>
+ <list type="table">
+ <listheader>
+ <term>Function</term>
+ <description>Description</description>
+ </listheader>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetOperatingSystem"/></term>
+ <description>Gets a <see cref="T:System.OperatingSystem"/> object that identifies this operating system.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetFolderPath(System.Environment.SpecialFolder)"/></term>
+ <description>Gets the path to a system special folder.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVariable(System.String)"/></term>
+ <description>Returns the value of a environment variable.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.PathFunctions.GetTempPath"/></term>
+ <description>Gets the path to the temporary directory.</description>
+ </item>
+ <item>
+ <term><see cref="M:NAnt.Core.Functions.EnvironmentFunctions.GetVersion"/></term>
+ <description>Gets the Common Language Runtime version.</description>
+ </item>
+ </list>
+ </remarks>
+ <example>
+ <para>Register the properties with the default property prefix.</para>
+ <code>
+ <![CDATA[
+ <sysinfo />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Register the properties without a prefix.</para>
+ <code>
+ <![CDATA[
+ <sysinfo prefix="" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Register properties and display a summary.</para>
+ <code>
+ <![CDATA[
+ <sysinfo verbose="true" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.SysInfoTask.Prefix">
+ <summary>
+ The string to prefix the property names with. The default is "sys.".
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.TouchTask">
+ <summary>
+ Touches a file or set of files -- corresponds to the Unix touch command.
+ </summary>
+ <remarks>
+ <para>
+ If the file specified does not exist, the task will create it.
+ </para>
+ </remarks>
+ <example>
+ <para>Touch the <c>Main.cs</c> file. The current time is used.</para>
+ <code>
+ <![CDATA[
+ <touch file="Main.cs" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Touch all executable files in the project base directory and its
+ subdirectories.
+ </para>
+ <code>
+ <![CDATA[
+ <touch>
+ <fileset>
+ <include name="**/*.exe" />
+ <include name="**/*.dll" />
+ </fileset>
+ </touch>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.TouchTask.Initialize">
+ <summary>
+ Ensures the supplied attributes are valid.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TouchTask.File">
+ <summary>
+ The file to touch.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TouchTask.Millis">
+ <summary>
+ Specifies the new modification time of the file(s) in milliseconds
+ since midnight Jan 1 1970.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TouchTask.Datetime">
+ <summary>
+ Specifies the new modification time of the file in the format
+ MM/DD/YYYY HH:MM:SS.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TouchTask.TouchFileSet">
+ <summary>
+ Used to select files that should be touched.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.TryCatchTask">
+ <summary>
+ Executes a set of tasks, and optionally catches a build exception to
+ allow recovery or rollback steps to be taken, or to define some steps
+ to be taken regardless if the tasks succeed or fail, or both.
+ </summary>
+ <remarks>
+ <para>
+ The tasks defined in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.TryBlock"/>&gt;</c> block
+ will be executed in turn, as they normally would in a target.
+ </para>
+ <para>
+ If a <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c> block is defined, the
+ tasks in that block will be executed in turn only if one of the tasks
+ in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.TryBlock"/>&gt;</c> block fails. This
+ failure will then be suppressed by the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c>
+ block.
+ </para>
+ <para>
+ The message associated with the failure can also be caught in a
+ property for use within the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c>
+ block. The original contents of the property will be restored upon
+ exiting the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c> block.
+ </para>
+ <para>
+ If a <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.FinallyBlock"/>&gt;</c> block is defined, the
+ tasks in that block will be executed after the tasks in both the
+ <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.TryBlock"/>&gt;</c> and <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c>
+ blocks have been executed, regardless of whether any task fails in
+ either block.
+ </para>
+ </remarks>
+ <example>
+ <code>
+ <![CDATA[
+ <trycatch>
+ <try>
+ <echo message="In try" />
+ <fail message="Failing!" />
+ </try>
+ <catch>
+ <echo message="In catch" />
+ </catch>
+ <finally>
+ <echo message="Finally done" />
+ </finally>
+ </trycatch>
+ ]]>
+ </code>
+ <para>
+ The output of this example will be:
+ </para>
+ <code>
+ In try
+ In catch
+ Finally done
+ </code>
+ <para>
+ The failure in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.TryBlock"/>&gt;</c> block will
+ not cause the build to fail.
+ </para>
+ </example>
+ <example>
+ <code>
+ <![CDATA[
+ <trycatch>
+ <try>
+ <echo message="In try" />
+ <fail message="Just because..." />
+ </try>
+ <catch property="failure">
+ <echo message="Caught failure: ${failure}" />
+ <fail message="Bad catch" />
+ </catch>
+ <finally>
+ <echo message="Finally done" />
+ </finally>
+ </trycatch>
+ ]]>
+ </code>
+ <para>
+ The output of this example will be:
+ </para>
+ <code>
+ In try
+ Caught failure: Just because...
+ Finally done
+ Build failed: Bad catch
+ </code>
+ <para>
+ Like the above, the failure in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.TryBlock"/>&gt;</c>
+ block does not cause the build to fail. The failure in the
+ <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c> block does, however.
+ Note that the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.FinallyBlock"/>&gt;</c> block is
+ executed even though the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c>
+ block failed.
+ </para>
+ </example>
+ <example>
+ <code>
+ <![CDATA[
+ <trycatch>
+ <try>
+ <echo message="In try" />
+ <fail message="yet again" />
+ </try>
+ <catch property="failure">
+ <echo message="Caught failure ${failure}" />
+ <fail message="Bad catch" />
+ </catch>
+ <finally>
+ <echo message="Finally done ${failure}" />
+ </finally>
+ </trycatch>
+ ]]>
+ </code>
+ <para>
+ The output of this example will be:
+ </para>
+ <code>
+ In try
+ Caught failure yet again
+ Build failed: Property 'failure' has not been set.
+ </code>
+ <para>
+ The <see cref="T:NAnt.Core.Tasks.EchoTask"/> in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.FinallyBlock"/>&gt;</c>
+ block failed because the "failure" property was not defined
+ after exiting the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c> block.
+ Note that the failure in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.FinallyBlock"/>&gt;</c>
+ block has eclipsed the failure in the <c>&lt;<see cref="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock"/>&gt;</c>
+ block.
+ </para>
+ </example>
+ <example>
+ <code>
+ <![CDATA[
+ <trycatch>
+ <try>
+ <property name="temp.file" value="${path::get-temp-file-name()}" />
+ <do-stuff to="${temp.file}" />
+ <fail message="Oops..." />
+ </try>
+ <finally>
+ <echo message="Cleaning up..." />
+ <if test="${property::exists('temp.file')}">
+ <delete file="${temp.file}" />
+ </if>
+ </finally>
+ </trycatch>
+ ]]>
+ </code>
+ <para>
+ A more concrete example, that will always clean up the generated
+ temporary file after it has been created.
+ </para>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TryCatchTask.TryBlock">
+ <summary>
+ The tasks in this block will be executed as a normal part of
+ the build script.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TryCatchTask.CatchBlock">
+ <summary>
+ The tasks in this block will be executed if any task in the try
+ block fails.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TryCatchTask.FinallyBlock">
+ <summary>
+ The tasks in this block will always be executed, regardless of
+ what happens in the try and catch blocks.
+ </summary>
+ <remarks>
+ Note that any failure in any of the tasks in this block will
+ prevent any subsequent tasks from executing.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TryCatchTask.CatchElement.Property">
+ <summary>
+ Defines the name of the property to save the message describing
+ the failure that has been caught.
+ </summary>
+ <remarks>
+ <para>
+ The failure message is only available in the context of the catch
+ block. If you wish to preserve the message, you will need to save
+ it into another property.
+ </para>
+ <para>
+ Readonly properties cannot be overridden by this mechanism.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Tasks.TStampTask">
+ <summary>
+ Sets properties with the current date and time.
+ </summary>
+ <remarks>
+ <para>
+ By default the <see cref="T:NAnt.Core.Tasks.TStampTask"/> displays the current date
+ and time and sets the following properties:
+ </para>
+ <list type="bullet">
+ <item><description>tstamp.date to yyyyMMdd</description></item>
+ <item><description>tstamp.time to HHmm</description></item>
+ <item><description>tstamp.now using the default DateTime.ToString() method</description></item>
+ </list>
+ <para>
+ To set an additional property with a custom date/time use the
+ <see cref="P:NAnt.Core.Tasks.TStampTask.Property"/> and <see cref="P:NAnt.Core.Tasks.TStampTask.Pattern"/> attributes.
+ To set a number of additional properties with the exact same date and
+ time use the <see cref="P:NAnt.Core.Tasks.TStampTask.Formatters"/> nested element (see example).
+ </para>
+ <para>
+ The date and time string displayed by the <see cref="T:NAnt.Core.Tasks.TStampTask"/>
+ uses the computer's default long date and time string format. You
+ might consider setting these to the
+ <see href="http://www.cl.cam.ac.uk/~mgk25/iso-time.html">ISO 8601 standard
+ for date and time notation</see>.
+ </para>
+ </remarks>
+ <example>
+ <para>Set the <c>build.date</c> property.</para>
+ <code>
+ <![CDATA[
+ <tstamp property="build.date" pattern="yyyyMMdd" verbose="true" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Set a number of properties for Ant like compatibility.</para>
+ <code>
+ <![CDATA[
+ <tstamp verbose="true">
+ <formatter property="TODAY" pattern="dd MMM yyyy"/>
+ <formatter property="DSTAMP" pattern="yyyyMMdd" unless="${date.not.needed}" />
+ <formatter property="TSTAMP" pattern="HHmm" if="${need.hours}" />
+ </tstamp>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TStampTask.Property">
+ <summary>
+ The property to receive the date/time string in the given pattern.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.TStampTask.Pattern">
+ <summary>The date/time pattern to be used.</summary>
+ <remarks>
+ <para>The following table lists the standard format characters for each standard pattern. The format characters are case-sensitive; for example, 'g' and 'G' represent slightly different patterns.</para>
+ <list type="table">
+ <listheader>
+ <description>Format Character</description>
+ <description>Description Example Format Pattern (en-US)</description>
+ </listheader>
+ <item><description>d</description><description>MM/dd/yyyy</description></item>
+ <item><description>D</description><description>dddd, dd MMMM yyyy</description></item>
+ <item><description>f</description><description>dddd, dd MMMM yyyy HH:mm</description></item>
+ <item><description>F</description><description>dddd, dd MMMM yyyy HH:mm:ss</description></item>
+ <item><description>g</description><description>MM/dd/yyyy HH:mm</description></item>
+ <item><description>G</description><description>MM/dd/yyyy HH:mm:ss</description></item>
+ <item><description>m, M</description><description>MMMM dd</description></item>
+ <item><description>r, R</description><description>ddd, dd MMM yyyy HH':'mm':'ss 'GMT'</description></item>
+ <item><description>s</description><description>yyyy'-'MM'-'dd'T'HH':'mm':'ss</description></item>
+ <item><description>t</description><description>HH:mm</description></item>
+ <item><description>T</description><description>HH:mm:ss</description></item>
+ <item><description>u</description><description>yyyy'-'MM'-'dd HH':'mm':'ss'Z'</description></item>
+ <item><description>U</description><description>dddd, dd MMMM yyyy HH:mm:ss</description></item>
+ <item><description>y, Y</description><description>yyyy MMMM</description></item>
+ </list>
+ <para>The following table lists the patterns that can be combined to construct custom patterns. The patterns are case-sensitive; for example, "MM" is recognized, but "mm" is not. If the custom pattern contains white-space characters or characters enclosed in single quotation marks, the output string will also contain those characters. Characters not defined as part of a format pattern or as format characters are reproduced literally.</para>
+ <list type="table">
+ <listheader>
+ <description>Format</description>
+ <description>Pattern Description</description>
+ </listheader>
+ <item><description>d</description><description>The day of the month. Single-digit days will not have a leading zero.</description></item>
+ <item><description>dd</description><description>The day of the month. Single-digit days will have a leading zero.</description></item>
+ <item><description>ddd</description><description>The abbreviated name of the day of the week.</description></item>
+ <item><description>dddd</description><description>The full name of the day of the week.</description></item>
+ <item><description>M</description><description>The numeric month. Single-digit months will not have a leading zero.</description></item>
+ <item><description>MM</description><description>The numeric month. Single-digit months will have a leading zero.</description></item>
+ <item><description>MMM</description><description>The abbreviated name of the month.</description></item>
+ <item><description>MMMM</description><description>The full name of the month.</description></item>
+ <item><description>y</description><description>The year without the century. If the year without the century is less than 10, the year is displayed with no leading zero.</description></item>
+ <item><description>yy</description><description>The year without the century. If the year without the century is less than 10, the year is displayed with a leading zero.</description></item>
+ <item><description>yyyy</description><description>The year in four digits, including the century.</description></item>
+ <item><description>gg</description><description>The period or era. This pattern is ignored if the date to be formatted does not have an associated period or era string.</description></item>
+ <item><description>h</description><description>The hour in a 12-hour clock. Single-digit hours will not have a leading zero.</description></item>
+ <item><description>hh</description><description>The hour in a 12-hour clock. Single-digit hours will have a leading zero.</description></item>
+ <item><description>H</description><description>The hour in a 24-hour clock. Single-digit hours will not have a leading zero.</description></item>
+ <item><description>HH</description><description>The hour in a 24-hour clock. Single-digit hours will have a leading zero.</description></item>
+ <item><description>m</description><description>The minute. Single-digit minutes will not have a leading zero.</description></item>
+ <item><description>mm</description><description>The minute. Single-digit minutes will have a leading zero.</description></item>
+ <item><description>s</description><description>The second. Single-digit seconds will not have a leading zero.</description></item>
+ <item><description>ss</description><description>The second. Single-digit seconds will have a leading zero.</description></item>
+ <item><description>f</description><description>The fraction of a second in single-digit precision. The remaining digits are truncated.</description></item>
+ <item><description>ff</description><description>The fraction of a second in double-digit precision. The remaining digits are truncated.</description></item>
+ <item><description>fff</description><description>The fraction of a second in three-digit precision. The remaining digits are truncated.</description></item>
+ <item><description>ffff</description><description>The fraction of a second in four-digit precision. The remaining digits are truncated.</description></item>
+ <item><description>fffff</description><description>The fraction of a second in five-digit precision. The remaining digits are truncated. </description></item>
+ <item><description>ffffff</description><description>The fraction of a second in six-digit precision. The remaining digits are truncated. </description></item>
+ <item><description>fffffff</description><description>The fraction of a second in seven-digit precision. The remaining digits are truncated. </description></item>
+ <item><description>t</description><description>The first character in the AM/PM designator.</description></item>
+ <item><description>tt</description><description>The AM/PM designator. </description></item>
+ <item><description>z</description><description>The time zone offset ("+" or "-" followed by the hour only). Single-digit hours will not have a leading zero. For example, Pacific Standard Time is "-8".</description></item>
+ <item><description>zz</description><description>The time zone offset ("+" or "-" followed by the hour only). Single-digit hours will have a leading zero. For example, Pacific Standard Time is "-08".</description></item>
+ <item><description>zzz</description><description>The full time zone offset ("+" or "-" followed by the hour and minutes). Single-digit hours and minutes will have leading zeros. For example, Pacific Standard Time is "-08:00".</description></item>
+ <item><description>:</description><description>The default time separator.</description></item>
+ <item><description>/</description><description>The default date separator.</description></item>
+ <item><description>\ c</description><description>Pattern Where c is any character. Displays the character literally. To display the backslash character, use "\\". </description></item>
+ </list>
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Tasks.UpToDateTask">
+ <summary>
+ Check modification dates on groups of files.
+ </summary>
+ <remarks>
+ If all <see cref="P:NAnt.Core.Tasks.UpToDateTask.TargetFiles"/> are same or newer than all <see cref="P:NAnt.Core.Tasks.UpToDateTask.SourceFiles"/>, the specified property is set to <see langword="true"/>, otherwise it
+ is set to <see langword="false"/>.
+ </remarks>
+ <example>
+ <para>
+ Check file dates. If <c>myfile.dll</c> is same or newer than <c>myfile.cs</c>, then set <c>myfile.dll.uptodate</c> property
+ to either <see langword="true"/> or <see langword="false"/>.
+ </para>
+ <code>
+ <![CDATA[
+ <uptodate property="myfile.dll.uptodate">
+ <sourcefiles>
+ <include name="myfile.cs" />
+ </sourcefiles>
+ <targetfiles>
+ <include name="myfile.dll" />
+ </targetfiles>
+ </uptodate>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.Core.Tasks.UpToDateTask.PropertyName">
+ <summary>
+ Property that will be set to <see langword="true" /> or <see langword="false" /> depending on the
+ result of the date check.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.UpToDateTask.SourceFiles">
+ <summary>
+ The <see cref="T:NAnt.Core.Types.FileSet"/> that contains list of source files.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.UpToDateTask.TargetFiles">
+ <summary>
+ The <see cref="T:NAnt.Core.Types.FileSet"/> that contains list of target files.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.XmlPeekTask">
+ <summary>
+ Extracts text from an XML file at the location specified by an XPath
+ expression.
+ </summary>
+ <remarks>
+ <para>
+ If the XPath expression specifies multiple nodes the node index is used
+ to determine which of the nodes' text is returned.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ The example provided assumes that the following XML file (App.config)
+ exists in the current build directory.
+ </para>
+ <code>
+ <![CDATA[
+ <?xml version="1.0" encoding="utf-8" ?>
+ <configuration xmlns="http://www.gordic.cz/shared/project-config/v_1.0.0.0">
+ <appSettings>
+ <add key="server" value="testhost.somecompany.com" />
+ </appSettings>
+ </configuration>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ The example will read the server value from the above
+ configuration file.
+ </para>
+ <code>
+ <![CDATA[
+ <xmlpeek
+ file="App.config"
+ xpath="/x:configuration/x:appSettings/x:add[@key = 'server']/@value"
+ property="configuration.server">
+ <namespaces>
+ <namespace prefix="x" uri="http://www.gordic.cz/shared/project-config/v_1.0.0.0" />
+ </namespaces>
+ </xmlpeek>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPeekTask.ExecuteTask">
+ <summary>
+ Executes the XML peek task.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPeekTask.LoadDocument(System.String)">
+ <summary>
+ Loads an XML document from a file on disk.
+ </summary>
+ <param name="fileName">The file name of the file to load the XML document from.</param>
+ <returns>
+ A <see cref="T:System.Xml.XmlDocument">document</see> containing
+ the document object representing the file.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPeekTask.GetNodeContents(System.String,System.Xml.XmlDocument,System.Int32)">
+ <summary>
+ Gets the contents of the node specified by the XPath expression.
+ </summary>
+ <param name="xpath">The XPath expression used to determine which nodes to choose from.</param>
+ <param name="document">The XML document to select the nodes from.</param>
+ <param name="nodeIndex">The node index in the case where multiple nodes satisfy the expression.</param>
+ <returns>
+ The contents of the node specified by the XPath expression.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPeekTask.XmlFile">
+ <summary>
+ The name of the file that contains the XML document
+ that is going to be peeked at.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPeekTask.NodeIndex">
+ <summary>
+ The index of the node that gets its text returned when the query
+ returns multiple nodes.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPeekTask.Property">
+ <summary>
+ The property that receives the text representation of the XML inside
+ the node returned from the XPath expression.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPeekTask.XPath">
+ <summary>
+ The XPath expression used to select which node to read.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPeekTask.Namespaces">
+ <summary>
+ Namespace definitions to resolve prefixes in the XPath expression.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Tasks.XmlPokeTask">
+ <summary>
+ Replaces text in an XML file at the location specified by an XPath
+ expression.
+ </summary>
+ <remarks>
+ <para>
+ The location specified by the XPath expression must exist, it will
+ not create the parent elements for you. However, provided you have
+ a root element you could use a series of the tasks to build the
+ XML file up if necessary.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Change the <c>server</c> setting in the configuration from <c>testhost.somecompany.com</c>
+ to <c>productionhost.somecompany.com</c>.
+ </para>
+ <para>XML file:</para>
+ <code>
+ <![CDATA[
+ <?xml version="1.0" encoding="utf-8" ?>
+ <configuration>
+ <appSettings>
+ <add key="server" value="testhost.somecompany.com" />
+ </appSettings>
+ </configuration>
+ ]]>
+ </code>
+ <para>Build fragment:</para>
+ <code>
+ <![CDATA[
+ <xmlpoke
+ file="App.config"
+ xpath="/configuration/appSettings/add[@key = 'server']/@value"
+ value="productionhost.somecompany.com" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Modify the <c>noNamespaceSchemaLocation</c> in an XML file.
+ </para>
+ <para>XML file:</para>
+ <code>
+ <![CDATA[
+ <?xml version="1.0" encoding="utf-8" ?>
+ <Commands xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Path Value">
+ </Commands>
+ ]]>
+ </code>
+ <para>Build fragment:</para>
+ <code>
+ <![CDATA[
+ <xmlpoke file="test.xml" xpath="/Commands/@xsi:noNamespaceSchemaLocation" value="d:\Commands.xsd">
+ <namespaces>
+ <namespace prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance" />
+ </namespaces>
+ </xmlpoke>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPokeTask.ExecuteTask">
+ <summary>
+ Executes the XML poke task.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPokeTask.LoadDocument(System.String,System.Boolean)">
+ <summary>
+ Loads an XML document from a file on disk.
+ </summary>
+ <param name="fileName">
+ The file name of the file to load the XML document from.
+ </param>
+ <param name="preserveWhitespace">
+ Value for XmlDocument.PreserveWhitespace that is set before the xml is loaded.
+ </param>
+ <returns>
+ An <see cref="T:System.Xml.XmlDocument" /> containing
+ the document object model representing the file.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPokeTask.SelectNodes(System.String,System.Xml.XmlDocument,System.Xml.XmlNamespaceManager)">
+ <summary>
+ Given an XML document and an expression, returns a list of nodes
+ which match the expression criteria.
+ </summary>
+ <param name="xpath">
+ The XPath expression used to select the nodes.
+ </param>
+ <param name="document">
+ The XML document that is searched.
+ </param>
+ <param name="nsMgr">
+ An <see cref="T:System.Xml.XmlNamespaceManager"/> to use for resolving namespaces
+ for prefixes in the XPath expression.
+ </param>
+ <returns>
+ An <see cref="T:System.Xml.XmlNodeList"/> containing references to the nodes
+ that matched the XPath expression.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPokeTask.UpdateNodes(System.Xml.XmlNodeList,System.String)">
+ <summary>
+ Given a node list, replaces the XML within those nodes.
+ </summary>
+ <param name="nodes">
+ The list of nodes to replace the contents of.
+ </param>
+ <param name="value">
+ The text to replace the contents with.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Tasks.XmlPokeTask.SaveDocument(System.Xml.XmlDocument,System.String)">
+ <summary>
+ Saves the XML document to a file.
+ </summary>
+ <param name="document">The XML document to be saved.</param>
+ <param name="fileName">The file name to save the XML document under.</param>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPokeTask.XmlFile">
+ <summary>
+ The name of the file that contains the XML document that is going
+ to be poked.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPokeTask.XPath">
+ <summary>
+ The XPath expression used to select which nodes are to be modified.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPokeTask.Value">
+ <summary>
+ The value that replaces the contents of the selected nodes.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPokeTask.Namespaces">
+ <summary>
+ Namespace definitions to resolve prefixes in the XPath expression.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Tasks.XmlPokeTask.PreserveWhitespace">
+ <summary>
+ If <see langword="true" /> then the whitespace in the resulting
+ document will be preserved; otherwise the whitespace will be removed.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.Argument">
+ <summary>
+ Represents a command-line argument.
+ </summary>
+ <remarks>
+ <para>
+ When passed to an external application, the argument will be quoted
+ when appropriate. This does not apply to the <see cref="P:NAnt.Core.Types.Argument.Line"/>
+ parameter, which is always passed as is.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ A single command-line argument containing a space character.
+ </para>
+ <code>
+ <![CDATA[
+ <arg value="-l -a" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Two separate command-line arguments.
+ </para>
+ <code>
+ <![CDATA[
+ <arg line="-l -a" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ A single command-line argument with the value <c>\dir;\dir2;\dir3</c>
+ on DOS-based systems and <c>/dir:/dir2:/dir3</c> on Unix-like systems.
+ </para>
+ <code>
+ <![CDATA[
+ <arg path="/dir;/dir2:\dir3" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Types.Argument.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Argument"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Argument.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Argument"/> class
+ with the specified command-line argument.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Argument.#ctor(System.IO.FileInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Argument"/> class
+ with the given file.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Argument.#ctor(NAnt.Core.Types.PathSet)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Argument"/> class
+ with the given path.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Argument.ToString">
+ <summary>
+ Returns the argument as a <see cref="T:System.String"/>.
+ </summary>
+ <returns>
+ The argument as a <see cref="T:System.String"/>.
+ </returns>
+ <remarks>
+ File and individual path elements will be quoted if necessary.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Types.Argument.QuoteArgument(System.String)">
+ <summary>
+ Quotes a command line argument if it contains a single quote or a
+ space.
+ </summary>
+ <param name="argument">The command line argument.</param>
+ <returns>
+ A quoted command line argument if <paramref name="argument" />
+ contains a single quote or a space; otherwise,
+ <paramref name="argument" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.Value">
+ <summary>
+ A single command-line argument; can contain space characters.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.File">
+ <summary>
+ The name of a file as a single command-line argument; will be
+ replaced with the absolute filename of the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.Directory">
+ <summary>
+ The value for a directory-based command-line argument; will be
+ replaced with the absolute path of the directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.Path">
+ <summary>
+ The value for a PATH-like command-line argument; you can use
+ <c>:</c> or <c>;</c> as path separators and NAnt will convert it
+ to the platform's local conventions, while resolving references to
+ environment variables.
+ </summary>
+ <remarks>
+ Individual parts will be replaced with the absolute path, resolved
+ relative to the project base directory.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.PathSet">
+ <summary>
+ Sets a single command-line argument and treats it like a PATH - ensures
+ the right separator for the local platform is used.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.Line">
+ <summary>
+ List of command-line arguments; will be passed to the executable
+ as is.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.IfDefined">
+ <summary>
+ Indicates if the argument should be passed to the external program.
+ If <see langword="true" /> then the argument will be passed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.UnlessDefined">
+ <summary>
+ Indicates if the argument should not be passed to the external
+ program. If <see langword="false" /> then the argument will be
+ passed; otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Argument.StringValue">
+ <summary>
+ Gets string value corresponding with the argument.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.ArgumentCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.Argument"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.ArgumentCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.#ctor(NAnt.Core.Types.ArgumentCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.ArgumentCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Types.ArgumentCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.#ctor(NAnt.Core.Types.Argument[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.ArgumentCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Types.Argument"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.Add(NAnt.Core.Types.Argument)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.Argument"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Argument"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.AddRange(NAnt.Core.Types.Argument[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.Argument"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.Argument"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.AddRange(NAnt.Core.Types.ArgumentCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.ArgumentCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.ArgumentCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.Contains(NAnt.Core.Types.Argument)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.Argument"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Argument"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.Argument"/> with the specified
+ value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Types.Argument"/> with value
+ <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.CopyTo(NAnt.Core.Types.Argument[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.IndexOf(NAnt.Core.Types.Argument)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.Argument"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Argument"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.Argument"/>. If the <see cref="T:NAnt.Core.Types.Argument"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.Insert(System.Int32,NAnt.Core.Types.Argument)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.Argument"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Argument"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.ArgumentEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentCollection.Remove(NAnt.Core.Types.Argument)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Argument"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.ArgumentCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.ArgumentCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Types.Argument"/> with the specified value.
+ </summary>
+ <param name="value">The value of the <see cref="T:NAnt.Core.Types.Argument"/> to get.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.ArgumentEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.Argument"/> elements of a <see cref="T:NAnt.Core.Types.ArgumentCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentEnumerator.#ctor(NAnt.Core.Types.ArgumentCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.ArgumentEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.ArgumentCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.ArgumentEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.ArgumentEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.Credential">
+ <summary>
+ Provides credentials for password-based authentication schemes.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Credential.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Credential"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Credential.GetCredential">
+ <summary>
+ Returns a <see cref="T:System.Net.NetworkCredential"/> instance representing
+ the current <see cref="T:NAnt.Core.Types.Credential"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.Net.NetworkCredential"/> instance representing the current
+ <see cref="T:NAnt.Core.Types.Credential"/>, or <see langword="null"/> if the
+ credentials should not be used to provide authentication information
+ to the external resource.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.Credential.Domain">
+ <summary>
+ The domain or computer name that verifies the credentials.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Credential.Password">
+ <summary>
+ The password for the user name associated with the credentials.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Credential.UserName">
+ <summary>
+ The user name associated with the credentials.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Credential.IfDefined">
+ <summary>
+ Indicates if the credentials should be used to provide authentication
+ information to the external resource. If <see langword="true" /> then
+ the credentials will be passed; otherwise, not. The default is
+ <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Credential.UnlessDefined">
+ <summary>
+ Indicates if the credentials should not be used to provide authentication
+ information to the external resource. If <see langword="false" /> then the
+ credentials will be passed; otherwise, not. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.DirSet">
+ <summary>
+ A specialized <see cref="T:NAnt.Core.Types.FileSet"/> used for specifying a set of
+ directories.
+ </summary>
+ <remarks>
+ Hint for supporting tasks that the included directories instead of
+ files should be used.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Types.FileSet">
+ <summary>
+ Filesets are groups of files. These files can be found in a directory
+ tree starting in a base directory and are matched by patterns taken
+ from a number of patterns. Filesets can appear inside tasks that support
+ this feature or at the project level, i.e., as children of <c>&lt;project&gt;</c>.
+ </summary>
+ <remarks>
+ <h3>Patterns</h3>
+ <para>
+ As described earlier, patterns are used for the inclusion and exclusion.
+ These patterns look very much like the patterns used in DOS and UNIX:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>
+ <para>'<c>*</c>' matches zero or more characters</para>
+ <para>For example:</para>
+ <para>
+ <c>*.cs</c> matches <c>.cs</c>, <c>x.cs</c> and <c>FooBar.cs</c>,
+ but not <c>FooBar.xml</c> (does not end with <c>.cs</c>).
+ </para>
+ </description>
+ </item>
+ <item>
+ <description>
+ <para>'<c>?</c>' matches one character</para>
+ <para>For example:</para>
+ <para>
+ <c>?.cs</c> matches <c>x.cs</c>, <c>A.cs</c>, but not
+ <c>.cs</c> or <c>xyz.cs</c> (both don't have one character
+ before <c>.cs</c>).
+ </para>
+ </description>
+ </item>
+ </list>
+ <para>
+ Combinations of <c>*</c>'s and <c>?</c>'s are allowed.
+ </para>
+ <para>
+ Matching is done per-directory. This means that first the first directory
+ in the pattern is matched against the first directory in the path to match.
+ Then the second directory is matched, and so on. For example, when we have
+ the pattern <c>/?abc/*/*.cs</c> and the path <c>/xabc/foobar/test.cs</c>,
+ the first <c>?abc</c> is matched with <c>xabc</c>, then <c>*</c> is matched
+ with <c>foobar</c>, and finally <c>*.cs</c> is matched with <c>test.cs</c>.
+ They all match, so the path matches the pattern.
+ </para>
+ <para>
+ To make things a bit more flexible, we added one extra feature, which makes
+ it possible to match multiple directory levels. This can be used to match a
+ complete directory tree, or a file anywhere in the directory tree. To do this,
+ <c>**</c> must be used as the name of a directory. When <c>**</c> is used as
+ the name of a directory in the pattern, it matches zero or more directories.
+ For example: <c>/test/**</c> matches all files/directories under <c>/test/</c>,
+ such as <c>/test/x.cs</c>, or <c>/test/foo/bar/xyz.html</c>, but not <c>/xyz.xml</c>.
+ </para>
+ <para>
+ There is one "shorthand" - if a pattern ends with <c>/</c> or <c>\</c>, then
+ <c>**</c> is appended. For example, <c>mypackage/test/</c> is interpreted as
+ if it were <c>mypackage/test/**</c>.
+ </para>
+ <h3>Case-Sensitivity</h3>
+ <para>
+ By default, pattern matching is case-sensitive on Unix and case-insensitive
+ on other platforms. The <see cref="P:NAnt.Core.Types.FileSet.CaseSensitive"/> parameter can be used
+ to override this.
+ </para>
+ <h3>Default Excludes</h3>
+ <para>
+ There are a set of definitions that are excluded by default from all
+ tasks that use filesets. They are:
+ </para>
+ <list type="bullet">
+ <item><description>**/.svn</description></item>
+ <item><description>**/.svn/**</description></item>
+ <item><description>**/_svn</description></item>
+ <item><description>**/_svn/**</description></item>
+ <item><description>**/.git</description></item>
+ <item><description>**/.git/**</description></item>
+ <item><description>**/.git* (eg. .gitignore)</description></item>
+ <item><description>**/.hg</description></item>
+ <item><description>**/.hg/**</description></item>
+ <item><description>**/.hg* (eg. .hgignore)</description></item>
+ <item><description>**/SCCS</description></item>
+ <item><description>**/SCCS/**</description></item>
+ <item><description>**/vssver.scc</description></item>
+ <item><description>**/vssver2.scc</description></item>
+ <item><description>**/_vti_cnf/**</description></item>
+ <item><description>**/*~</description></item>
+ <item><description>**/#*#</description></item>
+ <item><description>**/.#*</description></item>
+ <item><description>**/%*%</description></item>
+ <item><description>**/CVS</description></item>
+ <item><description>**/CVS/**</description></item>
+ <item><description>**/.cvsignore</description></item>
+ </list>
+ <para>
+ If you do not want these default excludes applied, you may disable them
+ by setting <see cref="P:NAnt.Core.Types.FileSet.DefaultExcludes"/> to <see langword="false"/>.
+ </para>
+ </remarks>
+ <example>
+ <list type="table">
+ <listheader>
+ <term>Pattern</term>
+ <description>Match</description>
+ </listheader>
+ <item>
+ <term><c>**/CVS/*</c></term>
+ <description>
+ <para>
+ Matches all files in <c>CVS</c> directories that can be
+ located anywhere in the directory tree.
+ </para>
+ <para>Matches:</para>
+ <list type="bullet">
+ <item>
+ <description>CVS/Repository</description>
+ </item>
+ <item>
+ <description>org/apache/CVS/Entries</description>
+ </item>
+ <item>
+ <description>org/apache/jakarta/tools/ant/CVS/Entries</description>
+ </item>
+ </list>
+ <para>But not:</para>
+ <list type="bullet">
+ <item>
+ <description>org/apache/CVS/foo/bar/Entries (<c>foo/bar/</c> part does not match)</description>
+ </item>
+ </list>
+ </description>
+ </item>
+ <item>
+ <term><c>org/apache/jakarta/**</c></term>
+ <description>
+ <para>
+ Matches all files in the <c>org/apache/jakarta</c> directory
+ tree.
+ </para>
+ <para>Matches:</para>
+ <list type="bullet">
+ <item>
+ <description>org/apache/jakarta/tools/ant/docs/index.html</description>
+ </item>
+ <item>
+ <description>org/apache/jakarta/test.xml</description>
+ </item>
+ </list>
+ <para>But not:</para>
+ <list type="bullet">
+ <item>
+ <description>org/apache/xyz.java (<c>jakarta/</c> part is missing)</description>
+ </item>
+ </list>
+ </description>
+ </item>
+ <item>
+ <term><c>org/apache/**/CVS/*</c></term>
+ <description>
+ <para>
+ Matches all files in <c>CVS</c> directories that are located
+ anywhere in the directory tree under <c>org/apache</c>.
+ </para>
+ <para>Matches:</para>
+ <list type="bullet">
+ <item>
+ <description>org/apache/CVS/Entries</description>
+ </item>
+ <item>
+ <description>org/apache/jakarta/tools/ant/CVS/Entries</description>
+ </item>
+ </list>
+ <para>But not:</para>
+ <list type="bullet">
+ <item>
+ <description>org/apache/CVS/foo/bar/Entries (<c>foo/bar/</c> part does not match)</description>
+ </item>
+ </list>
+ </description>
+ </item>
+ <item>
+ <term><c>**/test/**</c></term>
+ <description>
+ <para>
+ Matches all files that have a <c>test</c> element in their
+ path, including <c>test</c> as a filename.
+ </para>
+ </description>
+ </item>
+ </list>
+ </example>
+ <seealso cref="T:NAnt.Core.Types.PatternSet"/>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.FileSet"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.#ctor(NAnt.Core.Types.FileSet)">
+ <summary>
+ copy constructor
+ </summary>
+ <param name="fs"></param>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.Types.FileSet"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.Types.FileSet"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.AddPatternSet(NAnt.Core.Types.PatternSet)">
+ <summary>
+ Adds a nested set of patterns, or references a standalone patternset.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.CopyTo(NAnt.Core.Types.FileSet)">
+ <summary>
+ Copies all instance data of the <see cref="T:NAnt.Core.Types.FileSet"/> to a given
+ <see cref="T:NAnt.Core.Types.FileSet"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.FindMoreRecentLastWriteTime(System.String,System.DateTime)">
+ <summary>
+ Determines if a file has a more recent last write time than the
+ given time, or no longer exists.
+ </summary>
+ <param name="fileName">A file to check the last write time against.</param>
+ <param name="targetLastWriteTime">The datetime to compare against.</param>
+ <returns>
+ The name of the file that has a last write time greater than
+ <paramref name="targetLastWriteTime" /> or that no longer exists;
+ otherwise, <see langword="null" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FileSet.FindMoreRecentLastWriteTime(System.Collections.Specialized.StringCollection,System.DateTime)">
+ <summary>
+ Determines if one of the given files has a more recent last write
+ time than the given time. If one of the given files no longer exists,
+ the target will be considered out-of-date.
+ </summary>
+ <param name="fileNames">A collection of filenames to check the last write time against.</param>
+ <param name="targetLastWriteTime">The datetime to compare against.</param>
+ <returns>
+ The name of the first file that has a last write time greater than
+ <paramref name="targetLastWriteTime" />; otherwise, null.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.CaseSensitive">
+ <summary>
+ Indicates whether include and exclude patterns must be treated in a
+ case-sensitive way. The default is <see langword="true" /> on Unix;
+ otherwise, <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.FailOnEmpty">
+ <summary>
+ When set to <see langword="true"/>, causes the fileset element to
+ throw a <see cref="T:NAnt.Core.ValidationException"/> when no files match the
+ includes and excludes criteria. The default is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.DefaultExcludes">
+ <summary>
+ Indicates whether default excludes should be used or not.
+ The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.BaseDirectory">
+ <summary>
+ The base of the directory of this fileset. The default is the project
+ base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Includes">
+ <summary>
+ Gets the collection of include patterns.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Excludes">
+ <summary>
+ Gets the collection of exclude patterns.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.AsIs">
+ <summary>
+ Gets the collection of files that will be added to the
+ <see cref="T:NAnt.Core.Types.FileSet"/> without pattern matching or checking if the
+ file exists.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.FileNames">
+ <summary>
+ Gets the collection of file names that match the fileset.
+ </summary>
+ <value>
+ A collection that contains the file names that match the
+ <see cref="T:NAnt.Core.Types.FileSet"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.DirectoryNames">
+ <summary>
+ Gets the collection of directory names that match the fileset.
+ </summary>
+ <value>
+ A collection that contains the directory names that match the
+ <see cref="T:NAnt.Core.Types.FileSet"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ScannedDirectories">
+ <summary>
+ Gets the collection of directory names that were scanned for files.
+ </summary>
+ <value>
+ A collection that contains the directory names that were scanned for
+ files.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.SetIncludes">
+ <summary>
+ The items to include in the fileset.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IncludeElements">
+ <summary>
+ The items to include in the fileset.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.SetExcludes">
+ <summary>
+ The items to exclude from the fileset.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ExcludeElements">
+ <summary>
+ The items to exclude from the fileset.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.SetIncludesList">
+ <summary>
+ The files from which a list of patterns or files to include should
+ be obtained.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IncludesFiles">
+ <summary>
+ The files from which a list of patterns or files to include should
+ be obtained.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ExcludesFiles">
+ <summary>
+ The files from which a list of patterns or files to exclude should
+ be obtained.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.MostRecentLastWriteTimeFile">
+ <summary>
+ Determines the most recently modified file in the fileset (by LastWriteTime of the <see cref="T:System.IO.FileInfo"/>).
+ </summary>
+ <returns>
+ The <see cref="T:System.IO.FileInfo"/> of the file that has the newest (closest to present) last write time.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IsEverythingIncluded">
+ <summary>
+ Indicates whether or not every file and directory is included in
+ the fileset list.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Exclude.Pattern">
+ <summary>
+ The pattern or file name to exclude.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Exclude.IfDefined">
+ <summary>
+ If <see langword="true" /> then the pattern will be excluded;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Exclude.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Types.FileSet.Exclude.IfDefined"/>. If <see langword="false"/>
+ then the pattern will be excluded; otherwise, skipped. The default
+ is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Include.AsIs">
+ <summary>
+ If <see langword="true"/> then the file name will be added to
+ the <see cref="T:NAnt.Core.Types.FileSet"/> without pattern matching or checking
+ if the file exists. The default is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Include.FromPath">
+ <summary>
+ If <see langword="true" /> then the file will be searched for
+ on the path. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Include.Pattern">
+ <summary>
+ The pattern or file name to include.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Include.IfDefined">
+ <summary>
+ If <see langword="true" /> then the pattern will be included;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.Include.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Types.FileSet.Include.IfDefined"/>. If <see langword="false"/>
+ then the pattern will be included; otherwise, skipped. The default
+ is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ExcludesFile.Patterns">
+ <summary>
+ Gets the list of patterns in <see cref="P:NAnt.Core.Types.FileSet.ExcludesFile.PatternFile"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ExcludesFile.IfDefined">
+ <summary>
+ If <see langword="true" /> then the patterns will be excluded;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ExcludesFile.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Types.FileSet.ExcludesFile.IfDefined"/>. If <see langword="false"/>
+ then the patterns will be excluded; otherwise, skipped. The default
+ is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.ExcludesFile.PatternFile">
+ <summary>
+ The name of a file; each line of this file is taken to be a
+ pattern.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IncludesFile.AsIs">
+ <summary>
+ If <see langword="true"/> then the patterns in the include file
+ will be added to the <see cref="T:NAnt.Core.Types.FileSet"/> without pattern
+ matching or checking if the file exists. The default is
+ <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IncludesFile.FromPath">
+ <summary>
+ If <see langword="true" /> then the patterns in the include file
+ will be searched for on the path. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IncludesFile.IfDefined">
+ <summary>
+ If <see langword="true" /> then the patterns will be included;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FileSet.IncludesFile.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Types.FileSet.IncludesFile.IfDefined"/>. If <see langword="false"/>
+ then the patterns will be included; otherwise, skipped. The default
+ is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.DirSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.DirSet"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.DirSet.#ctor(NAnt.Core.Types.FileSet)">
+ <summary>
+ Copy constructor for <see cref="T:NAnt.Core.Types.FileSet"/>. Required in order to
+ assign references of <see cref="T:NAnt.Core.Types.FileSet"/> type where
+ <see cref="T:NAnt.Core.Types.DirSet"/> is used.
+ </summary>
+ <param name="fs">A <see cref="T:NAnt.Core.Types.FileSet"/> instance to create a <see cref="T:NAnt.Core.Types.DirSet"/> from.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.EnvironmentVariable">
+ <summary>
+ Represents an environment variable.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariable.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> instance with the
+ specified name and value.
+ </summary>
+ <param name="name">The name of the environment variable.</param>
+ <param name="value">The value of the environment variable.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariable.#ctor">
+ <summary>
+ Initializes a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> instance.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.VariableName">
+ <summary>
+ The name of the environment variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.LiteralValue">
+ <summary>
+ The literal value for the environment variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.File">
+ <summary>
+ The value for a file-based environment variable. NAnt will convert
+ it to an absolute filename.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.Directory">
+ <summary>
+ The value for a directory-based environment variable. NAnt will
+ convert it to an absolute path.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.Path">
+ <summary>
+ The value for a PATH like environment variable. You can use
+ <c>:</c> or <c>;</c> as path separators and NAnt will convert it to
+ the platform's local conventions.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.PathSet">
+ <summary>
+ Sets a single environment variable and treats it like a PATH -
+ ensures the right separator for the local platform is used.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.Value">
+ <summary>
+ Gets the value of the environment variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.IfDefined">
+ <summary>
+ Indicates if the environment variable should be passed to the
+ external program. If <see langword="true" /> then the environment
+ variable will be passed; otherwise, skipped. The default is
+ <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariable.UnlessDefined">
+ <summary>
+ Indicates if the environment variable should not be passed to the
+ external program. If <see langword="false" /> then the environment
+ variable will be passed; otherwise, skipped. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.EnvironmentSet">
+ <summary>
+ A set of environment variables.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentSet.Options">
+ <summary>
+ Environment variable to pass to a program.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentSet.EnvironmentVariables">
+ <summary>
+ Environment variable to pass to a program.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.EnvironmentVariableCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.#ctor(NAnt.Core.Types.EnvironmentVariableCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.#ctor(NAnt.Core.Types.EnvironmentVariable[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.Add(NAnt.Core.Types.EnvironmentVariable)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.AddRange(NAnt.Core.Types.EnvironmentVariable[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.AddRange(NAnt.Core.Types.EnvironmentVariableCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.Contains(NAnt.Core.Types.EnvironmentVariable)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> with the specified
+ value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> with value
+ <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.CopyTo(NAnt.Core.Types.EnvironmentVariable[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.IndexOf(NAnt.Core.Types.EnvironmentVariable)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.EnvironmentVariable"/>. If the <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.Insert(System.Int32,NAnt.Core.Types.EnvironmentVariable)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.EnvironmentVariableEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableCollection.Remove(NAnt.Core.Types.EnvironmentVariable)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariableCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariableCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> with the specified name.
+ </summary>
+ <param name="name">The name of the <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> to get.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.EnvironmentVariableEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.EnvironmentVariable"/> elements of a <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableEnumerator.#ctor(NAnt.Core.Types.EnvironmentVariableCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.EnvironmentVariableEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.EnvironmentVariableCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.EnvironmentVariableEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.EnvironmentVariableEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.Formatter.Property">
+ <summary>
+ The name of the NAnt property to set.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Formatter.Pattern">
+ <summary>
+ The string pattern to use to format the property.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Formatter.IfDefined">
+ <summary>
+ Indicates if the formatter should be used to format the timestamp.
+ If <see langword="true" /> then the formatter will be used;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Formatter.UnlessDefined">
+ <summary>
+ Indicates if the formatter should be not used to format the
+ timestamp. If <see langword="false" /> then the formatter will be
+ used; otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.FormatterCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.Formatter"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.FormatterCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.#ctor(NAnt.Core.Types.FormatterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.FormatterCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Types.FormatterCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.#ctor(NAnt.Core.Types.Formatter[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.FormatterCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Types.Formatter"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.Add(NAnt.Core.Types.Formatter)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.Formatter"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Formatter"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.AddRange(NAnt.Core.Types.Formatter[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.Formatter"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.Formatter"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.AddRange(NAnt.Core.Types.FormatterCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.FormatterCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.FormatterCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.Contains(NAnt.Core.Types.Formatter)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.Formatter"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Formatter"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.CopyTo(NAnt.Core.Types.Formatter[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.IndexOf(NAnt.Core.Types.Formatter)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.Formatter"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Formatter"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.Formatter"/>. If the <see cref="T:NAnt.Core.Types.Formatter"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.Insert(System.Int32,NAnt.Core.Types.Formatter)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.Formatter"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Formatter"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.FormatterEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterCollection.Remove(NAnt.Core.Types.Formatter)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Formatter"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.FormatterCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.FormatterEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.Formatter"/> elements of a <see cref="T:NAnt.Core.Types.FormatterCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterEnumerator.#ctor(NAnt.Core.Types.FormatterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.FormatterEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.FormatterCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.FormatterEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.FormatterEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.ManagedExecution">
+ <summary>
+ Specifies the execution mode for managed applications.
+ </summary>
+ <remarks>
+ <para>
+ For backward compatibility, the following string values can also be
+ used in build files:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Corresponding field</description>
+ </listheader>
+ <item>
+ <term>"true"</term>
+ <description><see cref="F:NAnt.Core.Types.ManagedExecution.Auto"/></description>
+ </item>
+ <item>
+ <term>"false"</term>
+ <description><see cref="F:NAnt.Core.Types.ManagedExecution.Default"/></description>
+ </item>
+ </list>
+ <para>
+ Even if set to <see cref="F:NAnt.Core.Types.ManagedExecution.Default"/>, the operating system can still
+ run the program as a managed application.
+ </para>
+ <para>On Linux this can be done through <b>binfmt_misc</b>, while on
+ Windows installing the .NET Framework redistributable caused managed
+ applications to run on the MS CLR by default.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.Types.ManagedExecution.Default">
+ <summary>
+ Do not threat the program as a managed application.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Types.ManagedExecution.Auto">
+ <summary>
+ Leave it up to the CLR to determine which specific version of
+ the CLR will be used to run the application.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Types.ManagedExecution.Strict">
+ <summary>
+ Forces an application to run against the currently targeted
+ version of a given CLR.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.ManagedExecutionConverter">
+ <summary>
+ Specialized <see cref="T:System.ComponentModel.EnumConverter"/> that also supports
+ case-insensitive conversion of "true" to
+ <see cref="F:NAnt.Core.Types.ManagedExecution.Auto"/> and "false" to
+ <see cref="F:NAnt.Core.Types.ManagedExecution.Default"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ManagedExecutionConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.ManagedExecutionConverter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.ManagedExecutionConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
+ <summary>
+ Converts the given object to the type of this converter, using the
+ specified context and culture information.
+ </summary>
+ <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that provides a format context.</param>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/> object. If a <see langword="null"/> is passed, the current culture is assumed.</param>
+ <param name="value">The <see cref="T:System.Object"/> to convert.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that represents the converted value.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.Option">
+ <summary>
+ Represents an option.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Option.#ctor(System.String,System.String)">
+ <summary>
+ name, value constructor
+ </summary>
+ <param name="name"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:NAnt.Core.Types.Option.#ctor">
+ <summary>
+ Default constructor
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Option.OptionName">
+ <summary>
+ Name of the option.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Option.Value">
+ <summary>
+ Value of the option. The default is <see langword="null" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Option.IfDefined">
+ <summary>
+ Indicates if the option should be passed to the task.
+ If <see langword="true" /> then the option will be passed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Option.UnlessDefined">
+ <summary>
+ Indicates if the option should not be passed to the task.
+ If <see langword="false" /> then the option will be passed;
+ otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.OptionCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.Option"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.OptionCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.#ctor(NAnt.Core.Types.OptionCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.OptionCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Types.OptionCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.#ctor(NAnt.Core.Types.Option[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.OptionCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Types.Option"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.Add(NAnt.Core.Types.Option)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.Option"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Option"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.AddRange(NAnt.Core.Types.Option[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.Option"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.Option"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.AddRange(NAnt.Core.Types.OptionCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.OptionCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.OptionCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.Contains(NAnt.Core.Types.Option)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.Option"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Option"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.Option"/> for the specified
+ task is in the collection.
+ </summary>
+ <param name="taskName">The name of task for which the <see cref="T:NAnt.Core.Types.Option"/> should be located in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Types.Option"/> for the specified
+ task is found in the collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.CopyTo(NAnt.Core.Types.Option[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.IndexOf(NAnt.Core.Types.Option)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.Option"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Option"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.Option"/>. If the <see cref="T:NAnt.Core.Types.Option"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.Insert(System.Int32,NAnt.Core.Types.Option)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.Option"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Option"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.OptionEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionCollection.Remove(NAnt.Core.Types.Option)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Option"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.OptionCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.OptionCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Types.Option"/> with the specified name.
+ </summary>
+ <param name="name">The name of the option that should be located in the collection.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.OptionEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.Option"/> elements of a <see cref="T:NAnt.Core.Types.OptionCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionEnumerator.#ctor(NAnt.Core.Types.OptionCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.OptionEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.OptionCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.OptionEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.OptionEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.PathElement">
+ <summary>
+ Represents a nested path element.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PathElement.File">
+ <summary>
+ The name of a file to add to the path. Will be replaced with
+ the absolute path of the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PathElement.Directory">
+ <summary>
+ The name of a directory to add to the path. Will be replaced with
+ the absolute path of the directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PathElement.Path">
+ <summary>
+ A string that will be treated as a path-like string. You can use
+ <c>:</c> or <c>;</c> as path separators and NAnt will convert it
+ to the platform's local conventions, while resolving references
+ to environment variables.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PathElement.IfDefined">
+ <summary>
+ If <see langword="true" /> then the entry will be added to the
+ path; otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PathElement.UnlessDefined">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Types.PathElement.IfDefined"/>. If <see langword="false"/>
+ then the entry will be added to the path; otherwise, skipped.
+ The default is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PathElement.Parts">
+ <summary>
+ Gets the parts of a path represented by this element.
+ </summary>
+ <value>
+ A <see cref="T:System.Collections.Specialized.StringCollection"/> containing the parts of a path
+ represented by this element.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Types.PathSet">
+ <summary>
+ <para>
+ Paths are groups of files and/or directories that need to be passed as a single
+ unit. The order in which parts of the path are specified in the build file is
+ retained, and duplicate parts are automatically suppressed.
+ </para>
+ </summary>
+ <example>
+ <para>
+ Define a global <c>&lt;path&gt;</c> that can be referenced by other
+ tasks or types.
+ </para>
+ <code>
+ <![CDATA[
+ <path id="includes-path">
+ <pathelement path="%INCLUDE%" />
+ <pathelement dir="${build.dir}/include" />
+ </path>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.PathSet"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.#ctor(NAnt.Core.Project,System.String)">
+ <summary>
+ Invoked by <see cref="T:NAnt.Core.Element.AttributeConfigurator"/> for build
+ attributes with an underlying <see cref="T:NAnt.Core.Types.PathSet"/> type.
+ </summary>
+ <param name="project">The <see cref="T:NAnt.Core.Project"/> to be used to resolve relative paths.</param>
+ <param name="path">The string representing a path.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.ToString">
+ <summary>
+ Returns a textual representation of the path, which can be used as
+ PATH environment variable definition.
+ </summary>
+ <returns>
+ A textual representation of the path.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.AddPath(NAnt.Core.Types.PathSet)">
+ <summary>
+ Defines a set of path elements to add to the current path.
+ </summary>
+ <param name="path">The <see cref="T:NAnt.Core.Types.PathSet"/> to add.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.AddPathElement(NAnt.Core.Types.PathElement)">
+ <summary>
+ Defines a path element to add to the current path.
+ </summary>
+ <param name="pathElement">The <see cref="T:NAnt.Core.Types.PathElement"/> to add.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.GetElements">
+ <summary>
+ Returns all path elements defined by this path object.
+ </summary>
+ <returns>
+ A list of path elements.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PathSet.TranslatePath(NAnt.Core.Project,System.String)">
+ <summary>
+ Splits a PATH (with ; or : as separators) into its parts, while
+ resolving references to environment variables.
+ </summary>
+ <param name="project">The <see cref="T:NAnt.Core.Project"/> to be used to resolve relative paths.</param>
+ <param name="source">The path to translate.</param>
+ <returns>
+ A PATH split up its parts, with references to environment variables
+ resolved and duplicate entries removed.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.Pattern.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Pattern"/> class.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Pattern.PatternName">
+ <summary>
+ The name pattern to include/exclude.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Pattern.IfDefined">
+ <summary>
+ If <see langword="true" /> then the pattern will be used;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Pattern.UnlessDefined">
+ <summary>
+ If <see langword="false" /> then the pattern will be used;
+ otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.PatternCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.Pattern"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.PatternCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.Clear">
+ <summary>
+ Removes all items from the <see cref="T:NAnt.Core.Types.PatternCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.Add(NAnt.Core.Types.Pattern)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.Pattern"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Pattern"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.AddRange(NAnt.Core.Types.Pattern[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.Pattern"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.Pattern"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.AddRange(NAnt.Core.Types.PatternCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.PatternCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.PatternCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.Contains(NAnt.Core.Types.Pattern)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.Pattern"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Pattern"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.CopyTo(NAnt.Core.Types.Pattern[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array,
+ starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.IndexOf(NAnt.Core.Types.Pattern)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.Pattern"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Pattern"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.Pattern"/>. If the <see cref="T:NAnt.Core.Types.Pattern"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.Insert(System.Int32,NAnt.Core.Types.Pattern)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.Pattern"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Pattern"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.PatternEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternCollection.Remove(NAnt.Core.Types.Pattern)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.Pattern"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.PatternEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.Pattern"/> elements of a <see cref="T:NAnt.Core.Types.PatternCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternEnumerator.#ctor(NAnt.Core.Types.PatternCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.PatternEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.PatternCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternEnumerator.System#Collections#IEnumerator#Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.PatternSet">
+ <summary>
+ A set of patterns, mostly used to include or exclude certain files.
+ </summary>
+ <remarks>
+ <para>
+ The individual patterns support <c>if</c> and <c>unless</c> attributes
+ to specify that the element should only be used if or unless a given
+ condition is met.
+ </para>
+ <para>
+ The <see cref="P:NAnt.Core.Types.PatternSet.IncludesFile"/> and <see cref="P:NAnt.Core.Types.PatternSet.ExcludesFile"/>
+ elements load patterns from a file. When the file is a relative path,
+ it will be resolved relative to the project base directory in which
+ the patternset is defined. Each line of this file is taken to be a
+ pattern.
+ </para>
+ <para>
+ The number sign (#) as the first non-blank character in a line denotes
+ that all text following it is a comment:
+ </para>
+ <code>
+ <![CDATA[
+ EventLog.cs
+ # requires Mono.Posix
+ SysLogEventLogImpl.cs
+ # uses the win32 eventlog API
+ Win32EventLogImpl.cs
+ ]]>
+ </code>
+ <para>
+ Patterns can be grouped to sets, and later be referenced by their
+ <see cref="P:NAnt.Core.DataTypeBase.ID"/>.
+ </para>
+ <para>
+ When used as a standalone element (global type), any properties that
+ are referenced will be resolved when the definition is processed, not
+ when it actually used. Passing a reference to a nested build file
+ will not cause the properties to be re-evaluated.
+ </para>
+ <para>
+ To improve reuse of globally defined patternsets, avoid referencing
+ any properties altogether.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Define a set of patterns that matches all .cs files that do not contain
+ the text <c>Test</c> in their name.
+ </para>
+ <code>
+ <![CDATA[
+ <patternset id="non.test.sources">
+ <include name="**/*.cs" />
+ <exclude name="**/*Test*" />
+ </patternset>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Define two sets. One holding C# sources, and one holding VB sources.
+ Both sets only include test sources when the <c>test</c> property is
+ set. A third set combines both C# and VB sources.
+ </para>
+ <code>
+ <![CDATA[
+ <patternset id="cs.sources">
+ <include name="src/**/*.cs" />
+ <include name="test/**/*.cs" if=${property::exist('test')}" />
+ </patternset>
+
+ <patternset id="vb.sources">
+ <include name="src/**/*.vb" />
+ <include name="test/**/*.vb" if=${property::exist('test')}" />
+ </patternset>
+
+ <patternset id="all.sources">
+ <patternset refid="cs.sources" />
+ <patternset refid="vb.sources" />
+ </patternset>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Define a set from patterns in a file.
+ </para>
+ <code>
+ <![CDATA[
+ <patternset id="sources">
+ <includesfile name="test.sources" />
+ <includesfile name="non.test.sources" />
+ </patternset>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Defines a patternset with patterns that are loaded from an external
+ file, and shows the behavior when that patternset is passed as a
+ reference to a nested build script.
+ </para>
+ <para>
+ External file "c:\foo\build\service.lst" holding patterns
+ of source files to include for the Foo.Service assembly:
+ </para>
+ <code>
+ <![CDATA[
+ AssemblyInfo.cs
+ *Channel.cs
+ ServiceFactory.cs]]></code>
+ <para>
+ Main build script located in "c:\foo\default.build":
+ </para>
+ <code>
+ <![CDATA[
+ <project name="main" default="build">
+ <property name="build.debug" value="true" />
+
+ <patternset id="service.sources">
+ <include name="TraceListener.cs" if="${build.debug}" />
+ <includesfile name="build/service.lst" />
+ </patternset>
+
+ <property name="build.debug" value="false" />
+
+ <target name="build">
+ <nant buildfile="service/default.build" inheritrefs="true" />
+ </target>
+ </project>]]></code>
+ <para>
+ Nested build script located in "c:\foo\services\default.build"
+ which uses the patternset to feed sources files to the C# compiler:
+ </para>
+ <code>
+ <![CDATA[
+ <project name="service" default="build">
+ <target name="build">
+ <csc output="../bin/Foo.Service.dll" target="library">
+ <fileset basedir="src">
+ <patternset refid="service.sources" />
+ </fileset>
+ </csc>
+ </target>
+ </project>]]></code>
+ <para>
+ At the time when the patternset is used in the "service"
+ build script, the following source files in "c:\foo\services\src"
+ match the defined patterns:
+ </para>
+ <code>
+ <![CDATA[
+ AssemblyInfo.cs
+ MsmqChannel.cs
+ SmtpChannel.cs
+ ServiceFactory.cs
+ TraceListener.cs]]></code>
+ <para>
+ You should have observed that:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>
+ although the patternset is used from the "service"
+ build script, the path to the external file is resolved relative
+ to the base directory of the "main" build script in
+ which the patternset is defined.
+ </description>
+ </item>
+ <item>
+ <description>
+ the "TraceListener.cs" file is included, even though
+ the "build.debug" property was changed to <b>false</b>
+ after the patternset was defined (but before it was passed to
+ the nested build, and used).
+ </description>
+ </item>
+ </list>
+ </example>
+ <seealso cref="T:NAnt.Core.Types.FileSet"/>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.PatternSet"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.PatternSet.Append(NAnt.Core.Types.PatternSet)">
+ <summary>
+ Adds a nested set of patterns, or references other standalone
+ patternset.
+ </summary>
+ <param name="patternSet">The <see cref="T:NAnt.Core.Types.PatternSet"/> to add.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternSet.Include">
+ <summary>
+ Defines a single pattern for files to include.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternSet.IncludesFile">
+ <summary>
+ Loads multiple patterns of files to include from a given file, set
+ using the <see cref="P:NAnt.Core.Types.Pattern.PatternName"/> parameter.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternSet.Exclude">
+ <summary>
+ Defines a single pattern for files to exclude.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.PatternSet.ExcludesFile">
+ <summary>
+ Loads multiple patterns of files to exclude from a given file, set
+ using the <see cref="P:NAnt.Core.Types.Pattern.PatternName"/> parameter.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.Proxy">
+ <summary>
+ Contains HTTP proxy settings used to process requests to Internet
+ resources.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Proxy.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.Proxy"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.Proxy.GetWebProxy">
+ <summary>
+ Gets a <see cref="T:System.Net.WebProxy"/> instance representing the current
+ <see cref="T:NAnt.Core.Types.Proxy"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.Net.WebProxy"/> instance representing the current
+ <see cref="T:NAnt.Core.Types.Proxy"/>, or <see langword="GlobalProxySelection.Select"/>
+ if this proxy should not be used to connect to the external resource.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Types.Proxy.Host">
+ <summary>
+ The name of the proxy host.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Proxy.Port">
+ <summary>
+ The port number on <see cref="P:NAnt.Core.Types.Proxy.Host"/> to use.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Proxy.BypassOnLocal">
+ <summary>
+ Specifies whether to bypass the proxy server for local addresses.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Proxy.Credentials">
+ <summary>
+ The credentials to submit to the proxy server for authentication.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Proxy.IfDefined">
+ <summary>
+ Indicates if the proxy should be used to connect to the external
+ resource. If <see langword="true" /> then the proxy will be used;
+ otherwise, not. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Proxy.UnlessDefined">
+ <summary>
+ Indicates if the proxy should not be used to connect to the external
+ resource. If <see langword="false" /> then the proxy will be used;
+ otherwise, not. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.RawXml">
+ <summary>
+ Represents an element of which the XML is processed by its parent task
+ or type.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.RawXml.Xml">
+ <summary>
+ Gets the XML that this element represents.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.RawXml.CustomXmlProcessing">
+ <summary>
+ Gets a value indicating whether the element is performing additional
+ processing using the <see cref="T:System.Xml.XmlNode"/> that was use to
+ initialize the element.
+ </summary>
+ <value>
+ <see langword="true"/>, as the XML that represents this build
+ element is processed by the containing task or type.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Types.Token">
+ <summary>
+ ReplaceTokens filter token.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Token.Key">
+ <summary>
+ Token to be replaced.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Token.Value">
+ <summary>
+ New value of token.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Token.IfDefined">
+ <summary>
+ Indicates if the token should be used to replace values.
+ If <see langword="true" /> then the token will be used;
+ otherwise, not. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.Token.UnlessDefined">
+ <summary>
+ Indicates if the token should not be used to replace values.
+ If <see langword="false" /> then the token will be used;
+ otherwise, not. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.XmlNamespace">
+ <summary>
+ Represents an XML namespace.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespace.Prefix">
+ <summary>
+ The prefix to associate with the namespace.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespace.Uri">
+ <summary>
+ The associated XML namespace URI.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespace.IfDefined">
+ <summary>
+ Indicates if the namespace should be added to the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ If <see langword="true"/> then the namespace will be added;
+ otherwise, skipped. The default is <see langword="true"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespace.UnlessDefined">
+ <summary>
+ Indicates if the namespace should not be added to the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ list. If <see langword="false"/> then the parameter will be
+ added; otherwise, skipped. The default is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.XmlNamespaceCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.XmlNamespace"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.#ctor(NAnt.Core.Types.XmlNamespaceCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.#ctor(NAnt.Core.Types.XmlNamespace[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Types.XmlNamespace"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.Add(NAnt.Core.Types.XmlNamespace)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.XmlNamespace"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XmlNamespace"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.AddRange(NAnt.Core.Types.XmlNamespace[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.XmlNamespace"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.XmlNamespace"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.AddRange(NAnt.Core.Types.XmlNamespaceCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.Contains(NAnt.Core.Types.XmlNamespace)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.XmlNamespace"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XmlNamespace"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.XmlNamespace"/> with the specified
+ value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Types.XmlNamespace"/> with
+ value <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.CopyTo(NAnt.Core.Types.XmlNamespace[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.IndexOf(NAnt.Core.Types.XmlNamespace)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.XmlNamespace"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XmlNamespace"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.XmlNamespace"/>. If the <see cref="T:NAnt.Core.Types.XmlNamespace"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.Insert(System.Int32,NAnt.Core.Types.XmlNamespace)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.XmlNamespace"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XmlNamespace"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.XmlNamespaceEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceCollection.Remove(NAnt.Core.Types.XmlNamespace)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XmlNamespace"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespaceCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespaceCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Types.XmlNamespace"/> with the specified prefix.
+ </summary>
+ <param name="value">The prefix of the <see cref="T:NAnt.Core.Types.XmlNamespace"/> to get.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.XmlNamespaceEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.XmlNamespace"/> elements of a <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceEnumerator.#ctor(NAnt.Core.Types.XmlNamespaceCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XmlNamespaceEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.XmlNamespaceCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XmlNamespaceEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XmlNamespaceEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.XsltExtensionObject">
+ <summary>
+ Represents an XSLT extension object. The object should have a default
+ parameterless constructor and the return value should be one of the
+ four basic XPath data types of number, string, Boolean or node set.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObject.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XsltExtensionObject"/>
+ class.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObject.NamespaceUri">
+ <summary>
+ The namespace URI to associate with the extension object.
+ </summary>
+ <value>
+ The namespace URI to associate with the extension object, or
+ <see cref="F:System.String.Empty"/> if not set.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObject.TypeName">
+ <summary>
+ The full type name of the XSLT extension object.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObject.AssemblyPath">
+ <summary>
+ The assembly which contains the XSLT extension object.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObject.IfDefined">
+ <summary>
+ Indicates if the extension object should be added to the XSLT argument
+ list. If <see langword="true" /> then the extension object will be
+ added; otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObject.UnlessDefined">
+ <summary>
+ Indicates if the extension object should not be added to the XSLT argument
+ list. If <see langword="false" /> then the extension object will be
+ added; otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.XsltExtensionObjectCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.#ctor">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.#ctor(NAnt.Core.Types.XsltExtensionObjectCollection)">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/> class with the
+ specified <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.#ctor(NAnt.Core.Types.XsltExtensionObject[])">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/> class with the
+ specified array of <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.Add(NAnt.Core.Types.XsltExtensionObject)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> to be added
+ to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.AddRange(NAnt.Core.Types.XsltExtensionObject[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> array to the
+ end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.XsltExtensionObject"/>
+ elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.AddRange(NAnt.Core.Types.XsltExtensionObjectCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/>
+ to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/>
+ to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.Contains(NAnt.Core.Types.XsltExtensionObject)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> is in the
+ collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> to locate
+ in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> with the
+ specified value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the
+ collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Types.XsltExtensionObject"/>
+ with value <paramref name="value"/> is found in the collection;
+ otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.CopyTo(NAnt.Core.Types.XsltExtensionObject[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array,
+ starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the
+ destination of the elements copied from the collection. The array
+ must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/>
+ at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.IndexOf(NAnt.Core.Types.XsltExtensionObject)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.XsltExtensionObject"/>
+ object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> object for
+ which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.XsltExtensionObject"/>. If the
+ <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> is not currently a member of the
+ collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.Insert(System.Int32,NAnt.Core.Types.XsltExtensionObject)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> into the collection at
+ the specified index.
+ </summary>
+ <param name="index">The zero-based index at which
+ <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> to
+ insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.XsltExtensionObjectEnumerator"/> for the entire
+ collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectCollection.Remove(NAnt.Core.Types.XsltExtensionObject)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> to remove
+ from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObjectCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get
+ or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObjectCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> with the specified name.
+ </summary>
+ <param name="value">The name of the <see cref="T:NAnt.Core.Types.XsltExtensionObject"/>
+ to get.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.XsltExtensionObjectEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.XsltExtensionObject"/> elements of a
+ <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectEnumerator.#ctor(NAnt.Core.Types.XsltExtensionObjectCollection)">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.Core.Types.XsltExtensionObjectEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.XsltExtensionObjectCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be
+ enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltExtensionObjectEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltExtensionObjectEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Types.XsltParameter">
+ <summary>
+ Represents an XSLT parameter.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XsltParameter"/>
+ class.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameter.ParameterName">
+ <summary>
+ The name of the XSLT parameter.
+ </summary>
+ <value>
+ The name of the XSLT parameter, or <see cref="F:System.String.Empty"/> if
+ not set.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameter.NamespaceUri">
+ <summary>
+ The namespace URI to associate with the parameter.
+ </summary>
+ <value>
+ The namespace URI to associate with the parameter, or
+ <see cref="F:System.String.Empty"/> if not set.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameter.Value">
+ <summary>
+ The value of the XSLT parameter.
+ </summary>
+ <value>
+ The value of the XSLT parameter, or <see cref="F:System.String.Empty"/> if
+ not set.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameter.IfDefined">
+ <summary>
+ Indicates if the parameter should be added to the XSLT argument list.
+ If <see langword="true" /> then the parameter will be added;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameter.UnlessDefined">
+ <summary>
+ Indicates if the parameter should not be added to the XSLT argument
+ list. If <see langword="false" /> then the parameter will be
+ added; otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Types.XsltParameterCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.Core.Types.XsltParameter"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XsltParameterCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.#ctor(NAnt.Core.Types.XsltParameterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XsltParameterCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Types.XsltParameterCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.#ctor(NAnt.Core.Types.XsltParameter[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XsltParameterCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Types.XsltParameter"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.Add(NAnt.Core.Types.XsltParameter)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Types.XsltParameter"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltParameter"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.AddRange(NAnt.Core.Types.XsltParameter[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.XsltParameter"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Types.XsltParameter"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.AddRange(NAnt.Core.Types.XsltParameterCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Types.XsltParameterCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Types.XsltParameterCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.Contains(NAnt.Core.Types.XsltParameter)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.XsltParameter"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltParameter"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Types.XsltParameter"/> with the specified
+ value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.Types.XsltParameter"/> with
+ value <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.CopyTo(NAnt.Core.Types.XsltParameter[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.IndexOf(NAnt.Core.Types.XsltParameter)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Types.XsltParameter"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltParameter"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Types.XsltParameter"/>. If the <see cref="T:NAnt.Core.Types.XsltParameter"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.Insert(System.Int32,NAnt.Core.Types.XsltParameter)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Types.XsltParameter"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltParameter"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Types.XsltParameterEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterCollection.Remove(NAnt.Core.Types.XsltParameter)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Types.XsltParameter"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameterCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameterCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Types.XsltParameter"/> with the specified name.
+ </summary>
+ <param name="value">The name of the <see cref="T:NAnt.Core.Types.XsltParameter"/> to get.</param>
+ </member>
+ <member name="T:NAnt.Core.Types.XsltParameterEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Types.XsltParameter"/> elements of a <see cref="T:NAnt.Core.Types.XsltParameterCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterEnumerator.#ctor(NAnt.Core.Types.XsltParameterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Types.XsltParameterEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Types.XsltParameterCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Types.XsltParameterEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Types.XsltParameterEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Util.AssemblyResolver">
+ <summary>
+ Resolves assemblies by caching assemblies that were loaded.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.#ctor">
+ <summary>
+ Initializes an instanse of the <see cref="T:NAnt.Core.Util.AssemblyResolver"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.#ctor(NAnt.Core.Task)">
+ <summary>
+ Initializes an instanse of the <see cref="T:NAnt.Core.Util.AssemblyResolver"/>
+ class in the context of the given <see cref="T:NAnt.Core.Task"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.Attach">
+ <summary>
+ Installs the assembly resolver by hooking up to the
+ <see cref="E:System.AppDomain.AssemblyResolve"/> event.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.Detach">
+ <summary>
+ Uninstalls the assembly resolver.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.AssemblyResolve(System.Object,System.ResolveEventArgs)">
+ <summary>
+ Resolves an assembly not found by the system using the assembly
+ cache.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="args">A <see cref="T:System.ResolveEventArgs"/> that contains the event data.</param>
+ <returns>
+ The loaded assembly, or <see langword="null"/> if not found.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.AssemblyLoad(System.Object,System.AssemblyLoadEventArgs)">
+ <summary>
+ Occurs when an assembly is loaded. The loaded assembly is added
+ to the assembly cache.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="args">An <see cref="T:System.AssemblyLoadEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.AssemblyResolver.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <remarks>
+ The actual logging is delegated to the <see cref="T:NAnt.Core.Task"/> in which
+ the <see cref="T:NAnt.Core.Util.AssemblyResolver"/> is executing
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.Util.AssemblyResolver._assemblyCache">
+ <summary>
+ Holds the loaded assemblies.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.AssemblyResolver._task">
+ <summary>
+ Holds the <see cref="T:NAnt.Core.Task"/> in which the <see cref="T:NAnt.Core.Util.AssemblyResolver"/>
+ is executing.
+ </summary>
+ <value>
+ The <see cref="T:NAnt.Core.Task"/> in which the <see cref="T:NAnt.Core.Util.AssemblyResolver"/>
+ is executing or <see langword="null"/> if the <see cref="T:NAnt.Core.Util.AssemblyResolver"/>
+ is not executing in the context of a <see cref="T:NAnt.Core.Task"/>.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineArgument">
+ <summary>
+ Represents a valid command-line argument.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgument.Finish(System.Object)">
+ <summary>
+ Sets the value of the argument on the specified object.
+ </summary>
+ <param name="destination">The object on which the value of the argument should be set.</param>
+ <exception cref="T:NAnt.Core.Util.CommandLineArgumentException">The argument is required and no value was specified.</exception>
+ <exception cref="T:System.NotSupportedException">
+ <para>
+ The matching property is collection-based, but is not initialized
+ and cannot be written to.
+ </para>
+ <para>-or-</para>
+ <para>
+ The matching property is collection-based, but has no strongly-typed
+ Add method.
+ </para>
+ <para>-or-</para>
+ <para>
+ The matching property is collection-based, but the signature of the
+ Add method is not supported.
+ </para>
+ </exception>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgument.SetValue(System.String)">
+ <summary>
+ Assigns the specified value to the argument.
+ </summary>
+ <param name="value">The value that should be assigned to the argument.</param>
+ <exception cref="T:NAnt.Core.Util.CommandLineArgumentException">
+ <para>Duplicate argument.</para>
+ <para>-or-</para>
+ <para>Invalid value.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgument.IsNameValueCollectionType(System.Type)">
+ <summary>
+ Indicates whether the specified <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> is a
+ <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
+ </summary>
+ <value>
+ <see langword="true"/> if <paramref name="type"/> can be assigned
+ to <see cref="T:System.Collections.Specialized.NameValueCollection"/>; otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgument.IsCollectionType(System.Type)">
+ <summary>
+ Indicates whether the specified <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> is collection-based.
+ </summary>
+ <value>
+ <see langword="true"/> if <paramref name="type"/> can be assigned
+ to <see cref="T:System.Collections.ICollection"/> and is not backed by a <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/>
+ that can be assigned to <see cref="T:System.Collections.Specialized.NameValueCollection"/>;
+ otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgument.IsArrayType(System.Type)">
+ <summary>
+ Indicates whether the specified <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> is an array.
+ </summary>
+ <value>
+ <see langword="true"/> if <paramref name="type"/> is an array;
+ otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.Property">
+ <summary>
+ Gets the property that backs the argument.
+ </summary>
+ <value>
+ The property that backs the arguments.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.ValueType">
+ <summary>
+ Gets the underlying <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> of the argument.
+ </summary>
+ <value>
+ The underlying <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> of the argument.
+ </value>
+ <remarks>
+ If the <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> of the argument is a collection type,
+ this property will returns the underlying type of that collection.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.LongName">
+ <summary>
+ Gets the long name of the argument.
+ </summary>
+ <value>The long name of the argument.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.ShortName">
+ <summary>
+ Gets the short name of the argument.
+ </summary>
+ <value>The short name of the argument.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.Description">
+ <summary>
+ Gets the description of the argument.
+ </summary>
+ <value>The description of the argument.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.IsRequired">
+ <summary>
+ Gets a value indicating whether the argument is required.
+ </summary>
+ <value>
+ <see langword="true" /> if the argument is required; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.SeenValue">
+ <summary>
+ Gets a value indicating whether a mathing command-line argument
+ was already found.
+ </summary>
+ <value>
+ <see langword="true" /> if a matching command-line argument was
+ already found; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.AllowMultiple">
+ <summary>
+ Gets a value indicating whether the argument can be specified multiple
+ times.
+ </summary>
+ <value>
+ <see langword="true" /> if the argument may be specified multiple
+ times; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.Unique">
+ <summary>
+ Gets a value indicating whether the argument can only be specified once
+ with a certain value.
+ </summary>
+ <value>
+ <see langword="true" /> if the argument should always have a unique
+ value; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.Type">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> of the property to which the argument
+ is applied.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> of the property to which the argument is
+ applied.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.IsCollection">
+ <summary>
+ Gets a value indicating whether the argument is collection-based.
+ </summary>
+ <value>
+ <see langword="true"/> if the argument is backed by a <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/>
+ that can be assigned to <see cref="T:System.Collections.ICollection"/> and is not backed
+ by a <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/> that can be assigned to
+ <see cref="T:System.Collections.Specialized.NameValueCollection"/>; otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.IsNameValueCollection">
+ <summary>
+ Gets a value indicating whether the argument is a set of name/value
+ pairs.
+ </summary>
+ <value>
+ <see langword="true"/> if the argument is backed by a <see cref="P:NAnt.Core.Util.CommandLineArgument.Type"/>
+ that can be assigned to <see cref="T:System.Collections.Specialized.NameValueCollection"/>; otherwise,
+ <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.IsArray">
+ <summary>
+ Gets a value indicating whether the argument is array-based.
+ </summary>
+ <value>
+ <see langword="true" /> if the argument is backed by an array;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.IsDefault">
+ <summary>
+ Gets a value indicating whether the argument is the default argument.
+ </summary>
+ <value>
+ <see langword="true" /> if the argument is the default argument;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgument.IsExclusive">
+ <summary>
+ Gets a value indicating whether the argument cannot be combined with
+ other arguments.
+ </summary>
+ <value>
+ <see langword="true" /> if the argument cannot be combined with other
+ arguments; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineArgumentAttribute">
+ <summary>
+ Allows control of command line parsing.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentAttribute.#ctor(NAnt.Core.Util.CommandLineArgumentTypes)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentAttribute"/> class
+ with the specified argument type.
+ </summary>
+ <param name="argumentType">Specifies the checking to be done on the argument.</param>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentAttribute.Type">
+ <summary>
+ Gets or sets the checking to be done on the argument.
+ </summary>
+ <value>The checking that should be done on the argument.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentAttribute.Name">
+ <summary>
+ Gets or sets the long name of the argument.
+ </summary>
+ <value>The long name of the argument.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentAttribute.ShortName">
+ <summary>
+ Gets or sets the short name of the argument.
+ </summary>
+ <value>The short name of the argument.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentAttribute.Description">
+ <summary>
+ Gets or sets the description of the argument.
+ </summary>
+ <value>The description of the argument.</value>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineArgumentCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.Core.Util.CommandLineArgument"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.#ctor(NAnt.Core.Util.CommandLineArgumentCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/> class
+ with the specified <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.#ctor(NAnt.Core.Util.CommandLineArgument[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.Util.CommandLineArgument"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.Add(NAnt.Core.Util.CommandLineArgument)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.Util.CommandLineArgument"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Util.CommandLineArgument"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.AddRange(NAnt.Core.Util.CommandLineArgument[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Util.CommandLineArgument"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.Util.CommandLineArgument"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.AddRange(NAnt.Core.Util.CommandLineArgumentCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.Contains(NAnt.Core.Util.CommandLineArgument)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.Util.CommandLineArgument"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Util.CommandLineArgument"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.CopyTo(NAnt.Core.Util.CommandLineArgument[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.IndexOf(NAnt.Core.Util.CommandLineArgument)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.Util.CommandLineArgument"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Util.CommandLineArgument"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.Util.CommandLineArgument"/>. If the <see cref="T:NAnt.Core.Util.CommandLineArgument"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.Insert(System.Int32,NAnt.Core.Util.CommandLineArgument)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.Util.CommandLineArgument"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.Util.CommandLineArgument"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.Util.CommandLineArgumentEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentCollection.Remove(NAnt.Core.Util.CommandLineArgument)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.Util.CommandLineArgument"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Util.CommandLineArgument"/> with the specified name.
+ </summary>
+ <param name="name">The name of the <see cref="T:NAnt.Core.Util.CommandLineArgument"/> to get.</param>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineArgumentEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.Util.CommandLineArgument"/> elements of a <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentEnumerator.#ctor(NAnt.Core.Util.CommandLineArgumentCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.Util.CommandLineArgumentCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineArgumentEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineArgumentException">
+ <summary>
+ The exception that is thrown when one of the command-line arguments provided
+ is not valid.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentException"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentException"/> class
+ with a descriptive message.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentException"/> class
+ with a descriptive message and an inner exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="innerException">A nested exception that is the cause of the current exception.</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineArgumentException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentException"/> class
+ with serialized data.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineArgumentTypes">
+ <summary>
+ Used to control parsing of command-line arguments.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.CommandLineArgumentTypes.Required">
+ <summary>
+ Indicates that this field is required. An error will be displayed
+ if it is not present when parsing arguments.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.CommandLineArgumentTypes.Unique">
+ <summary>
+ Only valid in conjunction with Multiple.
+ Duplicate values will result in an error.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.CommandLineArgumentTypes.Multiple">
+ <summary>
+ Inidicates that the argument may be specified more than once.
+ Only valid if the argument is a collection
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.CommandLineArgumentTypes.Exclusive">
+ <summary>
+ Inidicates that if this argument is specified, no other arguments may be specified.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.CommandLineArgumentTypes.AtMostOnce">
+ <summary>
+ The default type for non-collection arguments.
+ The argument is not required, but an error will be reported if it is specified more than once.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.CommandLineArgumentTypes.MultipleUnique">
+ <summary>
+ The default type for collection arguments.
+ The argument is permitted to occur multiple times, but duplicate
+ values will cause an error to be reported.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Util.CommandLineParser">
+ <summary>
+ Commandline parser.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineParser.#ctor(System.Type,System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineParser"/> class
+ using possible arguments deducted from the specific <see cref="T:System.Type"/>.
+ </summary>
+ <param name="argumentSpecification">The <see cref="T:System.Type"/> from which the possible command-line arguments should be retrieved.</param>
+ <param name="supportsResponseFile">A <see cref="T:System.Boolean"/> value indicating whether or not a response file is able to be used. </param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="argumentSpecification"/> is a null reference.</exception>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineParser.Parse(System.String[],System.Object)">
+ <summary>
+ Parses an argument list.
+ </summary>
+ <param name="args">The arguments to parse.</param>
+ <param name="destination">The destination object on which properties will be set corresponding to the specified arguments.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="destination"/> is a null reference.</exception>
+ <exception cref="T:System.ArgumentException">The <see cref="T:System.Type"/> of <paramref name="destination"/> does not match the argument specification that was used to initialize the parser.</exception>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineParser.ParseArguments(System.String,System.Char[])">
+ <summary>
+ Splits a string and removes any empty strings from the
+ result. Same functionality as the
+ public string[] Split(char[] separator, StringSplitOptions options)
+ method in .Net 2.0. Replace with that call when 2.0 is standard.
+ </summary>
+ <param name="sourceString"></param>
+ <param name="delimiters"></param>
+ <returns>the array of strings</returns>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineParser.ProcessResponseFile(System.String)">
+ <summary>
+ Read a response file and parse the arguments as usual.
+ </summary>
+ <param name="file">The response file to load arguments</param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineParser.ParseArgumentList(System.String[])">
+ <summary>
+ Parse the argument list using the
+ </summary>
+ <param name="args"></param>
+ </member>
+ <member name="M:NAnt.Core.Util.CommandLineParser.GetCommandLineAttribute(System.Reflection.PropertyInfo)">
+ <summary>
+ Returns the <see cref="T:NAnt.Core.Util.CommandLineArgumentAttribute"/> that's applied
+ on the specified property.
+ </summary>
+ <param name="propertyInfo">The property of which applied <see cref="T:NAnt.Core.Util.CommandLineArgumentAttribute"/> should be returned.</param>
+ <returns>
+ The <see cref="T:NAnt.Core.Util.CommandLineArgumentAttribute"/> that's applied to the
+ <paramref name="propertyInfo"/>, or a null reference if none was applied.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineParser.LogoBanner">
+ <summary>
+ Gets a logo banner using version and copyright attributes defined on the
+ <see cref="M:System.Reflection.Assembly.GetEntryAssembly"/> or the
+ <see cref="M:System.Reflection.Assembly.GetCallingAssembly"/>.
+ </summary>
+ <value>
+ A logo banner.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineParser.Usage">
+ <summary>
+ Gets the usage instructions.
+ </summary>
+ <value>The usage instructions.</value>
+ </member>
+ <member name="P:NAnt.Core.Util.CommandLineParser.NoArgs">
+ <summary>
+ Gets a value indicating whether no arguments were specified on the
+ command line.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Util.DefaultCommandLineArgumentAttribute">
+ <summary>
+ Marks a command-line option as being the default option. When the name of
+ a command-line argument is not specified, this option will be assumed.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.DefaultCommandLineArgumentAttribute.#ctor(NAnt.Core.Util.CommandLineArgumentTypes)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.CommandLineArgumentAttribute"/> class
+ with the specified argument type.
+ </summary>
+ <param name="argumentType">Specifies the checking to be done on the argument.</param>
+ </member>
+ <member name="T:NAnt.Core.Util.FileUtils">
+ <summary>
+ Provides modified version for Copy and Move from the File class that
+ allow for filter chain processing.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.FileUtils._bufferSize">
+ <summary>
+ Constant buffer size for copy/move functions.
+ </summary>
+ <remarks>Default value is 8k</remarks>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.CopyFile(System.String,System.String,NAnt.Core.Filters.FilterChain,System.Text.Encoding,System.Text.Encoding)">
+ <summary>
+ Copies a file filtering its content through the filter chain.
+ </summary>
+ <param name="sourceFileName">
+ The file to copy
+ </param>
+ <param name="destFileName">
+ The file to copy to
+ </param>
+ <param name="filterChain">
+ Chain of filters to apply when copying, or <see langword="null" /> is no
+ filters should be applied.
+ </param>
+ <param name="inputEncoding">
+ The encoding used to read the soure file.
+ </param>
+ <param name="outputEncoding">
+ The encoding used to write the destination file.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.MoveFile(System.String,System.String,NAnt.Core.Filters.FilterChain,System.Text.Encoding,System.Text.Encoding)">
+ <summary>
+ Moves a file filtering its content through the filter chain.
+ </summary>
+ <param name="sourceFileName">
+ The file to move.
+ </param>
+ <param name="destFileName">
+ The file to move move to.
+ </param>
+ <param name="filterChain">
+ Chain of filters to apply when moving, or <see langword="null" /> is no
+ filters should be applied.
+ </param>
+ <param name="inputEncoding">
+ The encoding used to read the soure file.
+ </param>
+ <param name="outputEncoding">
+ The encoding used to write the destination file.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.CopyDirectory(System.String,System.String,NAnt.Core.Filters.FilterChain,System.Text.Encoding,System.Text.Encoding)">
+ <summary>
+ Copies a directory while filtering its file content through the filter chain.
+ </summary>
+ <param name="sourceDirectory">
+ Source directory to copy from.
+ </param>
+ <param name="destDirectory">
+ Destination directory to copy to.
+ </param>
+ <param name="filterChain">
+ Chain of filters to apply when copying, or <see langword="null" /> is no
+ filters should be applied.
+ </param>
+ <param name="inputEncoding">
+ The encoding used to read the soure file.
+ </param>
+ <param name="outputEncoding">
+ The encoding used to write the destination file.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.MoveDirectory(System.String,System.String,NAnt.Core.Filters.FilterChain,System.Text.Encoding,System.Text.Encoding)">
+ <summary>
+ Moves a directory while filtering its file content through the filter chain.
+ </summary>
+ <param name="sourceDirectory">
+ Source directory to move from.
+ </param>
+ <param name="destDirectory">
+ Destination directory to move to.
+ </param>
+ <param name="filterChain">
+ Chain of filters to apply when copying, or <see langword="null" /> is no
+ filters should be applied.
+ </param>
+ <param name="inputEncoding">
+ The encoding used to read the soure file.
+ </param>
+ <param name="outputEncoding">
+ The encoding used to write the destination file.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.GetTempDirectoryName">
+ <summary>
+ Generates a new temporary directory name based on the system's
+ temporary path.
+ </summary>
+ <returns>
+ The temp directory name.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.ReadFile(System.String,NAnt.Core.Filters.FilterChain,System.Text.Encoding)">
+ <summary>
+ Reads a file filtering its content through the filter chain.
+ </summary>
+ <param name="fileName">The file to read.</param>
+ <param name="filterChain">Chain of filters to apply when reading, or <see langword="null" /> is no filters should be applied.</param>
+ <param name="inputEncoding">The encoding used to read the file.</param>
+ <remarks>
+ If <paramref name="inputEncoding" /> is <see langword="null" />,
+ then the system's ANSI code page will be used to read the file.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.GetTempDirectory">
+ <summary>
+ Returns a uniquely named empty temporary directory on disk.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.DirectoryInfo"/> representing the temporary directory.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.CombinePaths(System.String,System.String)">
+ <summary>
+ Combines two path strings.
+ </summary>
+ <param name="path1">The first path.</param>
+ <param name="path2">The second path.</param>
+ <returns>
+ A string containing the combined paths. If one of the specified
+ paths is a zero-length string, this method returns the other path.
+ If <paramref name="path2"/> contains an absolute path, this method
+ returns <paramref name="path2"/>.
+ </returns>
+ <remarks>
+ <para>On *nix, processing is delegated to <see cref="M:System.IO.Path.Combine(System.String,System.String)"/>.</para>
+ <para>
+ On Windows, this method normalized the paths to avoid running into
+ the 260 character limit of a path and converts forward slashes in
+ both <paramref name="path1"/> and <paramref name="path2"/> to
+ the platform's directory separator character.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.GetFullPath(System.String)">
+ <summary>
+ Returns Absolute Path (Fix for 260 Char Limit of Path.GetFullPath(...))
+ </summary>
+ <param name="path">The file or directory for which to obtain absolute path information.</param>
+ <returns>Path Resolved</returns>
+ <exception cref="T:System.ArgumentException">path is a zero-length string, contains only white space or contains one or more invalid characters as defined by <see cref="F:System.IO.Path.InvalidPathChars"/>.</exception>
+ <exception cref="T:System.ArgumentNullException"><paramref name="path"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.GetHomeDirectory">
+ <summary>
+ Returns the home directory of the current user.
+ </summary>
+ <returns>
+ The home directory of the current user.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.FileUtils.ResolveFile(System.String[],System.String,System.Boolean)">
+ <summary>
+ Scans a list of directories for the specified filename.
+ </summary>
+ <param name="directories">The list of directories to search.</param>
+ <param name="fileName">The name of the file to look for.</param>
+ <param name="recursive">Specifies whether the directory should be searched recursively.</param>
+ <remarks>
+ The directories are scanned in the order in which they are defined.
+ </remarks>
+ <returns>
+ The absolute path to the specified file, or null if the file was
+ not found.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Util.GacCache">
+ <summary>
+ Helper class for determining whether assemblies are located in the
+ Global Assembly Cache.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.GacCache.#ctor(NAnt.Core.Project)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.GacCache"/> class in
+ the context of the given <see cref="P:NAnt.Core.Util.GacCache.Project"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.GacCache.IsAssemblyInGac(System.String)">
+ <summary>
+ Determines whether an assembly is installed in the Global
+ Assembly Cache given its file name or path.
+ </summary>
+ <param name="assemblyFile">The name or path of the file that contains the manifest of the assembly.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="assemblyFile"/> is
+ installed in the Global Assembly Cache; otherwise,
+ <see langword="false"/>.
+ </returns>
+ <remarks>
+ <para>
+ To determine whether the specified assembly is installed in the
+ Global Assembly Cache, the assembly is loaded into a separate
+ <see cref="T:System.AppDomain"/>.
+ </para>
+ <para>
+ If the family of the current runtime framework does not match the
+ family of the current target framework, this method will return
+ <see langword="false"/> for all assemblies as there's no way to
+ determine whether a given assembly is in the Global Assembly Cache
+ for another framework family than the family of the current runtime
+ framework.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.Util.GacCache._domain">
+ <summary>
+ Holds the <see cref="T:System.AppDomain"/> in which assemblies will be loaded
+ to determine whether they are in the Global Assembly Cache.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.GacCache._project">
+ <summary>
+ Holds the <see cref="P:NAnt.Core.Util.GacCache.Project"/> context of the <see cref="T:NAnt.Core.Util.GacCache"/>.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Util.GacCache._gacQueryCache">
+ <summary>
+ Holds a list of assembly files for which already has been determined
+ whether they are located in the Global Assembly Cache.
+ </summary>
+ <remarks>
+ <para>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the full path to the
+ assembly file and the value is a <see cref="T:System.Boolean"/> indicating
+ whether the assembly is located in the Global Assembly Cache.
+ </para>
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.Util.GacCache._disposed">
+ <summary>
+ Holds a value indicating whether the object has been disposed.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Util.GacCache.Project">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.Util.GacCache.Project"/> context of the <see cref="T:NAnt.Core.Util.GacCache"/>.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.Util.GacCache.Project"/> context of the <see cref="T:NAnt.Core.Util.GacCache"/>.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Util.GacCache.GacResolver.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for
+ this instance.
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease"/> used to control the lifetime
+ policy for this instance. This is the current lifetime service object
+ for this instance if one exists; otherwise, a new lifetime service
+ object initialized with a lease that will never time out.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.GacCache.GacResolver.IsAssemblyInGac(System.String)">
+ <summary>
+ Determines whether an assembly is installed in the Global
+ Assembly Cache given its file name or path.
+ </summary>
+ <param name="assemblyFile">The name or path of the file that contains the manifest of the assembly.</param>
+ <returns>
+ <see langword="true" /> if <paramref name="assemblyFile" /> is
+ installed in the Global Assembly Cache; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Util.ReflectionUtils">
+ <summary>
+ Provides a set of helper methods related to reflection.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.ReflectionUtils.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.ReflectionUtils"/> class.
+ </summary>
+ <remarks>
+ Uses a private access modifier to prevent instantiation of this class.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Util.ReflectionUtils.GetTypeFromString(System.String,System.Boolean)">
+ <summary>
+ Loads the type specified in the type string with assembly qualified name.
+ </summary>
+ <param name="typeName">The assembly qualified name of the type to load.</param>
+ <param name="throwOnError">Flag set to <see langword="true"/> to throw an exception if the type cannot be loaded.</param>
+ <exception cref="T:System.TypeLoadException">
+ <paramref name="throwOnError"/> is <see langword="true"/> and
+ an error is encountered while loading the <see cref="T:System.Type"/>, or
+ <paramref name="typeName"/> is not an assembly qualified name.
+ </exception>
+ <remarks>
+ If the <see cref="T:System.Type"/> cannot be instantiated from the assembly
+ qualified type name, then we'll try to instantiate the type using its
+ simple type name from an already loaded assembly with an assembly
+ name mathing the assembly in the assembly qualified type name.
+ </remarks>
+ <returns>
+ The type loaded or <see langword="null"/> if it could not be loaded.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.Util.ResourceUtils">
+ <summary>
+ Provides resource support to NAnt assemblies. This class cannot
+ be inherited from.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.#ctor">
+ <summary>
+ Prevents the <see cref="T:NAnt.Core.Util.ResourceUtils"/> class from being
+ instantiated explicitly.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.RegisterSharedAssembly(System.Reflection.Assembly)">
+ <summary>
+ Registers the assembly to be used as the fallback if resources
+ aren't found in the local satellite assembly.
+ </summary>
+ <param name="assembly">
+ A <see cref="T:System.Reflection.Assembly" /> that represents the
+ assembly to register.
+ </param>
+ <example>
+ The following example shows how to register a shared satellite
+ assembly.
+ <code>
+ <![CDATA[
+ Assembly sharedAssembly = Assembly.Load("MyResources.dll");
+ ResourceUtils.RegisterSharedAssembly(sharedAssembly);
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.GetString(System.String)">
+ <summary>
+ Returns the value of the specified string resource.
+ </summary>
+ <param name="name">
+ A <see cref="T:System.String" /> that contains the name of the
+ resource to get.
+ </param>
+ <returns>
+ A <see cref="T:System.String" /> that contains the value of the
+ resource localized for the current culture.
+ </returns>
+ <remarks>
+ The returned resource is localized for the cultural settings of the
+ current <see cref="T:System.Threading.Thread" />.
+ <note>
+ The <c>GetString</c> method is thread-safe.
+ </note>
+ </remarks>
+ <example>
+ The following example demonstrates the <c>GetString</c> method using
+ the cultural settings of the current <see cref="T:System.Threading.Thread" />.
+ <code>
+ <![CDATA[
+ string localizedString = ResourceUtils.GetString("String_HelloWorld");
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.GetString(System.String,System.Globalization.CultureInfo)">
+ <summary>
+ Returns the value of the specified string resource localized for
+ the specified culture.
+ </summary>
+ <param name="name"></param>
+ <param name="culture"></param>
+ <returns>
+ A <see cref="T:System.String" /> that contains the value of the
+ resource localized for the specified culture.
+ </returns>
+ <remarks>
+ <note>
+ The <c>GetString</c> method is thread-safe.
+ </note>
+ </remarks>
+ <example>
+ The following example demonstrates the <c>GetString</c> method using
+ a specific culture.
+ <code>
+ <![CDATA[
+ CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
+ string localizedString = ResourceUtils.GetString("String_HelloWorld", culture);
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.GetString(System.String,System.Globalization.CultureInfo,System.Reflection.Assembly)">
+ <summary>
+ Returns the value of the specified string resource localized for
+ the specified culture for the specified assembly.
+ </summary>
+ <param name="name">
+ A <see cref="T:System.String" /> that contains the name of the
+ resource to get.
+ </param>
+ <param name="culture">
+ A <see cref="T:System.Globalization.CultureInfo" /> that represents
+ the culture for which the resource is localized.
+ </param>
+ <param name="assembly">
+ A <see cref="T:System.Reflection.Assembly" />
+ </param>
+ <returns>
+ A <see cref="T:System.String" /> that contains the value of the
+ resource localized for the specified culture.
+ </returns>
+ <remarks>
+ <note>
+ The <c>GetString</c> method is thread-safe.
+ </note>
+ </remarks>
+ <example>
+ The following example demonstrates the <c>GetString</c> method using
+ specific culture and assembly.
+ <code>
+ <![CDATA[
+ CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
+ Assembly assembly = Assembly.GetCallingAssembly();
+ string localizedString = ResourceUtils.GetString("String_HelloWorld", culture, assembly);
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.RegisterAssembly(System.Reflection.Assembly)">
+ <summary>
+ Registers the specified assembly.
+ </summary>
+ <param name="assembly">
+ A <see cref="T:System.Reflection.Assembly" /> that represents the
+ assembly to register.
+ </param>
+ </member>
+ <member name="M:NAnt.Core.Util.ResourceUtils.GetResourceName(System.String)">
+ <summary>
+ Determines the manifest resource name of the resource holding the
+ localized strings.
+ </summary>
+ <param name="assemblyName">The name of the assembly.</param>
+ <returns>
+ The manifest resource name of the resource holding the localized
+ strings for the specified assembly.
+ </returns>
+ <remarks>
+ The manifest resource name of the resource holding the localized
+ strings should match the name of the assembly, minus <c>Tasks</c>
+ suffix.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.Util.StringUtils">
+ <summary>
+ Groups a set of useful <see cref="T:System.String"/> manipulation and validation
+ methods.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Util.StringUtils"/> class.
+ </summary>
+ <remarks>
+ Prevents instantiation of the <see cref="T:NAnt.Core.Util.StringUtils"/> class.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.EndsWith(System.String,System.Char)">
+ <summary>
+ Determines whether the last character of the given <see cref="T:System.String"/>
+ matches the specified character.
+ </summary>
+ <param name="value">The string.</param>
+ <param name="c">The character.</param>
+ <returns>
+ <see langword="true"/> if the last character of <paramref name="value"/>
+ matches <paramref name="c"/>; otherwise, <see langword="false"/>.
+ </returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="value"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.IsNullOrEmpty(System.String)">
+ <summary>
+ Indicates whether or not the specified <see cref="T:System.String"/> is
+ <see langword="null"/> or an <see cref="F:System.String.Empty"/> string.
+ </summary>
+ <param name="value">The value to check.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is <see langword="null"/>
+ or an empty string (""); otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.ConvertEmptyToNull(System.String)">
+ <summary>
+ Converts an empty string ("") to <see langword="null" />.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>
+ <see langword="null" /> if <paramref name="value" /> is an empty
+ string ("") or <see langword="null" />; otherwise, <paramref name="value" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.ConvertNullToEmpty(System.String)">
+ <summary>
+ Converts <see langword="null" /> to an empty string.
+ </summary>
+ <param name="value">The value to convert.</param>
+ <returns>
+ An empty string if <paramref name="value" /> is <see langword="null" />;
+ otherwise, <paramref name="value" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.Join(System.String,System.Collections.Specialized.StringCollection)">
+ <summary>
+ Concatenates a specified separator <see cref="T:System.String"/> between each
+ element of a specified <see cref="T:System.Collections.Specialized.StringCollection"/>, yielding a
+ single concatenated string.
+ </summary>
+ <param name="separator">A <see cref="T:System.String"/>.</param>
+ <param name="value">A <see cref="T:System.Collections.Specialized.StringCollection"/>.</param>
+ <returns>
+ A <see cref="T:System.String"/> consisting of the elements of <paramref name="value"/>
+ interspersed with the separator string.
+ </returns>
+ <remarks>
+ <para>
+ For example if <paramref name="separator"/> is ", " and the elements
+ of <paramref name="value"/> are "apple", "orange", "grape", and "pear",
+ <see cref="M:NAnt.Core.Util.StringUtils.Join(System.String,System.Collections.Specialized.StringCollection)"/> returns "apple, orange,
+ grape, pear".
+ </para>
+ <para>
+ If <paramref name="separator"/> is <see langword="null"/>, an empty
+ string (<see cref="F:System.String.Empty"/>) is used instead.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Util.StringUtils.Clone(System.Collections.Specialized.StringCollection)">
+ <summary>
+ Creates a shallow copy of the specified <see cref="T:System.Collections.Specialized.StringCollection"/>.
+ </summary>
+ <param name="stringCollection">The <see cref="T:System.Collections.Specialized.StringCollection"/> that should be copied.</param>
+ <returns>
+ A shallow copy of the specified <see cref="T:System.Collections.Specialized.StringCollection"/>.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.BuildException">
+ <summary>
+ Thrown whenever an error occurs during the build.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.BuildException._location">
+ <summary>
+ The location of the exception in the build document (xml file).
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildException"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildException"/> class
+ with a descriptive message.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildException"/> class
+ with the specified descriptive message and inner exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="innerException">A nested exception that is the cause of the current exception.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildException.#ctor(System.String,NAnt.Core.Location)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildException"/> class
+ with a descriptive message and the location in the build file that
+ caused the exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="location">The location in the build file where the exception occured.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildException.#ctor(System.String,NAnt.Core.Location,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildException"/> class
+ with a descriptive message, the location in the build file and an
+ instance of the exception that is the cause of the current exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="location">The location in the build file where the exception occured.</param>
+ <param name="innerException">A nested exception that is the cause of the current exception.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildException"/> class
+ with serialized data.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Serializes this object into the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> provided.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
+ <param name="context">The destination for this serialization.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildException.ToString">
+ <summary>
+ Creates and returns a string representation of the current
+ exception.
+ </summary>
+ <returns>
+ A string representation of the current exception.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.BuildException.RawMessage">
+ <summary>
+ Gets the raw message as specified when the exception was
+ constructed.
+ </summary>
+ <value>
+ The raw message as specified when the exception was
+ constructed.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildException.Location">
+ <summary>
+ Gets the location in the build file of the element from which the
+ exception originated.
+ </summary>
+ <value>
+ The location in the build file of the element from which the
+ exception originated.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildException.Message">
+ <summary>
+ Gets a message that describes the current exception.
+ </summary>
+ <value>
+ The error message that explains the reason for the exception.
+ </value>
+ <remarks>
+ Adds location information to the message, if available.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.CommandLineOptions">
+ <summary>
+ Represents the set of command-line options supported by NAnt.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.TargetFramework">
+ <summary>
+ Gets or sets the target framework to use (overrides
+ NAnt.exe.config settings)
+ </summary>
+ <value>
+ The framework that should be used.
+ </value>
+ <remarks>
+ For a list of possible frameworks, see NAnt.exe.config, possible
+ values include "net-1.0", "net-1.1", etc.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.DefaultFramework">
+ <summary>
+ Gets or sets the target framework to use (overrides
+ NAnt.exe.config settings)
+ </summary>
+ <value>
+ The framework that should be used.
+ </value>
+ <remarks>
+ For a list of possible frameworks, see NAnt.exe.config, possible
+ values include "net-1.0", "net-1.1", etc.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.BuildFile">
+ <summary>
+ Gets or sets the buildfile that should be executed.
+ </summary>
+ <value>
+ The buildfile that should be executed.
+ </value>
+ <remarks>
+ Can be both a file or an URI.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Pause">
+ <summary>
+ Pauses before program ends.
+ </summary>
+ <value>
+ <see langword="true" /> for pausing on program end;
+ otherwise, <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Verbose">
+ <summary>
+ Gets or sets a value indicating whether more information should be
+ displayed during the build process.
+ </summary>
+ <value>
+ <see langword="true" /> if more information should be displayed;
+ otherwise, <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Debug">
+ <summary>
+ Gets or sets a value indicating whether debug information should be
+ displayed during the build process.
+ </summary>
+ <value>
+ <see langword="true" /> if debug information should be displayed;
+ otherwise, <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Quiet">
+ <summary>
+ Gets or sets a value indicating whether only error and debug debug messages should be
+ displayed during the build process.
+ </summary>
+ <value>
+ <see langword="true" /> if only error or warning messages should be
+ displayed; otherwise, <see langword="false" />. The default is
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.EmacsMode">
+ <summary>
+ Gets or sets a value indicating whether to produce emacs (and other
+ editor) friendly output.
+ </summary>
+ <value>
+ <see langword="true" /> if output is to be unadorned so that emacs
+ and other editors can parse files names, etc. The default is
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.FindInParent">
+ <summary>
+ Gets a value indicating whether parent directories should be searched
+ for a buildfile.
+ </summary>
+ <value>
+ <see langword="true" /> if parent directories should be searched for
+ a build file; otherwise, <see langword="false" />. The default is
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.IndentationLevel">
+ <summary>
+ Gets or sets the indentation level of the build output.
+ </summary>
+ <value>
+ The indentation level of the build output. The default is <c>0</c>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Properties">
+ <summary>
+ Gets or sets the list of properties that should be set.
+ </summary>
+ <value>
+ The list of properties that should be set.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.LoggerType">
+ <summary>
+ Gets or sets the <see cref="T:System.Type"/> of logger to add to the list
+ of listeners.
+ </summary>
+ <value>
+ The <see cref="T:System.Type"/> of logger to add to the list of
+ listeners.
+ </value>
+ <remarks>
+ The <see cref="P:NAnt.Core.CommandLineOptions.LoggerType"/> should derive from <see cref="T:NAnt.Core.IBuildLogger"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.LogFile">
+ <summary>
+ Gets or sets the name of the file to log output to.
+ </summary>
+ <value>
+ The name of the file to log output to.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Listeners">
+ <summary>
+ Gets a collection containing fully qualified type names of classes
+ implementating <see cref="T:NAnt.Core.IBuildListener"/> that should be added
+ to the project as listeners.
+ </summary>
+ <value>
+ A collection of fully qualified type names that should be added as
+ listeners to the <see cref="T:NAnt.Core.Project"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.ExtensionAssemblies">
+ <summary>
+ Gets a collection of assemblies to load extensions from.
+ </summary>
+ <value>
+ A collection of assemblies to load extensions from.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.ShowProjectHelp">
+ <summary>
+ Gets or sets a value indicating whether <see cref="T:NAnt.Core.Project"/> help
+ should be printed.
+ </summary>
+ <value>
+ <see langword="true"/> if <see cref="T:NAnt.Core.Project"/> help should be
+ printed; otherwise, <see langword="false"/>. The default is
+ <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.NoLogo">
+ <summary>
+ Gets or sets a value indicating whether the logo banner should be
+ printed.
+ </summary>
+ <value>
+ <see langword="true" /> if the logo banner should be printed; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.ShowHelp">
+ <summary>
+ Gets or sets a value indicating whether the NAnt help should be
+ printed.
+ </summary>
+ <value>
+ <see langword="true" /> if NAnt help should be printed; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.CommandLineOptions.Targets">
+ <summary>
+ Gets a collection containing the targets that should be executed.
+ </summary>
+ <value>
+ A collection that contains the targets that should be executed.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.ConfigurationSection">
+ <summary>
+ Custom configuration section handler for the <nantsettings/> element.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ConfigurationSection.Create(System.Object,System.Object,System.Xml.XmlNode)">
+ <summary>
+ This just passed things through. Return the node read from the config file.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.ConsoleDriver">
+ <summary>
+ Main entry point to NAnt that is called by the ConsoleStub.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.Main(System.String[])">
+ <summary>
+ Starts NAnt. This is the Main entry point.
+ </summary>
+ <param name="args">Command Line args, or whatever you want to pass it. They will treated as Command Line args.</param>
+ <returns>
+ The exit code.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.ShowProjectHelp(System.Xml.XmlDocument)">
+ <summary>
+ Prints the projecthelp to the console.
+ </summary>
+ <param name="buildDoc">The build file to show help for.</param>
+ <remarks>
+ <paramref name="buildDoc" /> is loaded and transformed with
+ <c>ProjectHelp.xslt</c>, which is an embedded resource.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.GetBuildFileName(System.String,System.String,System.Boolean)">
+ <summary>
+ Gets the file name for the build file in the specified directory.
+ </summary>
+ <param name="directory">The directory to look for a build file. When in doubt use Environment.CurrentDirectory for directory.</param>
+ <param name="searchPattern">Look for a build file with this pattern or name. If null look for a file that matches the default build pattern (*.build).</param>
+ <param name="findInParent">Whether or not to search the parent directories for a build file.</param>
+ <returns>The path to the build file or <c>null</c> if no build file could be found.</returns>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.LoadExtensionAssemblies(System.Collections.Specialized.StringCollection,NAnt.Core.Project)">
+ <summary>
+ Loads the extension assemblies in the current <see cref="T:System.AppDomain"/>
+ and scans them for extensions.
+ </summary>
+ <param name="extensionAssemblies">The extension assemblies to load.</param>
+ <param name="project">The <see cref="T:NAnt.Core.Project"/> which will be used to output messages to the build log.</param>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.CreateLogger(System.String)">
+ <summary>
+ Dynamically constructs an <see cref="T:NAnt.Core.IBuildLogger"/> instance of
+ the class specified.
+ </summary>
+ <remarks>
+ <para>
+ At this point, only looks in the assembly where <see cref="T:NAnt.Core.IBuildLogger"/>
+ is defined.
+ </para>
+ </remarks>
+ <param name="typeName">The fully qualified name of the logger that should be instantiated.</param>
+ <exception cref="T:System.TypeLoadException">Type <paramref name="typeName"/> could not be loaded.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="typeName"/> does not implement <see cref="T:NAnt.Core.IBuildLogger"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.CreateListener(System.String)">
+ <summary>
+ Dynamically constructs an <see cref="T:NAnt.Core.IBuildListener"/> instance of
+ the class specified.
+ </summary>
+ <remarks>
+ <para>
+ At this point, only looks in the assembly where <see cref="T:NAnt.Core.IBuildListener"/>
+ is defined.
+ </para>
+ </remarks>
+ <param name="typeName">The fully qualified name of the listener that should be instantiated.</param>
+ <exception cref="T:System.TypeLoadException">Type <paramref name="typeName"/> could not be loaded.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="typeName"/> does not implement <see cref="T:NAnt.Core.IBuildListener"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.AddBuildListeners(NAnt.Core.CommandLineOptions,NAnt.Core.Project)">
+ <summary>
+ Add the listeners specified in the command line arguments,
+ along with the default listener, to the specified project.
+ </summary>
+ <param name="cmdlineOptions">The command-line options.</param>
+ <param name="project">The <see cref="T:NAnt.Core.Project"/> to add listeners to.</param>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.ShowHelp(NAnt.Core.Util.CommandLineParser)">
+ <summary>
+ Spits out generic help info to the console.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ConsoleDriver.WriteException(System.Exception)">
+ <summary>
+ Write the message of the specified <see cref="T:System.Exception"/> and
+ the inner exceptions to <see cref="P:System.Console.Error"/>.
+ </summary>
+ <param name="cause">The <see cref="T:System.Exception"/> to write to <see cref="P:System.Console.Error"/>.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilder.#ctor(System.Reflection.Assembly,System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> class
+ for the specified <see cref="T:NAnt.Core.DataTypeBase"/> class in the specified
+ <see cref="T:System.Reflection.Assembly"/>.
+ </summary>
+ <remarks>
+ An <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> for the specified <see cref="T:System.Reflection.Assembly"/>
+ is cached for future use.
+ </remarks>
+ <param name="assembly">The <see cref="T:System.Reflection.Assembly"/> containing the <see cref="T:NAnt.Core.DataTypeBase"/>.</param>
+ <param name="className">The class representing the <see cref="T:NAnt.Core.DataTypeBase"/>.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilder.#ctor(NAnt.Core.Extensibility.ExtensionAssembly,System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/>
+ class for the specified <see cref="T:NAnt.Core.DataTypeBase"/> class in the
+ <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> specified.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:NAnt.Core.DataTypeBase"/>.</param>
+ <param name="className">The class representing the <see cref="T:NAnt.Core.DataTypeBase"/>.</param>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBaseBuilder.ClassName">
+ <summary>
+ Gets the name of the <see cref="T:NAnt.Core.DataTypeBase"/> class that can be
+ created using this <see cref="T:NAnt.Core.DataTypeBaseBuilder"/>.
+ </summary>
+ <value>
+ The name of the <see cref="T:NAnt.Core.DataTypeBase"/> class that can be created
+ using this <see cref="T:NAnt.Core.DataTypeBaseBuilder"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBaseBuilder.DataTypeName">
+ <summary>
+ Gets the name of the data type which the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/>
+ can create.
+ </summary>
+ <value>
+ The name of the data type which the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/>
+ can create.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.DataTypeBaseBuilderCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.#ctor(NAnt.Core.DataTypeBaseBuilderCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/> class
+ with the specified <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.#ctor(NAnt.Core.DataTypeBaseBuilder[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.Add(NAnt.Core.DataTypeBaseBuilder)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.AddRange(NAnt.Core.DataTypeBaseBuilder[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.AddRange(NAnt.Core.DataTypeBaseBuilderCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.Contains(NAnt.Core.DataTypeBaseBuilder)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> for the specified
+ task is in the collection.
+ </summary>
+ <param name="taskName">The name of task for which the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> should be located in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> for
+ the specified task is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.CopyTo(NAnt.Core.DataTypeBaseBuilder[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.IndexOf(NAnt.Core.DataTypeBaseBuilder)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.DataTypeBaseBuilder"/>. If the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.Insert(System.Int32,NAnt.Core.DataTypeBaseBuilder)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.DataTypeBaseBuilderEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderCollection.Remove(NAnt.Core.DataTypeBaseBuilder)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBaseBuilderCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBaseBuilderCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> for the specified task.
+ </summary>
+ <param name="dataTypeName">The name of task for which the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> should be located in the collection.</param>
+ </member>
+ <member name="T:NAnt.Core.DataTypeBaseBuilderEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> elements of a <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderEnumerator.#ctor(NAnt.Core.DataTypeBaseBuilderCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DataTypeBaseBuilderEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.DataTypeBaseBuilderCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseBuilderEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DataTypeBaseBuilderEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseDictionary.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DataTypeBaseDictionary"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseDictionary.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DataTypeBaseDictionary"/> class
+ with the specified capacity.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DataTypeBaseDictionary.Inherit(NAnt.Core.DataTypeBaseDictionary)">
+ <summary>
+ Inherits Properties from an existing property
+ dictionary Instance
+ </summary>
+ <param name="source">DataType list to inherit</param>
+ </member>
+ <member name="T:NAnt.Core.DirectoryScanner">
+ <summary>
+ Used for searching filesystem based on given include/exclude rules.
+ </summary>
+ <example>
+ <para>Simple client code for testing the class.</para>
+ <code>
+ while (true) {
+ DirectoryScanner scanner = new DirectoryScanner();
+
+ Console.Write("Scan Basedirectory : ");
+ string s = Console.ReadLine();
+ if (s.Length == 0) break;
+ scanner.BaseDirectory = s;
+
+ while(true) {
+ Console.Write("Include pattern : ");
+ s = Console.ReadLine();
+ if (s.Length == 0) break;
+ scanner.Includes.Add(s);
+ }
+
+ while(true) {
+ Console.Write("Exclude pattern : ");
+ s = Console.ReadLine();
+ if (s.Length == 0) break;
+ scanner.Excludes.Add(s);
+ }
+
+ foreach (string name in scanner.FileNames)
+ Console.WriteLine("file:" + name);
+ foreach (string name in scanner.DirectoryNames)
+ Console.WriteLine("dir :" + name);
+
+ Console.WriteLine("");
+ }
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DirectoryScanner"/>.
+ </summary>
+ <remarks>
+ On unix, patterns are matching case-sensitively; otherwise, they
+ are matched case-insensitively.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DirectoryScanner"/>
+ specifying whether patterns are to be match case-sensitively.
+ </summary>
+ <param name="caseSensitive">Specifies whether patterns are to be matched case-sensititely.</param>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.DirectoryScanner"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.DirectoryScanner"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.Scan">
+ <summary>
+ Uses <see cref="P:NAnt.Core.DirectoryScanner.Includes"/> and <see cref="P:NAnt.Core.DirectoryScanner.Excludes"/> search criteria (relative to
+ <see cref="P:NAnt.Core.DirectoryScanner.BaseDirectory"/> or absolute), to search for filesystem objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.ConvertPatterns(System.Collections.Specialized.StringCollection,System.Collections.ArrayList,System.Collections.Specialized.StringCollection,System.Boolean)">
+ <summary>
+ Parses specified NAnt search patterns for search directories and
+ corresponding regex patterns.
+ </summary>
+ <param name="nantPatterns">In. NAnt patterns. Absolute or relative paths.</param>
+ <param name="regexPatterns">Out. Regex patterns. Absolute canonical paths.</param>
+ <param name="nonRegexFiles">Out. Non-regex files. Absolute canonical paths.</param>
+ <param name="addSearchDirectories">In. Whether to allow a pattern to add search directories.</param>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.ParseSearchDirectoryAndPattern(System.Boolean,System.String,System.String@,System.Boolean@,System.Boolean@,System.String@)">
+ <summary>
+ Given a NAnt search pattern returns a search directory and an regex
+ search pattern.
+ </summary>
+ <param name="isInclude">Whether this pattern is an include or exclude pattern</param>
+ <param name="originalNAntPattern">NAnt searh pattern (relative to the Basedirectory OR absolute, relative paths refering to parent directories ( ../ ) also supported)</param>
+ <param name="searchDirectory">Out. Absolute canonical path to the directory to be searched</param>
+ <param name="recursive">Out. Whether the pattern is potentially recursive or not</param>
+ <param name="isRegex">Out. Whether this is a regex pattern or not</param>
+ <param name="regexPattern">Out. Regex search pattern (absolute canonical path)</param>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.ScanDirectory(System.String,System.Boolean)">
+ <summary>
+ Searches a directory recursively for files and directories matching
+ the search criteria.
+ </summary>
+ <param name="path">Directory in which to search (absolute canonical path)</param>
+ <param name="recursive">Whether to scan recursively or not</param>
+ </member>
+ <member name="M:NAnt.Core.DirectoryScanner.ToRegexPattern(System.String)">
+ <summary>
+ Converts search pattern to a regular expression pattern.
+ </summary>
+ <param name="nantPattern">Search pattern relative to the search directory.</param>
+ <returns>Regular expresssion</returns>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.CaseSensitive">
+ <summary>
+ Gets or set a value indicating whether or not to use case-sensitive
+ pattern matching.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.Includes">
+ <summary>
+ Gets the collection of include patterns.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.Excludes">
+ <summary>
+ Gets the collection of exclude patterns.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.BaseDirectory">
+ <summary>
+ The base directory to scan. The default is the
+ <see cref="P:System.Environment.CurrentDirectory">current directory</see>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.FileNames">
+ <summary>
+ Gets the list of files that match the given patterns.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.DirectoryNames">
+ <summary>
+ Gets the list of directories that match the given patterns.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.ScannedDirectories">
+ <summary>
+ Gets the list of directories that were scanned for files.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DirectoryScanner.IsEverythingIncluded">
+ <summary>
+ Indicates whether or not the directory scanner included everything
+ that it scanned.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.StringCollectionWithGoodToString.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.StringCollectionWithGoodToString"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.StringCollectionWithGoodToString"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.StringCollectionWithGoodToString.ToString">
+ <summary>
+ Creates a string representing a list of the strings in the collection.
+ </summary>
+ <returns>
+ A string that represents the contents.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DirScannerStringCollection.#ctor(System.Boolean)">
+ <summary>
+ Initialize a new instance of the <see cref="T:NAnt.Core.DirScannerStringCollection"/>
+ class specifying whether or not string comparison should be
+ case-sensitive.
+ </summary>
+ <param name="caseSensitive">Specifies whether or not string comparison should be case-sensitive.</param>
+ </member>
+ <member name="M:NAnt.Core.DirScannerStringCollection.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.DirScannerStringCollection"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.DirScannerStringCollection"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.DirScannerStringCollection.Contains(System.String)">
+ <summary>
+ Determines whether the specified string is in the
+ <see cref="T:NAnt.Core.DirScannerStringCollection"/>.
+ </summary>
+ <param name="value">The string to locate in the <see cref="T:NAnt.Core.DirScannerStringCollection"/>. The value can be <see langword="null"/>.</param>
+ <returns>
+ <seee langword="true"/> if value is found in the <see cref="T:NAnt.Core.DirScannerStringCollection"/>; otherwise, <see langword="false"/>.
+ </returns>
+ <remarks>
+ String comparisons within the <see cref="T:NAnt.Core.DirScannerStringCollection"/>
+ are only case-sensitive if <see cref="P:NAnt.Core.DirScannerStringCollection.CaseSensitive"/> is
+ <see langword="true"/>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DirScannerStringCollection.IndexOf(System.String)">
+ <summary>
+ Searches for the specified string and returns the zero-based index
+ of the first occurrence within the <see cref="T:NAnt.Core.DirScannerStringCollection"/>.
+ </summary>
+ <param name="value">The string to locate. The value can be <see langword="null"/>.</param>
+ <returns>
+ The zero-based index of the first occurrence of <paramref name="value"/>
+ in the <see cref="T:NAnt.Core.DirScannerStringCollection"/>, if found; otherwise, -1.
+ </returns>
+ <remarks>
+ String comparisons within the <see cref="T:NAnt.Core.DirScannerStringCollection"/>
+ are only case-sensitive if <see cref="P:NAnt.Core.DirScannerStringCollection.CaseSensitive"/> is
+ <see langword="true"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.DirScannerStringCollection.CaseSensitive">
+ <summary>
+ Gets a value indicating whether string comparison is case-sensitive.
+ </summary>
+ <value>
+ A value indicating whether string comparison is case-sensitive.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.ExpressionEvaluator.GetPropertyValue(System.String)">
+ <summary>
+ Gets the value of the specified property.
+ </summary>
+ <param name="propertyName">The name of the property to get the value of.</param>
+ <returns>
+ The value of the specified property.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.ExpressionTokenizer">
+ <summary>
+ Splits an input string into a sequence of tokens used during parsing.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.ExpressionTokenizer.TokenType">
+ <summary>
+ Available tokens
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.FrameworkInfo">
+ <summary>
+ Encalsulates information about installed frameworks incuding version
+ information and directory locations for finding tools.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.FrameworkInfo.ResolveAssembly(System.String)">
+ <summary>
+ Resolves the specified assembly to a full path by matching it
+ against the reference assemblies.
+ </summary>
+ <param name="fileName">The file name of the assembly to resolve (without path information).</param>
+ <returns>
+ An absolute path to the assembly, or <see langword="null" /> if the
+ assembly could not be found or no reference assemblies are configured
+ for the current framework.
+ </returns>
+ <remarks>
+ Whether the file name is matched case-sensitively depends on the
+ operating system.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.FrameworkInfo.GetToolPath(System.String)">
+ <summary>
+ Searches the list of tool paths of the current framework for the
+ given file, and returns the absolute path if found.
+ </summary>
+ <param name="tool">The file name of the tool to search for.</param>
+ <returns>
+ The absolute path to <paramref name="tool"/> if found in one of the
+ configured tool paths; otherwise, <see langword="null"/>.
+ </returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="tool"/> is <see langword="null"/>.</exception>
+ <remarks>
+ <para>
+ The configured tool paths are scanned in the order in which they
+ are defined in the framework configuration.
+ </para>
+ <para>
+ The file name of the tool to search should include the extension.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.FrameworkInfo.GetXmlAttributeValue(System.Xml.XmlNode,System.String)">
+ <summary>
+ Gets the value of the specified attribute from the specified node.
+ </summary>
+ <param name="xmlNode">The node of which the attribute value should be retrieved.</param>
+ <param name="attributeName">The attribute of which the value should be returned.</param>
+ <returns>
+ The value of the attribute with the specified name or <see langword="null" />
+ if the attribute does not exist or has no value.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Name">
+ <summary>
+ Gets the name of the framework.
+ </summary>
+ <value>
+ The name of the framework.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Family">
+ <summary>
+ Gets the family of the framework.
+ </summary>
+ <value>
+ The family of the framework.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Description">
+ <summary>
+ Gets the description of the framework.
+ </summary>
+ <value>
+ The description of the framework.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Vendor">
+ <summary>
+ Gets the vendor of the framework.
+ </summary>
+ <value>
+ The vendor of the framework.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Version">
+ <summary>
+ Gets the version of the framework.
+ </summary>
+ <value>
+ The version of the framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ <remarks>
+ When <see cref="P:NAnt.Core.FrameworkInfo.Version"/> is not configured, the framework is not
+ considered valid.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.ClrVersion">
+ <summary>
+ Gets the Common Language Runtime version of the framework.
+ </summary>
+ <value>
+ The Common Language Runtime version of the framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ <remarks>
+ When <see cref="P:NAnt.Core.FrameworkInfo.ClrVersion"/> is <see langword="null"/>, the
+ framework is not considered valid.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.ClrType">
+ <summary>
+ Gets the CLR type of the framework.
+ </summary>
+ <value>
+ The CLR type of the framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.VisualStudioVersion">
+ <summary>
+ Gets the Visual Studio version that corresponds with this
+ framework.
+ </summary>
+ <value>
+ The Visual Studio version that corresponds with this framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ <exception cref="T:NAnt.Core.BuildException">There is no version of Visual Studio that corresponds with this framework.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.FrameworkDirectory">
+ <summary>
+ Gets the base directory of the framework tools for the framework.
+ </summary>
+ <value>
+ The base directory of the framework tools for the framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Runtime">
+ <summary>
+ Gets the runtime information for this framework.
+ </summary>
+ <value>
+ The runtime information for the framework or <see langword="null"/>
+ if no runtime information is configured for the framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.FrameworkAssemblyDirectory">
+ <summary>
+ Gets the directory where the system assemblies for the framework
+ are located.
+ </summary>
+ <value>
+ The directory where the system assemblies for the framework are
+ located.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.SdkDirectory">
+ <summary>
+ Gets the directory containing the SDK tools for the framework.
+ </summary>
+ <value>
+ The directory containing the SDK tools for the framework or a null
+ reference if the configured sdk directory does not exist, or is not
+ valid.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.Project">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.FrameworkInfo.Project"/> used to initialize this framework.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.FrameworkInfo.Project"/> used to initialize this framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.TaskAssemblies">
+ <summary>
+ Gets the set of assemblies and directories that should scanned for
+ NAnt tasks, types or functions.
+ </summary>
+ <value>
+ The set of assemblies and directories that should be scanned for
+ NAnt tasks, types or functions.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.IsValid">
+ <summary>
+ Returns a value indicating whether the current framework is valid.
+ </summary>
+ <value>
+ <see langword="true" /> if the framework is installed and correctly
+ configured; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.ReferenceAssemblies">
+ <summary>
+ Gets the reference assemblies for the current framework.
+ </summary>
+ <value>
+ The reference assemblies for the current framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.ToolPaths">
+ <summary>
+ Gets the tool paths for the current framework.
+ </summary>
+ <value>
+ The tool paths for the current framework.
+ </value>
+ <exception cref="T:System.ArgumentException">The framework is not valid.</exception>
+ </member>
+ <member name="P:NAnt.Core.FrameworkInfo.NamespaceManager">
+ <summary>
+ Gets the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </summary>
+ <value>
+ The <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </value>
+ <remarks>
+ The <see cref="P:NAnt.Core.FrameworkInfo.NamespaceManager"/> defines the current namespace
+ scope and provides methods for looking up namespace information.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.FrameworkInfoDictionary.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.FrameworkInfoDictionary"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.FrameworkInfoDictionary.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.FrameworkInfoDictionary"/> class
+ with the specified capacity.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.FrameworkTypes">
+ <summary>
+ Defines the types of frameworks.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.NotInstalled">
+ <summary>
+ Frameworks that are supported on the current platform, but are not
+ installed.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.Installed">
+ <summary>
+ Frameworks that are installed on the current system.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.InstallStateMask">
+ <summary>
+ Retrieves installation state attributes.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.Desktop">
+ <summary>
+ Frameworks that typically target full desktop devices.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.Compact">
+ <summary>
+ Frameworks that target compact devices.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.Browser">
+ <summary>
+ Frameworks that run in a browser.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.DeviceMask">
+ <summary>
+ Retrieves device attributes.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.Mono">
+ <summary>
+ Frameworks released as part of the open-source <see href="http://www.mono-project.com">Mono</see>
+ project.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.MS">
+ <summary>
+ Frameworks released by Microsoft.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.VendorMask">
+ <summary>
+ Retrieves vendor attributes.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.FrameworkTypes.All">
+ <summary>
+ All frameworks supported on the current platform, regarless of their
+ installation state, target device or vendor.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Location">
+ <summary>
+ Stores the file name, line number and column number to record a position
+ in a text file.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Location.#ctor(System.String,System.Int32,System.Int32)">
+ <summary>
+ Creates a location consisting of a file name, line number and
+ column number.
+ </summary>
+ <remarks>
+ <paramref name="fileName" /> can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Location.#ctor(System.String)">
+ <summary>
+ Creates a location consisting of a file name.
+ </summary>
+ <remarks>
+ <paramref name="fileName" /> can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Location.#ctor">
+ <summary>
+ Creates an "unknown" location.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Location.Init(System.String,System.Int32,System.Int32)">
+ <summary>Private Init function.</summary>
+ </member>
+ <member name="M:NAnt.Core.Location.ToString">
+ <summary>
+ Returns the file name, line number and a trailing space. An error
+ message can be appended easily. For unknown locations, returns
+ an empty string.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Location.FileName">
+ <summary>
+ Gets a string containing the file name for the location.
+ </summary>
+ <remarks>
+ The file name includes both the file path and the extension.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Location.LineNumber">
+ <summary>
+ Gets the line number for the location.
+ </summary>
+ <remarks>
+ Lines start at 1. Will be zero if not specified.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Location.ColumnNumber">
+ <summary>
+ Gets the column number for the location.
+ </summary>
+ <remarks>
+ Columns start a 1. Will be zero if not specified.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.LocationMap">
+ <summary>
+ Maps XML nodes to the text positions from their original source.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LocationMap.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.LocationMap"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LocationMap.FileIsMapped(System.String)">
+ <summary>
+ Determines if a file has been loaded by the current project.
+ </summary>
+ <param name="fileOrUri">The file to check.</param>
+ <returns>
+ <see langword="true" /> if the specified file has already been loaded
+ by the current project; otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.LocationMap.Add(System.Xml.XmlDocument)">
+ <summary>
+ Adds an <see cref="T:System.Xml.XmlDocument"/> to the map.
+ </summary>
+ <remarks>
+ An <see cref="T:System.Xml.XmlDocument"/> can only be added to the map once.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.LocationMap.GetLocation(System.Xml.XmlNode)">
+ <summary>
+ Returns the <see cref="T:NAnt.Core.Location"/> in the XML file for the given node.
+ </summary>
+ <remarks>
+ The <paramref name="node"/> must be from an <see cref="T:System.Xml.XmlDocument"/>
+ that has been added to the map.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.LocationMap.TextPosition">
+ <summary>
+ Represents a position in the build file.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LocationMap.TextPosition.#ctor(System.Int32,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.LocationMap.TextPosition"/>
+ with the speified line and column.
+ </summary>
+ <param name="line">The line coordinate of the position.</param>
+ <param name="column">The column coordinate of the position.</param>
+ </member>
+ <member name="F:NAnt.Core.LocationMap.TextPosition.Line">
+ <summary>
+ The line coordinate of the position.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.LocationMap.TextPosition.Column">
+ <summary>
+ The column coordinate of the position.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.Level">
+ <summary>
+ Defines the set of levels recognised by the NAnt logging system.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Level.Debug">
+ <summary>
+ Designates fine-grained informational events that are most useful
+ to debug a build process.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Level.Verbose">
+ <summary>
+ Designates events that offer a more detailed view of the build
+ process.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Level.Info">
+ <summary>
+ Designates informational events that are useful for getting a
+ high-level view of the build process.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Level.Warning">
+ <summary>
+ Designates potentionally harmful events.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Level.Error">
+ <summary>
+ Designates error events.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Level.None">
+ <summary>
+ Can be used to suppress all messages.
+ </summary>
+ <remarks>
+ No events should be logged with this <see cref="T:NAnt.Core.Level"/>.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Core.LevelConverter">
+ <summary>
+ Specialized <see cref="T:System.ComponentModel.EnumConverter"/> for <see cref="T:NAnt.Core.Level"/>
+ that ignores case when converting from string.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LevelConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.LevelConverter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LevelConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
+ <summary>
+ Converts the given object to the type of this converter, using the
+ specified context and culture information.
+ </summary>
+ <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that provides a format context.</param>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/> object. If a <see langword="null"/> is passed, the current culture is assumed.</param>
+ <param name="value">The <see cref="T:System.Object"/> to convert.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that represents the converted value.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.BuildEventArgs">
+ <summary>
+ Class representing an event occurring during a build.
+ </summary>
+ <remarks>
+ <para>
+ An event is built by specifying either a project, a task or a target.
+ </para>
+ <para>
+ A <see cref="P:NAnt.Core.BuildEventArgs.Project"/> level event will only have a <see cref="P:NAnt.Core.BuildEventArgs.Project"/>
+ reference.
+ </para>
+ <para>
+ A <see cref="P:NAnt.Core.BuildEventArgs.Target"/> level event will have <see cref="P:NAnt.Core.BuildEventArgs.Project"/> and
+ <see cref="P:NAnt.Core.BuildEventArgs.Target"/> references.
+ </para>
+ <para>
+ A <see cref="P:NAnt.Core.BuildEventArgs.Task"/> level event will have <see cref="P:NAnt.Core.BuildEventArgs.Project"/>,
+ <see cref="P:NAnt.Core.BuildEventArgs.Target"/> and <see cref="P:NAnt.Core.BuildEventArgs.Task"/> references.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.BuildEventArgs.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildEventArgs"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildEventArgs.#ctor(NAnt.Core.Project)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildEventArgs"/>
+ class for a <see cref="P:NAnt.Core.BuildEventArgs.Project"/> level event.
+ </summary>
+ <param name="project">The <see cref="P:NAnt.Core.BuildEventArgs.Project"/> that emitted the event.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildEventArgs.#ctor(NAnt.Core.Target)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildEventArgs"/>
+ class for a <see cref="P:NAnt.Core.BuildEventArgs.Target"/> level event.
+ </summary>
+ <param name="target">The <see cref="P:NAnt.Core.BuildEventArgs.Target"/> that emitted the event.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildEventArgs.#ctor(NAnt.Core.Task)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildEventArgs"/>
+ class for a <see cref="P:NAnt.Core.BuildEventArgs.Task"/> level event.
+ </summary>
+ <param name="task">The <see cref="P:NAnt.Core.BuildEventArgs.Task"/> that emitted the event.</param>
+ </member>
+ <member name="P:NAnt.Core.BuildEventArgs.Message">
+ <summary>
+ Gets or sets the message associated with this event.
+ </summary>
+ <value>
+ The message associated with this event.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildEventArgs.MessageLevel">
+ <summary>
+ Gets or sets the priority level associated with this event.
+ </summary>
+ <value>
+ The priority level associated with this event.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildEventArgs.Exception">
+ <summary>
+ Gets or sets the <see cref="P:NAnt.Core.BuildEventArgs.Exception"/> associated with this event.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.BuildEventArgs.Exception"/> associated with this event.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildEventArgs.Project">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.BuildEventArgs.Project"/> that fired this event.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.BuildEventArgs.Project"/> that fired this event.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildEventArgs.Target">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.BuildEventArgs.Target"/> that fired this event.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.BuildEventArgs.Target"/> that fired this event, or a null reference
+ if this is a <see cref="P:NAnt.Core.BuildEventArgs.Project"/> level event.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.BuildEventArgs.Task">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.BuildEventArgs.Task"/> that fired this event.
+ </summary>
+ <value>
+ The <see cref="P:NAnt.Core.BuildEventArgs.Task"/> that fired this event, or <see langword="null"/>
+ if this is a <see cref="P:NAnt.Core.BuildEventArgs.Project"/> or <see cref="P:NAnt.Core.BuildEventArgs.Target"/> level
+ event.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.BuildEventHandler">
+ <summary>
+ Represents the method that handles the build events.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="T:NAnt.Core.IBuildListener">
+ <summary>
+ Instances of classes that implement this interface can register to be
+ notified when things happen during a build.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.BuildStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a build has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event is fired before any targets have started.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.BuildFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that the last target has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.TargetStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a target has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.TargetFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a target has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.TaskStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.TaskFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.IBuildListener.MessageLogged(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a message has been logged.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="T:NAnt.Core.IBuildLogger">
+ <summary>
+ Interface used by NAnt to log the build output.
+ </summary>
+ <remarks>
+ Depending on the supplied command-line arguments, NAnt will set the
+ <see cref="P:NAnt.Core.IBuildLogger.OutputWriter"/> to <see cref="P:System.Console.Out"/> or a
+ <see cref="T:System.IO.StreamWriter"/> with a file as backend store.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.IBuildLogger.Flush">
+ <summary>
+ Flushes buffered build events or messages to the underlying storage.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.IBuildLogger.Threshold">
+ <summary>
+ Gets or sets the highest level of message this logger should respond
+ to.
+ </summary>
+ <value>The highest level of message this logger should respond to.</value>
+ <remarks>
+ Only messages with a message level higher than or equal to the given
+ level should actually be written to the log.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.IBuildLogger.EmacsMode">
+ <summary>
+ Gets or sets a value indicating whether to produce emacs (and other
+ editor) friendly output.
+ </summary>
+ <value>
+ <see langword="true" /> if output is to be unadorned so that emacs
+ and other editors can parse files names, etc.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.IBuildLogger.OutputWriter">
+ <summary>
+ Gets or sets the <see cref="T:System.IO.TextWriter"/> to which the logger is
+ to send its output.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.DefaultLogger"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.Flush">
+ <summary>
+ Flushes buffered build events or messages to the underlying storage.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.BuildStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a build has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event is fired before any targets have started.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.BuildFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that the last target has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.TargetStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a target has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.TargetFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.TaskStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.TaskFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.MessageLogged(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a message has been logged.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ Only messages with a priority higher or equal to the threshold of
+ the logger will actually be output in the build log.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.Log(System.String)">
+ <summary>
+ Empty implementation which allows derived classes to receive the
+ output that is generated in this logger.
+ </summary>
+ <param name="message">The message being logged.</param>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.OutputMessage(NAnt.Core.Level,System.String,System.Int32)">
+ <summary>
+ Outputs an indented message to the build log if its priority is
+ greather than or equal to the <see cref="P:NAnt.Core.DefaultLogger.Threshold"/> of the
+ logger.
+ </summary>
+ <param name="messageLevel">The priority of the message to output.</param>
+ <param name="message">The message to output.</param>
+ <param name="indentationLength">The number of characters that the message should be indented.</param>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.OutputMessage(NAnt.Core.BuildEventArgs)">
+ <summary>
+ Outputs an indented message to the build log if its priority is
+ greather than or equal to the <see cref="P:NAnt.Core.DefaultLogger.Threshold"/> of the
+ logger.
+ </summary>
+ <param name="e">The event to output.</param>
+ </member>
+ <member name="M:NAnt.Core.DefaultLogger.OutputMessage(NAnt.Core.BuildEventArgs,System.Int32)">
+ <summary>
+ Outputs an indented message to the build log if its priority is
+ greather than or equal to the <see cref="P:NAnt.Core.DefaultLogger.Threshold"/> of the
+ logger.
+ </summary>
+ <param name="e">The event to output.</param>
+ <param name="indentationLength">The number of characters that the message should be indented.</param>
+ </member>
+ <member name="F:NAnt.Core.DefaultLogger._buildReports">
+ <summary>
+ Holds a stack of reports for all running builds.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.DefaultLogger.Threshold">
+ <summary>
+ Gets or sets the highest level of message this logger should respond
+ to.
+ </summary>
+ <value>
+ The highest level of message this logger should respond to.
+ </value>
+ <remarks>
+ Only messages with a message level higher than or equal to the given
+ level should be written to the log.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.DefaultLogger.EmacsMode">
+ <summary>
+ Gets or sets a value indicating whether to produce emacs (and other
+ editor) friendly output.
+ </summary>
+ <value>
+ <see langword="true" /> if output is to be unadorned so that emacs
+ and other editors can parse files names, etc. The default is
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.DefaultLogger.OutputWriter">
+ <summary>
+ Gets or sets the <see cref="T:System.IO.TextWriter"/> to which the logger is
+ to send its output.
+ </summary>
+ <value>
+ The <see cref="T:System.IO.TextWriter"/> to which the logger sends its output.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.BuildReport">
+ <summary>
+ Used to store information about a build, to allow better reporting to
+ the user.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.BuildReport.Errors">
+ <summary>
+ Errors encountered so far.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.BuildReport.Warnings">
+ <summary>
+ Warnings encountered so far.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.BuildReport.StartTime">
+ <summary>
+ The start time of the build process.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.MailLogger">
+ <summary>
+ Buffers log messages from DefaultLogger, and sends an e-mail with the
+ results.
+ </summary>
+ <remarks>
+ The following properties are used to send the mail :
+ <list type="table">
+ <listheader>
+ <term>Property</term>
+ <description>Description</description>
+ </listheader>
+ <item>
+ <term>MailLogger.mailhost</term>
+ <description>Mail server to use. [default: localhost]</description>
+ </item>
+ <item>
+ <term>MailLogger.from</term>
+ <description>The address of the e-mail sender.</description>
+ </item>
+ <item>
+ <term>MailLogger.failure.notify</term>
+ <description>Send build failure e-mails ? [default: true]</description>
+ </item>
+ <item>
+ <term>MailLogger.success.notify</term>
+ <description>Send build success e-mails ? [default: true]</description>
+ </item>
+ <item>
+ <term>MailLogger.failure.to</term>
+ <description>The address to send build failure messages to.</description>
+ </item>
+ <item>
+ <term>MailLogger.success.to</term>
+ <description>The address to send build success messages to.</description>
+ </item>
+ <item>
+ <term>MailLogger.failure.subject</term>
+ <description>The subject of build failure messages. [default: "Build Failure"]</description>
+ </item>
+ <item>
+ <term>MailLogger.success.subject</term>
+ <description>The subject of build success messages. [default: "Build Success"]</description>
+ </item>
+ <item>
+ <term>MailLogger.success.attachments</term>
+ <description>The ID of a fileset holdng set of files to attach when the build is successful.</description>
+ </item>
+ <item>
+ <term>MailLogger.failure.attachments</term>
+ <description>The ID of a fileset holdng set of files to attach when the build fails.</description>
+ </item>
+ <item>
+ <term>MailLogger.body.encoding</term>
+ <description>The encoding type of the body of the e-mail message. [default: system's ANSI code page]</description>
+ </item>
+ <item>
+ <term>MailLogger.smtp.username</term>
+ <description>The name of the user to login to the SMTP server.</description>
+ </item>
+ <item>
+ <term>MailLogger.smtp.password</term>
+ <description>The password of the specified user.</description>
+ </item>
+ <item>
+ <term>MailLogger.smtp.enablessl</term>
+ <description>Specifies whether to use SSL to encrypt the connection. [default: false]</description>
+ </item>
+ <item>
+ <term>MailLogger.smtp.port</term>
+ <description>The SMTP server port to connect to. [default: 25]</description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.MailLogger.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.MailLogger"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.MailLogger.BuildStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a build has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event is fired before any targets have started.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.MailLogger.BuildFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that the last target has finished, and send an e-mail with
+ the build results.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.MailLogger.Log(System.String)">
+ <summary>
+ Receives and buffers log messages.
+ </summary>
+ <param name="message">The message being logged.</param>
+ </member>
+ <member name="M:NAnt.Core.MailLogger.GetPropertyValue(NAnt.Core.PropertyDictionary,System.String,System.String,System.Boolean)">
+ <summary>
+ Gets the value of the specified property.
+ </summary>
+ <param name="properties">Properties to obtain value from.</param>
+ <param name="name">Suffix of property name. "MailLogger" will be prepended internally.</param>
+ <param name="defaultValue">Value returned if property is not present in <paramref name="properties"/>.</param>
+ <param name="required">Value indicating whether the property should exist, or have a default value set.</param>
+ <returns>
+ The value of the specified property; or the default value if the
+ property is not present in <paramref name="properties"/>.
+ </returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="required"/> is <see langword="true"/>, and the specified property is not present and no default value has been given.</exception>
+ </member>
+ <member name="F:NAnt.Core.MailLogger._buffer">
+ <summary>
+ Buffer in which the message is constructed prior to sending.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.MailLogger._projectStack">
+ <summary>
+ Holds the stack of currently executing projects.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.BuildListenerCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.Core.IBuildListener"/>
+ objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildListenerCollection"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.#ctor(NAnt.Core.BuildListenerCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildListenerCollection"/>
+ class with the specified <see cref="T:NAnt.Core.BuildListenerCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.#ctor(NAnt.Core.IBuildListener[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildListenerCollection"/>
+ class with the specified array of <see cref="T:NAnt.Core.IBuildListener"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.Add(NAnt.Core.IBuildListener)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.IBuildListener"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.IBuildListener"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.AddRange(NAnt.Core.IBuildListener[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.IBuildListener"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.IBuildListener"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.AddRange(NAnt.Core.BuildListenerCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.BuildListenerCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.BuildListenerCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.Contains(NAnt.Core.IBuildListener)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.IBuildListener"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.IBuildListener"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.CopyTo(NAnt.Core.IBuildListener[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.IndexOf(NAnt.Core.IBuildListener)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.IBuildListener"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.IBuildListener"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.IBuildListener"/>. If the <see cref="T:NAnt.Core.IBuildListener"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.Insert(System.Int32,NAnt.Core.IBuildListener)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.IBuildListener"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.IBuildListener"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.BuildListenerEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerCollection.Remove(NAnt.Core.IBuildListener)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.IBuildListener"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.BuildListenerCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.Core.BuildListenerEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.IBuildListener"/> elements of a <see cref="T:NAnt.Core.BuildListenerCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerEnumerator.#ctor(NAnt.Core.BuildListenerCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.BuildListenerEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.BuildListenerCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.BuildListenerEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.BuildListenerEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.LogWriter">
+ <summary>
+ Implements a <see cref="T:System.IO.TextWriter"/> for writing information to
+ the NAnt logging infrastructure.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.#ctor(NAnt.Core.Task,NAnt.Core.Level,System.IFormatProvider)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.LogWriter"/> class
+ for the specified <see cref="T:NAnt.Core.Task"/> with the specified output
+ level and format provider.
+ </summary>
+ <param name="task">Determines the indentation level.</param>
+ <param name="outputLevel">The <see cref="T:NAnt.Core.Level"/> with which messages will be output to the build log.</param>
+ <param name="formatProvider">An <see cref="T:System.IFormatProvider"/> object that controls formatting.</param>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.Write(System.Char[])">
+ <summary>
+ Writes a character array to the buffer.
+ </summary>
+ <param name="chars">The character array to write to the text stream.</param>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.Write(System.String)">
+ <summary>
+ Writes a string to the buffer.
+ </summary>
+ <param name="value"></param>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.WriteLine">
+ <summary>
+ Writes an empty string to the logging infrastructure.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.WriteLine(System.String)">
+ <summary>
+ Writes a string to the logging infrastructure.
+ </summary>
+ <param name="value">The string to write. If <paramref name="value" /> is a null reference, only the line termination characters are written.</param>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.WriteLine(System.String,System.Object[])">
+ <summary>
+ Writes out a formatted string using the same semantics as
+ <see cref="M:string.Format(string, object[])" />.
+ </summary>
+ <param name="line">The formatting string.</param>
+ <param name="args">The object array to write into format string.</param>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.Flush">
+ <summary>
+ Causes any buffered data to be written to the logging infrastructure.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.Close">
+ <summary>
+ Closes the current writer and releases any system resources
+ associated with the writer.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.LogWriter.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for
+ this instance.
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease"/> used to control the lifetime
+ policy for this instance. This is the current lifetime service object
+ for this instance if one exists; otherwise, a new lifetime service
+ object initialized with a lease that will never time out.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.LogWriter.Encoding">
+ <summary>
+ Gets the <see cref="P:NAnt.Core.LogWriter.Encoding"/> in which the output is written.
+ </summary>
+ <value>
+ The <see cref="T:NAnt.Core.LogWriter"/> always writes output in UTF8
+ encoding.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.LogWriter.OutputLevel">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.Level"/> with which messages will be output to
+ the build log.
+ </summary>
+ </member>
+ <member name="T:NAnt.Core.PathScanner">
+ <summary>
+ Used to search for files on the PATH.
+ </summary>
+ <remarks>
+ <para>
+ The local directory is not searched (since this would already be covered
+ by normal use of the includes element).
+ </para>
+ <para>
+ Also, advanced pattern matching isn't supported: you need to know the
+ exact name of the file.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.PathScanner.System#ICloneable#Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.PathScanner"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.PathScanner"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PathScanner.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.PathScanner"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.PathScanner"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PathScanner.Add(System.String)">
+ <summary>
+ Adds a file to the list of files to be scanned for.
+ </summary>
+ <param name="fileName">The filename or search pattern to add to the list.</param>
+ </member>
+ <member name="M:NAnt.Core.PathScanner.Scan">
+ <summary>
+ Scans all direcetories in the PATH environment variable for files.
+ </summary>
+ <returns>
+ List of matching files found in the PATH.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PathScanner.Scan(System.String)">
+ <summary>
+ Scans all directories in the given environment variable for files.
+ </summary>
+ <param name="name">The environment variable of which the directories should be scanned.</param>
+ <returns>
+ List of matching files found in the directory of the given
+ environment variable.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PathScanner.Clone(System.Collections.Specialized.StringCollection)">
+ <summary>
+ Creates a shallow copy of the specified <see cref="T:System.Collections.Specialized.StringCollection"/>.
+ </summary>
+ <param name="stringCollection">The <see cref="T:System.Collections.Specialized.StringCollection"/> that should be copied.</param>
+ <returns>
+ A shallow copy of the specified <see cref="T:System.Collections.Specialized.StringCollection"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.PlatformHelper.Is64Bit">
+ <summary>
+ Returns a value indicating whether NAnt is running in 64-bit mode.
+ </summary>
+ <value>
+ <see langword="true" /> if NAnt is running in 64-bit mode; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.PlatformHelper.Is32Bit">
+ <summary>
+ Returns a value indicating whether NAnt is running in 32-bit mode.
+ </summary>
+ <remarks>
+ Note that even if the platform is 64-bit, NAnt may be running in
+ 32-bit mode.
+ </remarks>
+ <value>
+ <see langword="true" /> if NAnt is running in 32-bit mode; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.PlatformHelper.IsWindows">
+ <summary>
+ Returns a value indicating whether NAnt is running on Windows.
+ </summary>
+ <value>
+ <see langword="true" /> if NAnt is running on Windows;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Project">
+ <summary>
+ Central representation of a NAnt project.
+ </summary>
+ <example>
+ <para>
+ The <see cref="M:NAnt.Core.Project.Run"/> method will initialize the project with the build
+ file specified in the constructor and execute the default target.
+ </para>
+ <code>
+ <![CDATA[
+ Project p = new Project("foo.build", Level.Info);
+ p.Run();
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ If no target is given, the default target will be executed if specified
+ in the project.
+ </para>
+ <code>
+ <![CDATA[
+ Project p = new Project("foo.build", Level.Info);
+ p.Execute("build");
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.Core.Project.Visiting">
+ <summary>
+ Constant for the "visiting" state, used when traversing a DFS of
+ target dependencies.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Project.Visited">
+ <summary>
+ Constant for the "visited" state, used when traversing a DFS of
+ target dependencies.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Project.logger">
+ <summary>
+ Holds the logger for this class.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Project._threshold">
+ <summary>
+ Holds the default threshold for build loggers.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.#ctor(System.Xml.XmlDocument,NAnt.Core.Level,System.Int32)">
+ <summary>
+ Initializes a new <see cref="T:NAnt.Core.Project"/> class with the given
+ document, message threshold and indentation level.
+ </summary>
+ <param name="doc">Any valid build format will do.</param>
+ <param name="threshold">The message threshold.</param>
+ <param name="indentLevel">The project indentation level.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.#ctor(System.Xml.XmlDocument,NAnt.Core.Level,System.Int32,System.Xml.XmlNode)">
+ <summary>
+ Initializes a new <see cref="T:NAnt.Core.Project"/> class with the given
+ document, message threshold and indentation level, and using
+ the specified <see cref="T:System.Xml.XmlNode"/> to load internal configuration
+ settings.
+ </summary>
+ <param name="doc">Any valid build format will do.</param>
+ <param name="threshold">The message threshold.</param>
+ <param name="indentLevel">The project indentation level.</param>
+ <param name="configurationNode">The <see cref="T:System.Xml.XmlNode"/> NAnt should use to initialize configuration settings.</param>
+ <remarks>
+ This constructor is useful for developers using NAnt as a class
+ library.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.#ctor(System.String,NAnt.Core.Level,System.Int32)">
+ <summary>
+ Initializes a new <see cref="T:NAnt.Core.Project"/> class with the given
+ source, message threshold and indentation level.
+ </summary>
+ <param name="uriOrFilePath">
+ <para>The full path to the build file.</para>
+ <para>This can be of any form that <see cref="M:XmlDocument.Load(string)"/> accepts.</para>
+ </param>
+ <param name="threshold">The message threshold.</param>
+ <param name="indentLevel">The project indentation level.</param>
+ <remarks>
+ If the source is a uri of form 'file:///path' then use the path part.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.#ctor(System.String,NAnt.Core.Level,System.Int32,System.Xml.XmlNode)">
+ <summary>
+ Initializes a new <see cref="T:NAnt.Core.Project"/> class with the given
+ source, message threshold and indentation level, and using
+ the specified <see cref="T:System.Xml.XmlNode"/> to load internal configuration
+ settings.
+ </summary>
+ <param name="uriOrFilePath">
+ <para>The full path to the build file.</para>
+ <para>This can be of any form that <see cref="M:XmlDocument.Load(string)"/> accepts.</para>
+ </param>
+ <param name="threshold">The message threshold.</param>
+ <param name="indentLevel">The project indentation level.</param>
+ <param name="configurationNode">The <see cref="T:System.Xml.XmlNode"/> NAnt should use to initialize configuration settings.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="configurationNode"/> is <see langword="null"/>.</exception>
+ <remarks>
+ If the source is a uri of form 'file:///path' then use the path part.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.#ctor(System.String,NAnt.Core.Project)">
+ <summary>
+ Initializes a <see cref="T:NAnt.Core.Project"/> as subproject of the specified
+ <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="uriOrFilePath">
+ <para>The full path to the build file.</para>
+ <para>This can be of any form that <see cref="M:XmlDocument.Load(string)"/> accepts.</para>
+ </param>
+ <param name="parent">The parent <see cref="T:NAnt.Core.Project"/>.</param>
+ <remarks>
+ Optimized for framework initialization projects, by skipping automatic
+ discovery of extension assemblies and framework configuration.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.#ctor(System.Xml.XmlDocument)">
+ <summary>
+ Initializes a <see cref="T:NAnt.Core.Project"/> with <see cref="P:NAnt.Core.Project.Threshold"/>
+ set to <see cref="F:NAnt.Core.Level.None"/>, and <see cref="P:NAnt.Core.Project.IndentationLevel"/>
+ set to 0.
+ </summary>
+ <param name="doc">An <see cref="T:System.Xml.XmlDocument"/> containing the build script.</param>
+ <remarks>
+ Optimized for framework initialization projects, by skipping automatic
+ discovery of extension assemblies and framework configuration.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.GetFrameworks(NAnt.Core.FrameworkTypes)">
+ <summary>
+ Gets the list of supported frameworks filtered by the specified
+ <see cref="T:NAnt.Core.FrameworkTypes"/> parameter.
+ </summary>
+ <param name="types">A bitwise combination of <see cref="T:NAnt.Core.FrameworkTypes"/> values that filter the frameworks to retrieve.</param>
+ <returns>
+ An array of type <see cref="T:NAnt.Core.FrameworkInfo"/> that contains the
+ frameworks specified by the <paramref name="types"/> parameter,
+ sorted on name.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Project.GetLocation(System.Xml.XmlNode)">
+ <summary>
+ Returns the <see cref="T:NAnt.Core.Location"/> of the given node in an XML
+ file loaded by NAnt.
+ </summary>
+ <remarks>
+ <para>
+ The <paramref name="node"/> must be from an <see cref="T:System.Xml.XmlDocument"/>
+ that has been loaded by NAnt.
+ </para>
+ <para>
+ NAnt also does not process any of the following node types:
+ </para>
+ <list type="bullet">
+ <item>
+ <description><see cref="F:System.Xml.XmlNodeType.Whitespace"/></description>
+ </item>
+ <item>
+ <description><see cref="F:System.Xml.XmlNodeType.EndElement"/></description>
+ </item>
+ <item>
+ <description><see cref="F:System.Xml.XmlNodeType.ProcessingInstruction"/></description>
+ </item>
+ <item>
+ <description><see cref="F:System.Xml.XmlNodeType.XmlDeclaration"/></description>
+ </item>
+ <item>
+ <description><see cref="F:System.Xml.XmlNodeType.DocumentType"/></description>
+ </item>
+ </list>
+ <para>
+ As a result, no location information is available for these nodes.
+ </para>
+ </remarks>
+ <param name="node">The <see cref="T:System.Xml.XmlNode"/> to get the <see cref="T:NAnt.Core.Location"/> for.</param>
+ <returns>
+ <see cref="T:NAnt.Core.Location"/> of the given node in an XML file loaded by NAnt, or
+ <see cref="F:NAnt.Core.Location.UnknownLocation"/> if the node was not loaded from
+ an XML file.
+ </returns>
+ <exception cref="T:System.ArgumentException">
+ <para><paramref name="node"/> is from an XML file that was not loaded by NAnt.</para>
+ <para>-or</para>
+ <para><paramref name="node"/> was not processed by NAnt (eg. an XML declaration).</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.Core.Project.OnBuildStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches a <see cref="E:NAnt.Core.Project.BuildStarted"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.OnBuildFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches a <see cref="E:NAnt.Core.Project.BuildFinished"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.OnTargetStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches a <see cref="E:NAnt.Core.Project.TargetStarted"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.OnTargetFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches a <see cref="E:NAnt.Core.Project.TargetFinished"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.OnTaskStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches a <see cref="E:NAnt.Core.Project.TaskStarted"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.OnTaskFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches the <see cref="E:NAnt.Core.Project.TaskFinished"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.OnMessageLogged(NAnt.Core.BuildEventArgs)">
+ <summary>
+ Dispatches a <see cref="E:NAnt.Core.Project.MessageLogged"/> event to the build listeners
+ for this <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.Log(NAnt.Core.Level,System.String)">
+ <summary>
+ Writes a <see cref="T:NAnt.Core.Project"/> level message to the build log with
+ the given <see cref="T:NAnt.Core.Level"/>.
+ </summary>
+ <param name="messageLevel">The <see cref="T:NAnt.Core.Level"/> to log at.</param>
+ <param name="message">The message to log.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Writes a <see cref="T:NAnt.Core.Project"/> level formatted message to the build
+ log with the given <see cref="T:NAnt.Core.Level"/>.
+ </summary>
+ <param name="messageLevel">The <see cref="T:NAnt.Core.Level"/> to log at.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.Log(NAnt.Core.Task,NAnt.Core.Level,System.String)">
+ <summary>
+ Writes a <see cref="T:NAnt.Core.Task"/> task level message to the build log
+ with the given <see cref="T:NAnt.Core.Level"/>.
+ </summary>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> from which the message originated.</param>
+ <param name="messageLevel">The <see cref="T:NAnt.Core.Level"/> to log at.</param>
+ <param name="message">The message to log.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.Log(NAnt.Core.Target,NAnt.Core.Level,System.String)">
+ <summary>
+ Writes a <see cref="T:NAnt.Core.Target"/> level message to the build log with
+ the given <see cref="T:NAnt.Core.Level"/>.
+ </summary>
+ <param name="target">The <see cref="T:NAnt.Core.Target"/> from which the message orignated.</param>
+ <param name="messageLevel">The level to log at.</param>
+ <param name="message">The message to log.</param>
+ </member>
+ <member name="M:NAnt.Core.Project.Execute">
+ <summary>
+ Executes the default target.
+ </summary>
+ <remarks>
+ No top level error handling is done. Any <see cref="T:NAnt.Core.BuildException"/>
+ will be passed onto the caller.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.Execute(System.String)">
+ <summary>
+ Executes a specific target, and its dependencies.
+ </summary>
+ <param name="targetName">The name of the target to execute.</param>
+ <remarks>
+ Global tasks are not executed.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.Execute(System.String,System.Boolean)">
+ <summary>
+ Executes a specific target.
+ </summary>
+ <param name="targetName">The name of the target to execute.</param>
+ <param name="forceDependencies">Whether dependencies should be forced to execute</param>
+ <remarks>
+ Global tasks are not executed.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.Run">
+ <summary>
+ Executes the default target and wraps in error handling and time
+ stamping.
+ </summary>
+ <returns>
+ <see langword="true" /> if the build was successful; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Project.CreateTask(System.Xml.XmlNode)">
+ <summary>
+ Creates a new <see ref="Task"/> from the given <see cref="T:System.Xml.XmlNode"/>.
+ </summary>
+ <param name="taskNode">The <see cref="T:NAnt.Core.Task"/> definition.</param>
+ <returns>The new <see cref="T:NAnt.Core.Task"/> instance.</returns>
+ </member>
+ <member name="M:NAnt.Core.Project.CreateTask(System.Xml.XmlNode,NAnt.Core.Target)">
+ <summary>
+ Creates a new <see cref="T:NAnt.Core.Task"/> from the given <see cref="T:System.Xml.XmlNode"/>
+ within a <see cref="T:NAnt.Core.Target"/>.
+ </summary>
+ <param name="taskNode">The <see cref="T:NAnt.Core.Task"/> definition.</param>
+ <param name="target">The owner <see cref="T:NAnt.Core.Target"/>.</param>
+ <returns>The new <see cref="T:NAnt.Core.Task"/> instance.</returns>
+ </member>
+ <member name="M:NAnt.Core.Project.ExpandProperties(System.String,NAnt.Core.Location)">
+ <summary>
+ Expands a <see cref="T:System.String"/> from known properties.
+ </summary>
+ <param name="input">The <see cref="T:System.String"/> with replacement tokens.</param>
+ <param name="location">The location in the build file. Used to throw more accurate exceptions.</param>
+ <returns>The expanded and replaced <see cref="T:System.String"/>.</returns>
+ </member>
+ <member name="M:NAnt.Core.Project.GetFullPath(System.String)">
+ <summary>
+ Combines the specified path with the <see cref="P:NAnt.Core.Project.BaseDirectory"/> of
+ the <see cref="T:NAnt.Core.Project"/> to form a full path to file or directory.
+ </summary>
+ <param name="path">The relative or absolute path.</param>
+ <returns>
+ A rooted path, or the <see cref="P:NAnt.Core.Project.BaseDirectory"/> of the <see cref="T:NAnt.Core.Project"/>
+ if the <paramref name="path"/> parameter is a null reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Project.CreateDefaultLogger">
+ <summary>
+ Creates the default <see cref="T:NAnt.Core.IBuildLogger"/> and attaches it to
+ the <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.Indent">
+ <summary>
+ Increases the <see cref="P:NAnt.Core.Project.IndentationLevel"/> of the <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.Unindent">
+ <summary>
+ Decreases the <see cref="P:NAnt.Core.Project.IndentationLevel"/> of the <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.DetachBuildListeners">
+ <summary>
+ Detaches the currently attached <see cref="T:NAnt.Core.IBuildListener"/> instances
+ from the <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.AttachBuildListeners(NAnt.Core.BuildListenerCollection)">
+ <summary>
+ Attaches the specified build listeners to the <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="listeners">The <see cref="T:NAnt.Core.IBuildListener"/> instances to attach to the <see cref="T:NAnt.Core.Project"/>.</param>
+ <remarks>
+ The currently attached <see cref="T:NAnt.Core.IBuildListener"/> instances will
+ be detached before the new <see cref="T:NAnt.Core.IBuildListener"/> instances
+ are attached.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.Project.CtorHelper(System.Xml.XmlDocument,NAnt.Core.Level,System.Int32,NAnt.Core.Optimizations)">
+ <summary>
+ Inits stuff:
+ <para>TypeFactory: Calls Initialize and AddProject </para>
+ <para>Log.IndentSize set to 12</para>
+ <para>Project properties are initialized ("nant.* stuff set")</para>
+ <list type="nant.items">
+ <listheader>NAnt Props:</listheader>
+ <item>nant.filename</item>
+ <item>nant.version</item>
+ <item>nant.location</item>
+ <item>nant.project.name</item>
+ <item>nant.project.buildfile (if doc has baseuri)</item>
+ <item>nant.project.basedir</item>
+ <item>nant.project.default = defaultTarget</item>
+ </list>
+ </summary>
+ <param name="doc">An <see cref="T:System.Xml.XmlDocument"/> representing the project definition.</param>
+ <param name="threshold">The project message threshold.</param>
+ <param name="indentLevel">The project indentation level.</param>
+ <param name="optimization">Optimization flags.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="doc"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="M:NAnt.Core.Project.InitializeProjectDocument(System.Xml.XmlDocument)">
+ <summary>
+ This method is only meant to be used by the <see cref="T:NAnt.Core.Project"/>
+ class and <see cref="T:NAnt.Core.Tasks.IncludeTask"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.LoadBuildFile(System.String)">
+ <summary>
+ Creates a new <see cref="T:System.Xml.XmlDocument"/> based on the project
+ definition.
+ </summary>
+ <param name="uriOrFilePath">
+ <para>The full path to the build file.</para>
+ <para>This can be of any form that <see cref="M:XmlDocument.Load(string)"/> accepts.</para>
+ </param>
+ <returns>
+ An <see cref="T:System.Xml.XmlDocument"/> based on the specified project
+ definition.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Project.ConfigurePlatformProperties">
+ <summary>
+ Configures the platform properties for the current platform.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">NAnt does not support the current platform.</exception>
+ </member>
+ <member name="M:NAnt.Core.Project.UpdateTargetFrameworkProperties">
+ <summary>
+ Updates dependent properties when the <see cref="P:NAnt.Core.Project.TargetFramework"/>
+ is set.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Project.TopologicalTargetSort(System.String,NAnt.Core.TargetCollection)">
+ <summary>
+ Topologically sorts a set of targets.
+ </summary>
+ <param name="root">The name of the root target. The sort is created in such a way that the sequence of targets up to the root target is the minimum possible such sequence. Must not be <see langword="null"/>.</param>
+ <param name="targets">A collection of <see cref="T:NAnt.Core.Target"/> instances.</param>
+ <returns>
+ A collection of <see cref="T:NAnt.Core.Target"/> instances in sorted order.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">There is a cyclic dependecy among the targets, or a named target does not exist.</exception>
+ </member>
+ <member name="M:NAnt.Core.Project.TopologicalTargetSort(System.String,NAnt.Core.TargetCollection,System.Collections.Hashtable,System.Collections.Stack,NAnt.Core.TargetCollection)">
+ <summary>
+ <para>
+ Performs a single step in a recursive depth-first-search traversal
+ of the target dependency tree.
+ </para>
+ <para>
+ The current target is first set to the "visiting" state, and pushed
+ onto the "visiting" stack.
+ </para>
+ <para>
+ An exception is then thrown if any child of the current node is in
+ the visiting state, as that implies a circular dependency. The
+ exception contains details of the cycle, using elements of the
+ "visiting" stack.
+ </para>
+ <para>
+ If any child has not already been "visited", this method is called
+ recursively on it.
+ </para>
+ <para>
+ The current target is then added to the ordered list of targets.
+ Note that this is performed after the children have been visited in
+ order to get the correct order. The current target is set to the
+ "visited" state.
+ </para>
+ <para>
+ By the time this method returns, the ordered list contains the
+ sequence of targets up to and including the current target.
+ </para>
+ </summary>
+ <param name="root">The current target to inspect. Must not be <see langword="null"/>.</param>
+ <param name="targets">A collection of <see cref="T:NAnt.Core.Target"/> instances.</param>
+ <param name="state">A mapping from targets to states The states in question are "VISITING" and "VISITED". Must not be <see langword="null"/>.</param>
+ <param name="visiting">A stack of targets which are currently being visited. Must not be <see langword="null"/>.</param>
+ <param name="executeTargets">The list to add target names to. This will end up containing the complete list of depenencies in dependency order. Must not be <see langword="null"/>.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>A non-existent target is specified</para>
+ <para>-or-</para>
+ <para>A circular dependency is detected.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.Core.Project.CreateCircularException(System.String,System.Collections.Stack)">
+ <summary>
+ Builds an appropriate exception detailing a specified circular
+ dependency.
+ </summary>
+ <param name="end">The dependency to stop at. Must not be <see langword="null"/>.</param>
+ <param name="stack">A stack of dependencies. Must not be <see langword="null"/>.</param>
+ <returns>
+ A <see cref="T:NAnt.Core.BuildException"/> detailing the specified circular
+ dependency.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.Project.IndentationLevel">
+ <summary>
+ Gets or sets the indendation level of the build output.
+ </summary>
+ <value>
+ The indentation level of the build output.
+ </value>
+ <remarks>
+ To change the <see cref="P:NAnt.Core.Project.IndentationLevel"/>, the <see cref="M:NAnt.Core.Project.Indent"/>
+ and <see cref="M:NAnt.Core.Project.Unindent"/> methods should be used.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.IndentationSize">
+ <summary>
+ Gets or sets the indentation size of the build output.
+ </summary>
+ <value>
+ The indendation size of the build output.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.Threshold">
+ <summary>
+ Gets or sets the default threshold level for build loggers.
+ </summary>
+ <value>
+ The default threshold level for build loggers.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.ProjectName">
+ <summary>
+ Gets the name of the <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <value>
+ The name of the <see cref="T:NAnt.Core.Project"/> or an empty <see cref="T:System.String"/>
+ if no name is specified.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.BaseDirectory">
+ <summary>
+ Gets or sets the base directory used for relative references.
+ </summary>
+ <value>
+ The base directory used for relative references.
+ </value>
+ <exception cref="T:NAnt.Core.BuildException">The directory is not rooted.</exception>
+ <remarks>
+ <para>
+ The <see cref="P:NAnt.Core.Project.BaseDirectory"/> gets and sets the built-in property
+ named "nant.project.basedir".
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.NamespaceManager">
+ <summary>
+ Gets the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </summary>
+ <value>
+ The <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </value>
+ <remarks>
+ The <see cref="P:NAnt.Core.Project.NamespaceManager"/> defines the current namespace
+ scope and provides methods for looking up namespace information.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.BuildFileUri">
+ <summary>
+ Gets the <see cref="T:System.Uri"/> form of the current project definition.
+ </summary>
+ <value>
+ The <see cref="T:System.Uri"/> form of the current project definition.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.Frameworks">
+ <summary>
+ Gets a collection of available .NET frameworks.
+ </summary>
+ <value>
+ A collection of available .NET frameworks.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.RuntimeFramework">
+ <summary>
+ Gets the framework in which NAnt is currently running.
+ </summary>
+ <value>
+ The framework in which NAnt is currently running.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.TargetFramework">
+ <summary>
+ Gets or sets the framework to use for compilation.
+ </summary>
+ <value>
+ The framework to use for compilation.
+ </value>
+ <exception cref="T:System.ArgumentNullException">The value specified is <see langword="null"/>.</exception>
+ <exception cref="T:NAnt.Core.BuildException">The specified framework is not installed, or not configured correctly.</exception>
+ <remarks>
+ We will use compiler tools and system assemblies for this framework
+ in framework-related tasks.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.PlatformName">
+ <summary>
+ Gets the name of the platform on which NAnt is currently running.
+ </summary>
+ <value>
+ The name of the platform on which NAnt is currently running.
+ </value>
+ <remarks>
+ <para>
+ Possible values are:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>win32</description>
+ </item>
+ <item>
+ <description>unix</description>
+ </item>
+ </list>
+ </remarks>
+ <exception cref="T:NAnt.Core.BuildException">NAnt does not support the current platform.</exception>
+ </member>
+ <member name="P:NAnt.Core.Project.CurrentTarget">
+ <summary>
+ Gets the current target.
+ </summary>
+ <value>
+ The current target, or <see langword="null" /> if no target is
+ executing.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.BuildFileLocalName">
+ <summary>
+ Gets the path to the build file.
+ </summary>
+ <value>
+ The path to the build file, or <see langword="null" /> if the build
+ document is not file backed.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.Document">
+ <summary>
+ Gets the active <see cref="T:NAnt.Core.Project"/> definition.
+ </summary>
+ <value>
+ The active <see cref="T:NAnt.Core.Project"/> definition.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.ConfigurationNode">
+ <summary>
+ Gets the <see cref="T:System.Xml.XmlNode"/> NAnt should use to initialize
+ configuration settings.
+ </summary>
+ <value>
+ The <see cref="T:System.Xml.XmlNode"/> NAnt should use to initialize
+ configuration settings.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.DefaultTargetName">
+ <remarks>
+ Gets the name of the target that will be executed when no other
+ build targets are specified.
+ </remarks>
+ <value>
+ The name of the target that will be executed when no other
+ build targets are specified, or <see langword="null" /> if no
+ default target is specified in the build file.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.Verbose">
+ <summary>
+ Gets a value indicating whether tasks should output more build log
+ messages.
+ </summary>
+ <value>
+ <see langword="true" /> if tasks should output more build log message;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.BuildTargets">
+ <summary>
+ The list of targets to build.
+ </summary>
+ <remarks>
+ Targets are built in the order they appear in the collection. If
+ the collection is empty the default target will be built.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.Properties">
+ <summary>
+ Gets the properties defined in this project.
+ </summary>
+ <value>The properties defined in this project.</value>
+ <remarks>
+ <para>
+ This is the collection of properties that are defined by the system
+ and property task statements.
+ </para>
+ <para>
+ These properties can be used in expansion.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.FrameworkNeutralProperties">
+ <summary>
+ Gets the framework-neutral properties defined in the NAnt
+ configuration file.
+ </summary>
+ <value>
+ The framework-neutral properties defined in the NAnt configuration
+ file.
+ </value>
+ <remarks>
+ <para>
+ This is the collection of read-only properties that are defined in
+ the NAnt configuration file.
+ </para>
+ <para>
+ These properties can only be used for expansion in framework-specific
+ and framework-neutral configuration settings. These properties are
+ not available for expansion in the build file.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.DataTypeReferences">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.DataTypeBase"/> instances defined in this project.
+ </summary>
+ <value>
+ The <see cref="T:NAnt.Core.DataTypeBase"/> instances defined in this project.
+ </value>
+ <remarks>
+ <para>
+ This is the collection of <see cref="T:NAnt.Core.DataTypeBase"/> instances that
+ are defined by <see cref="T:NAnt.Core.DataTypeBase"/> (eg fileset) declarations.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Project.Targets">
+ <summary>
+ Gets the targets defined in this project.
+ </summary>
+ <value>
+ The targets defined in this project.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Project.BuildListeners">
+ <summary>
+ Gets the build listeners for this project.
+ </summary>
+ <value>
+ The build listeners for this project.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.Optimizations">
+ <summary>
+ Allow the project construction to be optimized.
+ </summary>
+ <remarks>
+ Use this with care!
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.Optimizations.None">
+ <summary>
+ Do not perform any optimizations.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Optimizations.SkipAutomaticDiscovery">
+ <summary>
+ The project base directory must not be automatically scanned
+ for extension assemblies.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.Optimizations.SkipFrameworkConfiguration">
+ <summary>
+ Do not scan the project configuration for frameworks, and
+ do not configure the runtime and target framework.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.ProjectSettingsLoader.ScannedTasks">
+ <summary>
+ Holds a value indicating whether a scan for tasks, types and functions
+ has already been performed for the current runtime framework.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ProjectSettingsLoader.#ctor(NAnt.Core.Project)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ProjectSettingsLoader"/>
+ class for the given <see cref="P:NAnt.Core.ProjectSettingsLoader.Project"/>.
+ </summary>
+ <param name="project">The <see cref="P:NAnt.Core.ProjectSettingsLoader.Project"/> that should be configured.</param>
+ </member>
+ <member name="M:NAnt.Core.ProjectSettingsLoader.ProcessSettings">
+ <summary>
+ Loads and processes settings from the specified <see cref="T:System.Xml.XmlNode"/>
+ of the configuration file.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ProjectSettingsLoader.ProcessFrameworks(System.Xml.XmlNode)">
+ <summary>
+ Processes the framework nodes of the given platform node.
+ </summary>
+ <param name="platformNode">An <see cref="T:System.Xml.XmlNode"/> representing the platform on which NAnt is running.</param>
+ </member>
+ <member name="M:NAnt.Core.ProjectSettingsLoader.ProcessGlobalProperties(System.Xml.XmlNodeList)">
+ <summary>
+ Reads the list of global properties specified in the NAnt configuration
+ file.
+ </summary>
+ <param name="propertyNodes">An <see cref="T:System.Xml.XmlNodeList"/> representing global properties.</param>
+ </member>
+ <member name="M:NAnt.Core.ProjectSettingsLoader.GetXmlAttributeValue(System.Xml.XmlNode,System.String)">
+ <summary>
+ Gets the value of the specified attribute from the specified node.
+ </summary>
+ <param name="xmlNode">The node of which the attribute value should be retrieved.</param>
+ <param name="attributeName">The attribute of which the value should be returned.</param>
+ <returns>
+ The value of the attribute with the specified name or <see langword="null" />
+ if the attribute does not exist or has no value.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.ProjectSettingsLoader.Project">
+ <summary>
+ Gets the underlying <see cref="P:NAnt.Core.ProjectSettingsLoader.Project"/> instance.
+ </summary>
+ <value>
+ The underlying <see cref="P:NAnt.Core.ProjectSettingsLoader.Project"/> instance.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.ProjectSettingsLoader.NamespaceManager">
+ <summary>
+ Gets the <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </summary>
+ <value>
+ The <see cref="T:System.Xml.XmlNamespaceManager"/>.
+ </value>
+ <remarks>
+ The <see cref="P:NAnt.Core.ProjectSettingsLoader.NamespaceManager"/> defines the current namespace
+ scope and provides methods for looking up namespace information.
+ </remarks>
+ </member>
+ <member name="F:NAnt.Core.PropertyDictionary.Visiting">
+ <summary>
+ Constant for the "visiting" state, used when traversing a DFS of
+ property references.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.PropertyDictionary.Visited">
+ <summary>
+ Constant for the "visited" state, used when travesing a DFS of
+ property references.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.#ctor(NAnt.Core.Project)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.PropertyDictionary"/>
+ class holding properties for the given <see cref="P:NAnt.Core.PropertyDictionary.Project"/>
+ instance.
+ </summary>
+ <param name="project">The project for which the dictionary will hold properties.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.OnInsert(System.Object,System.Object)">
+ <summary>
+ Performs additional custom processes before inserting a new element
+ into the <see cref="T:System.Collections.DictionaryBase"/> instance.
+ </summary>
+ <param name="key">The key of the element to insert.</param>
+ <param name="value">The value of the element to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.OnRemove(System.Object,System.Object)">
+ <summary>
+ Performs additional custom processes before removing an element
+ from the <see cref="T:System.Collections.DictionaryBase"/> instance.
+ </summary>
+ <param name="key">The key of the element to remove.</param>
+ <param name="value">The value of the element to remove.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.OnValidate(System.Object,System.Object)">
+ <summary>
+ Performs additional custom processes when validating the element
+ with the specified key and value.
+ </summary>
+ <param name="key">The key of the element to validate.</param>
+ <param name="value">The value of the element to validate.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.AddReadOnly(System.String,System.String)">
+ <summary>
+ Adds a property that cannot be changed.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="value">The value to assign to the property.</param>
+ <remarks>
+ Properties added with this method can never be changed. Note that
+ they are removed if the <see cref="M:System.Collections.DictionaryBase.Clear"/> method is called.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.MarkDynamic(System.String)">
+ <summary>
+ Marks a property as a property of which the value is expanded at
+ execution time.
+ </summary>
+ <param name="name">The name of the property to mark as dynamic.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.Add(System.String,System.String)">
+ <summary>
+ Adds a property to the collection.
+ </summary>
+ <param name="name">The name of the property.</param>
+ <param name="value">The value to assign to the property.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.IsReadOnlyProperty(System.String)">
+ <summary>
+ Determines whether the specified property is listed as read-only.
+ </summary>
+ <param name="name">The name of the property to check.</param>
+ <returns>
+ <see langword="true" /> if the property is listed as read-only;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.IsDynamicProperty(System.String)">
+ <summary>
+ Determines whether the specified property is listed as dynamic.
+ </summary>
+ <param name="name">The name of the property to check.</param>
+ <returns>
+ <see langword="true" /> if the property is listed as dynamic;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.Inherit(NAnt.Core.PropertyDictionary,System.Collections.Specialized.StringCollection)">
+ <summary>
+ Inherits properties from an existing property dictionary Instance.
+ </summary>
+ <param name="source">Property list to inherit.</param>
+ <param name="excludes">The list of properties to exclude during inheritance.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.ExpandProperties(System.String,NAnt.Core.Location)">
+ <summary>
+ Expands a <see cref="T:System.String"/> from known properties.
+ </summary>
+ <param name="input">The replacement tokens.</param>
+ <param name="location">The <see cref="T:NAnt.Core.Location"/> to pass through for any exceptions.</param>
+ <returns>The expanded and replaced string.</returns>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.Contains(System.String)">
+ <summary>
+ Determines whether a property already exists.
+ </summary>
+ <param name="name">The name of the property to check.</param>
+ <returns>
+ <see langword="true" /> if the specified property already exists;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.Remove(System.String)">
+ <summary>
+ Removes the property with the specified name.
+ </summary>
+ <param name="name">The name of the property to remove.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.ExpandProperties(System.String,NAnt.Core.Location,System.Collections.Hashtable,System.Collections.Stack)">
+ <summary>
+ Expands a <see cref="T:System.String"/> from known properties.
+ </summary>
+ <param name="input">The replacement tokens.</param>
+ <param name="location">The <see cref="T:NAnt.Core.Location"/> to pass through for any exceptions.</param>
+ <param name="state">A mapping from properties to states. The states in question are "VISITING" and "VISITED". Must not be <see langword="null"/>.</param>
+ <param name="visiting">A stack of properties which are currently being visited. Must not be <see langword="null"/>.</param>
+ <returns>The expanded and replaced string.</returns>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.EvaluateEmbeddedExpressions(System.String,NAnt.Core.Location,System.Collections.Hashtable,System.Collections.Stack)">
+ <summary>
+ Evaluates the given expression string and returns the result
+ </summary>
+ <param name="input"></param>
+ <param name="location"></param>
+ <param name="state"></param>
+ <param name="visiting"></param>
+ <returns></returns>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.CheckDeprecation(System.String)">
+ <summary>
+ Checks whether the specified property is deprecated.
+ </summary>
+ <param name="name">The property to check.</param>
+ </member>
+ <member name="M:NAnt.Core.PropertyDictionary.CreateCircularException(System.String,System.Collections.Stack)">
+ <summary>
+ Builds an appropriate exception detailing a specified circular
+ reference.
+ </summary>
+ <param name="end">The property reference to stop at. Must not be <see langword="null"/>.</param>
+ <param name="stack">A stack of property references. Must not be <see langword="null"/>.</param>
+ <returns>
+ A <see cref="T:NAnt.Core.BuildException"/> detailing the specified circular
+ dependency.
+ </returns>
+ </member>
+ <member name="F:NAnt.Core.PropertyDictionary._readOnlyProperties">
+ <summary>
+ Maintains a list of the property names that are readonly.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.PropertyDictionary._dynamicProperties">
+ <summary>
+ Maintains a list of the property names of which the value is expanded
+ on usage, not at initalization.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.PropertyDictionary._project">
+ <summary>
+ The project for which the dictionary holds properties.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.PropertyDictionary.Item(System.String)">
+ <summary>
+ Indexer property.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.PropertyDictionary.Project">
+ <summary>
+ Gets the project for which the dictionary holds properties.
+ </summary>
+ <value>
+ The project for which the dictionary holds properties.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.Target.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.Target"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.Target.System#ICloneable#Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.Target"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.Target"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Target.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.Core.Target"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.Core.Target"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.Target.Execute">
+ <summary>
+ Executes dependent targets first, then the target.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Target.Executed">
+ <summary>
+ This indicates whether the target has already executed.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Target.Name">
+ <summary>
+ The name of the target.
+ </summary>
+ <remarks>
+ <para>
+ Hides <see cref="P:NAnt.Core.Element.Name"/> to have <see cref="T:NAnt.Core.Target"/>
+ return the name of target, not the name of XML element - which
+ would always be <c>target</c>.
+ </para>
+ <para>
+ Note: Properties are not allowed in the name.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.Target.IfCondition">
+ <summary>
+ If <see langword="true" /> then the target will be executed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Target.IfDefined">
+ <summary>
+ Gets a value indicating whether the target should be executed.
+ </summary>
+ <value>
+ <see langword="true" /> if the target should be executed; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Target.UnlessCondition">
+ <summary>
+ Opposite of <see cref="P:NAnt.Core.Target.IfDefined"/>. If <see langword="false"/>
+ then the target will be executed; otherwise, skipped. The default
+ is <see langword="false"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Target.UnlessDefined">
+ <summary>
+ Gets a value indicating whether the target should NOT be executed.
+ </summary>
+ <value>
+ <see langword="true" /> if the target should NOT be executed;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.Target.Description">
+ <summary>
+ The description of the target.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Target.DependsListString">
+ <summary>
+ Space separated list of targets that this target depends on.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.Target.Dependencies">
+ <summary>
+ A collection of target names that must be executed before this
+ target.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TargetCollection.Find(System.String)">
+ <summary>
+ Finds a target by name.
+ </summary>
+ <param name="targetName">The name of the target to find.</param>
+ <returns>
+ The <see cref="T:NAnt.Core.Target"/> with the specified name, or
+ <see langword="null"/> if no <see cref="T:NAnt.Core.Target"/> exists with
+ the given name.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TargetCollection.ToString(System.String)">
+ <summary>
+ Gets the names of the targets in the <see cref="T:NAnt.Core.TargetCollection"/>
+ combined into one list separated by the given <see cref="T:System.String"/>.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that contains a list of the names of the
+ targets in the <see cref="T:NAnt.Core.TargetCollection"/>, separated by
+ the specified <paramref name="separator"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TargetCollection.ToString">
+ <summary>
+ Gets the names of the targets in the <see cref="T:NAnt.Core.TargetCollection"/>
+ combined into one comma-separated list.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that contains a comma-separated list of the
+ names of the targets in the <see cref="T:NAnt.Core.TargetCollection"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilder.#ctor(System.Reflection.Assembly,System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.TaskBuilder"/> class
+ for the specified <see cref="T:NAnt.Core.Task"/> class in the specified
+ <see cref="T:System.Reflection.Assembly"/>.
+ </summary>
+ <remarks>
+ An <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> for the specified <see cref="T:System.Reflection.Assembly"/>
+ is cached for future use.
+ </remarks>
+ <param name="assembly">The <see cref="T:System.Reflection.Assembly"/> containing the <see cref="T:NAnt.Core.Task"/>.</param>
+ <param name="className">The class representing the <see cref="T:NAnt.Core.Task"/>.</param>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilder.#ctor(NAnt.Core.Extensibility.ExtensionAssembly,System.String)">
+ <summary>
+ Creates a new instance of the <see cref="T:NAnt.Core.TaskBuilder"/> class
+ for the specified <see cref="T:NAnt.Core.Task"/> class in the specified
+ <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/>.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:NAnt.Core.Task"/>.</param>
+ <param name="className">The class representing the <see cref="T:NAnt.Core.Task"/>.</param>
+ </member>
+ <member name="P:NAnt.Core.TaskBuilder.ClassName">
+ <summary>
+ Gets the name of the <see cref="T:NAnt.Core.Task"/> class that can be created
+ using this <see cref="T:NAnt.Core.TaskBuilder"/>.
+ </summary>
+ <value>
+ The name of the <see cref="T:NAnt.Core.Task"/> class that can be created using
+ this <see cref="T:NAnt.Core.TaskBuilder"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.TaskBuilder.TaskName">
+ <summary>
+ Gets the name of the task which the <see cref="T:NAnt.Core.TaskBuilder"/>
+ can create.
+ </summary>
+ <value>
+ The name of the task which the <see cref="T:NAnt.Core.TaskBuilder"/> can
+ create.
+ </value>
+ </member>
+ <member name="T:NAnt.Core.TaskBuilderCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.Core.TaskBuilder"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.TaskBuilderCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.#ctor(NAnt.Core.TaskBuilderCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.TaskBuilderCollection"/> class
+ with the specified <see cref="T:NAnt.Core.TaskBuilderCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.#ctor(NAnt.Core.TaskBuilder[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.TaskBuilderCollection"/> class
+ with the specified array of <see cref="T:NAnt.Core.TaskBuilder"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.Add(NAnt.Core.TaskBuilder)">
+ <summary>
+ Adds a <see cref="T:NAnt.Core.TaskBuilder"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.TaskBuilder"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.AddRange(NAnt.Core.TaskBuilder[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.TaskBuilder"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.Core.TaskBuilder"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.AddRange(NAnt.Core.TaskBuilderCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.Core.TaskBuilderCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.Core.TaskBuilderCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.Contains(NAnt.Core.TaskBuilder)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.TaskBuilder"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.TaskBuilder"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.Core.TaskBuilder"/> for the specified
+ task is in the collection.
+ </summary>
+ <param name="taskName">The name of task for which the <see cref="T:NAnt.Core.TaskBuilder"/> should be located in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.Core.TaskBuilder"/> for the
+ specified task is found in the collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.CopyTo(NAnt.Core.TaskBuilder[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.IndexOf(NAnt.Core.TaskBuilder)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.Core.TaskBuilder"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.TaskBuilder"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.Core.TaskBuilder"/>. If the <see cref="T:NAnt.Core.TaskBuilder"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.Insert(System.Int32,NAnt.Core.TaskBuilder)">
+ <summary>
+ Inserts a <see cref="T:NAnt.Core.TaskBuilder"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.Core.TaskBuilder"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.Core.TaskBuilderEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderCollection.Remove(NAnt.Core.TaskBuilder)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.Core.TaskBuilder"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.Core.TaskBuilderCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.Core.TaskBuilderCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.Core.TaskBuilder"/> for the specified task.
+ </summary>
+ <param name="taskName">The name of task for which the <see cref="T:NAnt.Core.TaskBuilder"/> should be located in the collection.</param>
+ </member>
+ <member name="T:NAnt.Core.TaskBuilderEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.Core.TaskBuilder"/> elements of a <see cref="T:NAnt.Core.TaskBuilderCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderEnumerator.#ctor(NAnt.Core.TaskBuilderCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.TaskBuilderEnumerator"/> class
+ with the specified <see cref="T:NAnt.Core.TaskBuilderCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TaskBuilderEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.TaskBuilderEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.Core.TypeFactory">
+ <summary>
+ Comprises all of the loaded, and available, tasks.
+ Use these static methods to register, initialize and create a task.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanAssembly(System.String,NAnt.Core.Task)">
+ <summary>
+ Scans the given assembly for tasks, types, functions and filters.
+ </summary>
+ <param name="assemblyFile">The assembly to scan for tasks, types, functions and filters.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanAssembly(System.Reflection.Assembly,NAnt.Core.Task)">
+ <summary>
+ Scans the given assembly for tasks, types, functions and filters.
+ </summary>
+ <param name="assembly">The assembly to scan for tasks, types, functions and filters.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="assembly"/> contains at
+ least one "extension"; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanDir(System.String,NAnt.Core.Task,System.Boolean)">
+ <summary>
+ Scans the path for any task assemblies and adds them.
+ </summary>
+ <param name="path">The directory to scan in.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <param name="failOnError"><see cref="T:System.Boolean"/> indicating whether scanning of the directory should halt on first error.</param>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.AddProject(NAnt.Core.Project)">
+ <summary>
+ Adds any task assemblies in the project base directory
+ and its <c>tasks</c> subdirectory.
+ </summary>
+ <param name="project">The project to work from.</param>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.AddProject(NAnt.Core.Project,System.Boolean)">
+ <summary>
+ Registers the project with <see cref="T:NAnt.Core.TypeFactory"/>, and optionally
+ scan the <see cref="P:NAnt.Core.Project.BaseDirectory"/> for extension assemblies.
+ </summary>
+ <param name="project">The project to work from.</param>
+ <param name="scan">Specified whether to scan the <see cref="P:NAnt.Core.Project.BaseDirectory"/> for extension assemblies.</param>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.LookupFunction(System.String,NAnt.Core.Extensibility.FunctionArgument[],NAnt.Core.Project)">
+ <summary>
+ Looks up a function by name and argument count.
+ </summary>
+ <param name="functionName">The name of the function to lookup, including namespace prefix.</param>
+ <param name="args">The argument of the function to lookup.</param>
+ <param name="project">The <see cref="T:NAnt.Core.Project"/> in which the function is invoked.</param>
+ <returns>
+ A <see cref="T:System.Reflection.MethodInfo"/> representing the function, or
+ <see langword="null"/> if a function with the given name and
+ arguments does not exist.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.CreateTask(System.Xml.XmlNode,NAnt.Core.Project)">
+ <summary>
+ Creates a new <see cref="T:NAnt.Core.Task"/> instance for the given XML and
+ <see cref="T:NAnt.Core.Project"/>.
+ </summary>
+ <param name="taskNode">The XML to initialize the task with.</param>
+ <param name="proj">The <see cref="T:NAnt.Core.Project"/> that the <see cref="T:NAnt.Core.Task"/> belongs to.</param>
+ <returns>
+ The new <see cref="T:NAnt.Core.Task"/> instance.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanTypeForTasks(NAnt.Core.Extensibility.ExtensionAssembly,System.Type,NAnt.Core.Task)">
+ <summary>
+ Scans a given <see cref="T:System.Type"/> for tasks.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:System.Type"/> to scan.</param>
+ <param name="type">The <see cref="T:System.Type"/> to scan.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="type"/> represents a
+ <see cref="T:NAnt.Core.Task"/>; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanTypeForDataTypes(NAnt.Core.Extensibility.ExtensionAssembly,System.Type,NAnt.Core.Task)">
+ <summary>
+ Scans a given <see cref="T:System.Type"/> for data type.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:System.Type"/> to scan.</param>
+ <param name="type">The <see cref="T:System.Type"/> to scan.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="type"/> represents a
+ data type; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanTypeForFunctions(System.Type,NAnt.Core.Task)">
+ <summary>
+ Scans a given <see cref="T:System.Type"/> for functions.
+ </summary>
+ <param name="type">The <see cref="T:System.Type"/> to scan.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="type"/> represents a
+ valid set of funtions; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.Core.TypeFactory.ScanTypeForFilters(NAnt.Core.Extensibility.ExtensionAssembly,System.Type,NAnt.Core.Task)">
+ <summary>
+ Scans a given <see cref="T:System.Type"/> for filters.
+ </summary>
+ <param name="extensionAssembly">The <see cref="T:NAnt.Core.Extensibility.ExtensionAssembly"/> containing the <see cref="T:System.Type"/> to scan.</param>
+ <param name="type">The <see cref="T:System.Type"/> to scan.</param>
+ <param name="task">The <see cref="T:NAnt.Core.Task"/> which will be used to output messages to the build log.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="type"/> represents a
+ <see cref="T:NAnt.Core.Filters.Filter"/>; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.Core.TypeFactory.TaskBuilders">
+ <summary>
+ Gets the list of loaded <see cref="T:NAnt.Core.TaskBuilder"/> instances.
+ </summary>
+ <value>
+ List of loaded <see cref="T:NAnt.Core.TaskBuilder"/> instances.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.TypeFactory.DataTypeBuilders">
+ <summary>
+ Gets the list of loaded <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> instances.
+ </summary>
+ <value>
+ List of loaded <see cref="T:NAnt.Core.DataTypeBaseBuilder"/> instances.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.TypeFactory.FilterBuilders">
+ <summary>
+ Gets the list of loaded <see cref="T:NAnt.Core.Filters.FilterBuilder"/> instances.
+ </summary>
+ <value>
+ List of loaded <see cref="T:NAnt.Core.Filters.FilterBuilder"/> instances.
+ </value>
+ </member>
+ <member name="M:NAnt.Core.ValidationException.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ValidationException"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.ValidationException.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ValidationException"/>
+ class with a descriptive message.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ </member>
+ <member name="M:NAnt.Core.ValidationException.#ctor(System.String,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ValidationException"/>
+ class with the specified descriptive message and inner exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="innerException">A nested exception that is the cause of the current exception.</param>
+ </member>
+ <member name="M:NAnt.Core.ValidationException.#ctor(System.String,NAnt.Core.Location)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ValidationException"/>
+ class with a descriptive message and the location in the build file
+ that caused the exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="location">The location in the build file where the exception occured.</param>
+ </member>
+ <member name="M:NAnt.Core.ValidationException.#ctor(System.String,NAnt.Core.Location,System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ValidationException"/>
+ class with a descriptive message, the location in the build file and
+ an instance of the exception that is the cause of the current
+ exception.
+ </summary>
+ <param name="message">A descriptive message to include with the exception.</param>
+ <param name="location">The location in the build file where the exception occured.</param>
+ <param name="innerException">A nested exception that is the cause of the current exception.</param>
+ </member>
+ <member name="M:NAnt.Core.ValidationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.ValidationException"/>
+ class with serialized data.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ </member>
+ <member name="T:NAnt.Core.XmlLogger">
+ <summary>
+ Used to wrap log messages in xml &lt;message/&gt; elements.
+ </summary>
+ </member>
+ <member name="F:NAnt.Core.XmlLogger._projectStack">
+ <summary>
+ Holds the stack of currently executing projects.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.XmlLogger"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Core.XmlLogger"/> class
+ with serialized data.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data.</param>
+ <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+ <summary>
+ Populates <paramref name="info"/> with the data needed to serialize
+ the <see cref="T:NAnt.Core.XmlLogger"/> instance.
+ </summary>
+ <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
+ <param name="context">The destination for this serialization.</param>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.ToString">
+ <summary>
+ Returns the contents of log captured.
+ </summary>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.BuildStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a build has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event is fired before any targets have started.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.BuildFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that the last target has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.TargetStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a target has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.TargetFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a target has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.TaskStarted(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has started.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.TaskFinished(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a task has finished.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ This event will still be fired if an error occurred during the build.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.MessageLogged(System.Object,NAnt.Core.BuildEventArgs)">
+ <summary>
+ Signals that a message has been logged.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NAnt.Core.BuildEventArgs"/> object that contains the event data.</param>
+ <remarks>
+ Only messages with a priority higher or equal to the threshold of
+ the logger will actually be output in the build log.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Core.XmlLogger.Flush">
+ <summary>
+ Flushes buffered build events or messages to the underlying storage.
+ </summary>
+ </member>
+ <member name="P:NAnt.Core.XmlLogger.Threshold">
+ <summary>
+ Gets or sets the highest level of message this logger should respond
+ to.
+ </summary>
+ <value>
+ The highest level of message this logger should respond to.
+ </value>
+ <remarks>
+ Only messages with a message level higher than or equal to the given
+ level should be written to the log.
+ </remarks>
+ </member>
+ <member name="P:NAnt.Core.XmlLogger.EmacsMode">
+ <summary>
+ Gets or sets a value indicating whether to produce emacs (and other
+ editor) friendly output.
+ </summary>
+ <value>
+ <see langword="false" /> as it has no meaning in XML format.
+ </value>
+ </member>
+ <member name="P:NAnt.Core.XmlLogger.OutputWriter">
+ <summary>
+ Gets or sets the <see cref="T:System.IO.TextWriter"/> to which the logger is
+ to send its output.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.dll
new file mode 100755
index 0000000..7e2b702
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.xml
new file mode 100755
index 0000000..39ca76f
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.DotNetTasks.xml
@@ -0,0 +1,5373 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.DotNetTasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.DotNet.Tasks.AssemblyInfoTask">
+ <summary>
+ Generates an AssemblyInfo file using the attributes given.
+ </summary>
+ <example>
+ <para>
+ Create a C# AssemblyInfo file containing the specified assembly-level
+ attributes.
+ </para>
+ <code>
+ <![CDATA[
+ <asminfo output="AssemblyInfo.cs" language="CSharp">
+ <imports>
+ <import namespace="System" />
+ <import namespace="System.Reflection" />
+ <import namespace="System.EnterpriseServices" />
+ <import namespace="System.Runtime.InteropServices" />
+ </imports>
+ <attributes>
+ <attribute type="ComVisibleAttribute" value="false" />
+ <attribute type="CLSCompliantAttribute" value="true" />
+ <attribute type="AssemblyVersionAttribute" value="1.0.0.0" />
+ <attribute type="AssemblyTitleAttribute" value="My fun assembly" />
+ <attribute type="AssemblyDescriptionAttribute" value="More fun than a barrel of monkeys" />
+ <attribute type="AssemblyCopyrightAttribute" value="Copyright (c) 2002, Monkeyboy, Inc." />
+ <attribute type="ApplicationNameAttribute" value="FunAssembly" />
+ </attributes>
+ <references>
+ <include name="System.EnterpriseServices.dll" />
+ </references>
+ </asminfo>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Create a C# AssemblyInfo file containing an attribute with multiple
+ named properties by setting the <see cref="P:NAnt.DotNet.Types.AssemblyAttribute.AsIs"/>
+ attribute on the <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> element to
+ <see langword="true"/>.
+ </para>
+ <code>
+ <![CDATA[
+ <asminfo output="AssemblyInfo.cs" language="CSharp">
+ <imports>
+ <import namespace="log4net.Config" />
+ </imports>
+ <attributes>
+ <attribute type="DOMConfiguratorAttribute" value="ConfigFile=&quot;config.log4net&quot;,Watch=true" asis="true" />
+ </attributes>
+ <references>
+ <include name="log4net.dll" />
+ </references>
+ </asminfo>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.ExecuteTask">
+ <summary>
+ Generates an AssemblyInfo file.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.NeedsPersisting(System.IO.Stream)">
+ <summary>
+ Determines whether the specified AssemblyInfo file in the given
+ <see cref="T:System.IO.Stream"/> needs to be persisted.
+ </summary>
+ <param name="generatedAsmInfoStream"><see cref="T:System.IO.Stream"/> holding the newly generated AssemblyInfo source.</param>
+ <returns>
+ <see langword="true"/> if the generated AssemblyInfo source needs
+ to be persisted; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.Output">
+ <summary>
+ Name of the AssemblyInfo file to generate.
+ </summary>
+ <value>
+ The name of the AssemblyInfo file to generate.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.Language">
+ <summary>
+ The code language in which the AssemblyInfo file should be
+ generated.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.AssemblyAttributes">
+ <summary>
+ The assembly-level attributes to generate.
+ </summary>
+ <value>
+ The assembly-level attributes to generate.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.Imports">
+ <summary>
+ The namespaces to import.
+ </summary>
+ <value>
+ The namespaces to import.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.References">
+ <summary>
+ Assembly files used to locate the types of the specified attributes.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage">
+ <summary>
+ Defines the supported code languages for generating an AssemblyInfo
+ file.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage.CSharp">
+ <summary>
+ A value for generating C# code.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage.JScript">
+ <summary>
+ A value for generating JScript code.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage.VB">
+ <summary>
+ A value for generating Visual Basic code.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider">
+ <summary>
+ Encapsulates functionality to generate a code file with imports
+ and assembly-level attributes.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider.#ctor(NAnt.DotNet.Tasks.AssemblyInfoTask,NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider"/>
+ for the specified <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage"/>.
+ </summary>
+ <param name="assemblyInfoTask">The <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask"/> for which an instance of the <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider"/> class should be initialized.</param>
+ <param name="codeLanguage">The <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage"/> for which an instance of the <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider"/> class should be initialized.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider.GenerateImportCode(System.Collections.Specialized.StringCollection,System.IO.TextWriter)">
+ <summary>
+ Generates code for the specified imports.
+ </summary>
+ <param name="imports">The imports for which code should be generated.</param>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the generated code will be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider.GenerateAssemblyAttributesCode(NAnt.DotNet.Types.AssemblyAttributeCollection,System.Collections.Specialized.StringCollection,System.Collections.Specialized.StringCollection,System.IO.TextWriter)">
+ <summary>
+ Generates code for the specified assembly attributes.
+ </summary>
+ <param name="assemblyAttributes">The assembly attributes for which code should be generated.</param>
+ <param name="imports">Imports used to resolve the assembly attribute names to fully qualified type names.</param>
+ <param name="assemblies">Assembly that will be used to resolve the attribute names to <see cref="T:System.Type"/> instances.</param>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the generated code will be written.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider.Language">
+ <summary>
+ Gets the <see cref="T:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeLanguage"/> in which the AssemblyInfo
+ code will be generated.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyInfoTask.CodeProvider.Generator">
+ <summary>
+ Gets the <see cref="T:System.CodeDom.Compiler.ICodeGenerator"/> that will be used to
+ generate the AssemblyInfo code.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.AssemblyInfoTask.TypedValueGatherer">
+ <summary>
+ Responsible for returning the specified value converted to a
+ <see cref="T:System.Type"/> accepted by a constructor for a given
+ <see cref="T:System.Type"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.TypedValueGatherer.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for
+ this instance.
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease"/> used to control the lifetime
+ policy for this instance. This is the current lifetime service object
+ for this instance if one exists; otherwise, a new lifetime service
+ object initialized with a lease that will never time out.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.TypedValueGatherer.GetTypedValue(System.Collections.Specialized.StringCollection,System.Collections.Specialized.StringCollection,System.String,System.String)">
+ <summary>
+ Retrieves the specified <see cref="T:System.Type"/> corresponding with the specified
+ type name from a list of assemblies.
+ </summary>
+ <param name="assemblies">The collection of assemblies that the type should tried to be instantiated from.</param>
+ <param name="imports">The list of imports that can be used to resolve the typename to a full typename.</param>
+ <param name="typename">The typename that should be used to determine the type to which the specified value should be converted.</param>
+ <param name="value">The <see cref="T:System.String"/> value that should be converted to a typed value.</param>
+ <returns></returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para><paramref name="value"/> is <see langword="null"/> and the <see cref="T:System.Type"/> identified by <paramref name="typename"/> has no default public constructor.</para>
+ <para>-or-</para>
+ <para><paramref name="value"/> cannot be converted to a value that's suitable for one of the constructors of the <see cref="T:System.Type"/> identified by <paramref name="typename"/>.</para>
+ <para>-or-</para>
+ <para>The <see cref="T:System.Type"/> identified by <paramref name="typename"/> has no suitable constructor.</para>
+ <para>-or-</para>
+ <para>A <see cref="T:System.Type"/> identified by <paramref name="typename"/> could not be located or loaded.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyInfoTask.TypedValueGatherer.FindType(System.Collections.Specialized.StringCollection,System.Collections.Specialized.StringCollection,System.String)">
+ <summary>
+ Finds a given type from a given list of assemblies and import statements.
+ </summary>
+ <param name='assemblies'>
+ A list of assemblies to search for a given type.
+ </param>
+ <param name='imports'>
+ A list of import statements to search for a given type.
+ </param>
+ <param name='typename'>
+ The name of the type to locate.
+ </param>
+ <returns>
+ The type object found from assemblies and import statements based
+ on the name of the type.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.AssemblyLinkerTask">
+ <summary>
+ Wraps <c>al.exe</c>, the assembly linker for the .NET Framework.
+ </summary>
+ <remarks>
+ <para>
+ All specified sources will be embedded using the <c>/embed</c> flag.
+ Other source types are not supported.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Create a library containing all icon files in the current directory.
+ </para>
+ <code>
+ <![CDATA[
+ <al output="MyIcons.dll" target="lib">
+ <sources>
+ <include name="*.ico" />
+ </sources>
+ </al>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Create an executable assembly manifest from modules.
+ </para>
+ <code>
+ <![CDATA[
+ <al output="Client.exe" target="exe" main="Program.Main">
+ <modules>
+ <include name="Client.netmodule" />
+ <include name="Common.netmodule" />
+ </modules>
+ </al>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyLinkerTask.ExecuteTask">
+ <summary>
+ Generates an assembly manifest.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.AssemblyLinkerTask.NeedsCompiling">
+ <summary>
+ Determines whether the assembly manifest needs compiling or is
+ uptodate.
+ </summary>
+ <returns>
+ <see langword="true" /> if the assembly manifest needs compiling;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.AlgorithmID">
+ <summary>
+ Specifies an algorithm (in hexadecimal) to hash all files in a
+ multifile assembly except the file that contains the assembly
+ manifest. The default algorithm is CALG_SHA1.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Company">
+ <summary>
+ Specifies a string for the <b>Company</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Company</b> field in the assembly.
+ </value>
+ <remarks>
+ If <see cref="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Company"/> is an empty string (""), the Win32
+ <b>Company</b> resource appears as a single space.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Configuration">
+ <summary>
+ Specifies a string for the <b>Configuration</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Configuration</b> field in the assembly.
+ </value>
+ <remarks>
+ If <see cref="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Configuration"/> is an empty string (""), the Win32
+ <b>Configuration</b> resource appears as a single space.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Copyright">
+ <summary>
+ Specifies a string for the <b>Copyright</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Copyright</b> field in the assembly.
+ </value>
+ <remarks>
+ If <see cref="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Copyright"/> is an empty string (""), the Win32
+ <b>Copyright</b> resource appears as a single space.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Culture">
+ <summary>
+ The culture string associated with the output assembly.
+ The string must be in RFC 1766 format, such as "en-US".
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/c[ulture]:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.DelaySign">
+ <summary>
+ Specifies whether the assembly should be partially signed. The default
+ is <see langword="NAnt.DotNet.Types.DelaySign.NotSet" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Description">
+ <summary>
+ Specifies a string for the <b>Description</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Description</b> field in the assembly.
+ </value>
+ <remarks>
+ If <see cref="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Description"/> is an empty string (""), the Win32
+ <b>Description</b> resource appears as a single space.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.EvidenceFile">
+ <summary>
+ Security evidence file to embed.
+ </summary>
+ <value>
+ The security evidence file to embed.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/e[vidence]</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.FileVersion">
+ <summary>
+ Specifies a string for the <b>File Version</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>File Version</b> field in the assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Flags">
+ <summary>
+ Specifies a value (in hexadecimal) for the <b>Flags</b> field in
+ the assembly.
+ </summary>
+ <value>
+ A value (in hexadecimal) for the <b>Flags</b> field in the assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.KeyContainer">
+ <summary>
+ Specifies a container that holds a key pair.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.KeyFile">
+ <summary>
+ Specifies a file (filename) that contains a key pair or
+ just a public key to sign an assembly.
+ </summary>
+ <value>
+ The complete path to the key file.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/keyf[ile]:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.MainMethod">
+ <summary>
+ Specifies the fully-qualified name (class.method) of the method to
+ use as an entry point when converting a module to an executable file.
+ </summary>
+ <value>
+ The fully-qualified name (class.method) of the method to use as an
+ entry point when converting a module to an executable file.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.ModuleSet">
+ <summary>
+ One or more modules to be compiled into an assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.OutputFile">
+ <summary>
+ The name of the output file for the assembly manifest.
+ </summary>
+ <value>
+ The complete output path for the assembly manifest.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/out</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.OutputTarget">
+ <summary>
+ The target type (one of <c>lib</c>, <c>exe</c>, or <c>winexe</c>).
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/t[arget]:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Product">
+ <summary>
+ Specifies a string for the <b>Product</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Product</b> field in the assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.ProductVersion">
+ <summary>
+ Specifies a string for the <b>Product Version</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Product Version</b> field in the assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Resources">
+ <summary>
+ The set of resources to embed.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.EmbeddedResources">
+ <summary>
+ The set of compiled resources to embed.
+ </summary>
+ <remarks>
+ Do not yet expose this to build authors.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.SupportsTemplate">
+ <summary>
+ Indicates whether the assembly linker for a given target framework
+ supports the "template" option, which takes an assembly from which
+ to get all options except the culture field.
+ The default is <see langword="true" />.
+ </summary>
+ <remarks>
+ TODO: remove this once Mono bug #74814 is fixed.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.TemplateFile">
+ <summary>
+ Specifies an assembly from which to get all options except the
+ culture field.
+ </summary>
+ <value>
+ The complete path to the assembly template.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/template:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Title">
+ <summary>
+ Specifies a string for the <b>Title</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Title</b> field in the assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Trademark">
+ <summary>
+ Specifies a string for the <b>Trademark</b> field in the assembly.
+ </summary>
+ <value>
+ A string for the <b>Trademark</b> field in the assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Version">
+ <summary>
+ Specifies version information for the assembly. The format of the
+ version string is <c>major</c>.<c>minor</c>.<c>build</c>.<c>revision</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Win32Icon">
+ <summary>
+ Icon to associate with the assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.Win32Res">
+ <summary>
+ Inserts a Win32 resource (.res file) in the output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.AssemblyLinkerTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program or
+ <see langword="null" /> if the task is not being executed.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.CompilerBase">
+ <summary>
+ Provides the abstract base class for compiler tasks.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.CompilerBase.CodebehindExtensions">
+ <summary>
+ Contains a list of extensions for all file types that should be treated as
+ 'code-behind' when looking for resources. Ultimately this will determine
+ if we use the "namespace+filename" or "namespace+classname" algorithm, since
+ code-behind will use the "namespace+classname" algorithm.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.CompilerBase.CultureNames">
+ <summary>
+ Case-insensitive list of valid culture names for this platform.
+ </summary>
+ <remarks>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the culture name and
+ the value is <see langword="null"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.#cctor">
+ <summary>
+ Class constructor for <see cref="T:NAnt.DotNet.Tasks.CompilerBase"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.ExecuteTask">
+ <summary>
+ Compiles the sources and resources.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.GetManifestResourceName(NAnt.DotNet.Types.ResourceFileSet,System.String,System.String,System.String)">
+ <summary>
+ Determines the manifest resource name of the given resource file.
+ </summary>
+ <param name="resources">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> containing information that will used to assemble the manifest resource name.</param>
+ <param name="resourcePhysicalFile">The resource file of which the manifest resource name should be determined.</param>
+ <param name="resourceLogicalFile">The logical location of the resource file.</param>
+ <param name="dependentFile">The source file on which the resource file depends.</param>
+ <returns>
+ The manifest resource name of the specified resource file.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.GetManifestResourceName(NAnt.DotNet.Types.ResourceFileSet,System.String)">
+ <summary>
+ Determines the manifest resource name of the given resource file.
+ </summary>
+ <param name="resources">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> containing information that will used to assemble the manifest resource name.</param>
+ <param name="resourceFile">The resource file of which the manifest resource name should be determined.</param>
+ <returns>
+ The manifest resource name of the specified resource file.
+ </returns>
+ <remarks>
+ For .resx resources, the name of the dependent is determined by
+ replacing the extension of the file with the extension of the
+ source files for the compiler, and removing the culture name from
+ the file name for localized resources.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.PerformSearchForResourceLinkage(System.IO.TextReader)">
+ <summary>
+ Extracts the associated namespace/classname linkage found in the
+ given stream.
+ </summary>
+ <param name="sr">The read-only stream of the source file to search.</param>
+ <returns>
+ The namespace/classname of the source file matching the resource.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WritePackageReferences(System.IO.TextWriter)">
+ <summary>
+ Writes package references to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the package references should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteWarningsAsError(System.IO.TextWriter)">
+ <summary>
+ Writes list of warnings to (not) treat as errors to the specified
+ <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the list of warnings should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteNoWarnList(System.IO.TextWriter)">
+ <summary>
+ Writes list of warnings to suppress to the specified
+ <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the list of warnings to suppress should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteConditionalCompilationConstants(System.IO.TextWriter)">
+ <summary>
+ Writes conditional compilation constants to the specified
+ <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the conditional compilation constants should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteModuleReferences(System.IO.TextWriter)">
+ <summary>
+ Writes module references to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the module references should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteOptions(System.IO.TextWriter)">
+ <summary>
+ Allows derived classes to provide compiler-specific options.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteOption(System.IO.TextWriter,System.String)">
+ <summary>
+ Writes an option using the default output format.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ <param name="name">The name of the option which should be passed to the compiler.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.WriteOption(System.IO.TextWriter,System.String,System.String)">
+ <summary>
+ Writes an option and its value using the default output format.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ <param name="name">The name of the option which should be passed to the compiler.</param>
+ <param name="value">The value of the option which should be passed to the compiler.</param>
+ <remarks>
+ The combination of <paramref name="name"/> and
+ <paramref name="value"/> (separated by a colon) is quoted
+ unless <paramref name="value"/> is already surrounded by quotes.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.NeedsCompiling">
+ <summary>
+ Determines whether compilation is needed.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.GetResourceLinkage(System.String,System.Globalization.CultureInfo)">
+ <summary>
+ Finds the correct namespace/classname for a resource file from the
+ given dependent source file.
+ </summary>
+ <param name="dependentFile">The file from which the resource linkage of the resource file should be determined.</param>
+ <param name="resourceCulture">The culture of the resource file for which the resource linkage should be determined.</param>
+ <returns>
+ The namespace/classname of the source file matching the resource or
+ <see langword="null" /> if the dependent source file does not exist.
+ </returns>
+ <remarks>
+ This behaviour may be overidden by each particular compiler to
+ support the namespace/classname syntax for that language.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.LinkResourceAssembly(System.Collections.Hashtable,System.IO.FileInfo,System.String)">
+ <summary>
+ Link a list of files into a resource assembly.
+ </summary>
+ <param name="resourceFiles">The collection of resources.</param>
+ <param name="resourceAssemblyFile">Resource assembly to generate</param>
+ <param name="culture">Culture of the generated assembly.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.CompileResxResources(System.Collections.Specialized.StringCollection)">
+ <summary>
+ Compiles a set of resx files to a .resources files.
+ </summary>
+ <param name="resxFiles">The set of resx files to compile.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.GetResourceCulture(System.String,System.String)">
+ <summary>
+ Determines the culture associated with a given resource file by
+ scanning the filename for valid culture names.
+ </summary>
+ <param name="resourceFile">The resource file path to check for culture info.</param>
+ <param name="dependentFile">The file on which the resource file depends.</param>
+ <returns>
+ A valid <see cref="T:System.Globalization.CultureInfo"/> instance if the resource is
+ associated with a specific culture; otherwise, <see langword="null"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Debug">
+ <summary>
+ Generate debug output. The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ Only used for &lt;jsc&gt; tasks, but retained for backward
+ compatibility (Clover.NET).
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.OutputFile">
+ <summary>
+ The output file created by the compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.OutputTarget">
+ <summary>
+ Output type. Possible values are <c>exe</c>, <c>winexe</c>,
+ <c>library</c> or <c>module</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Define">
+ <summary>
+ Define conditional compilation symbol(s).
+ </summary>
+ <remarks>
+ <para>
+ Corresponds to <c>/d[efine]:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Win32Icon">
+ <summary>
+ Icon to associate with the application.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds to <c>/win32icon:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Win32Res">
+ <summary>
+ Specifies a Win32 resource file (.res).
+ </summary>
+ <remarks>
+ <para>
+ Corresponds to <c>/win32res[ource]:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.WarnAsError">
+ <summary>
+ Instructs the compiler to treat all warnings as errors. The default
+ is <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds to the <c>/warnaserror[+|-]</c> flag of the compiler.
+ </para>
+ <para>
+ When this property is set to <see langword="true" />, any messages
+ that would ordinarily be reported as warnings will instead be
+ reported as errors.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.WarningAsError">
+ <summary>
+ Controls which warnings should be reported as errors.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.NoWarn">
+ <summary>
+ Specifies a comma-separated list of warnings that should be suppressed
+ by the compiler.
+ </summary>
+ <value>
+ Comma-separated list of warnings that should be suppressed by the
+ compiler.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/nowarn</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SuppressWarnings">
+ <summary>
+ Specifies a list of warnings that you want the compiler to suppress.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ForceRebuild">
+ <summary>
+ Instructs NAnt to recompile the output file regardless of the file timestamps.
+ </summary>
+ <remarks>
+ When this parameter is to <see langword="true" />, NAnt will always
+ run the compiler to rebuild the output file, regardless of the file timestamps.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.MainType">
+ <summary>
+ Specifies which type contains the Main method that you want to use
+ as the entry point into the program.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds to the <c>/m[ain]:</c> flag of the compiler.
+ </para>
+ <para>
+ Use this property when creating an executable file. If this property
+ is not set, the compiler searches for a valid Main method in all
+ public classes.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.KeyContainer">
+ <summary>
+ Specifies the key pair container used to strongname the assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.KeyFile">
+ <summary>
+ Specifies a strong name key file.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.DelaySign">
+ <summary>
+ Specifies whether to delay sign the assembly using only the public
+ portion of the strong name key. The default is
+ <see cref="T:NAnt.DotNet.Types.DelaySign.NotSet" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Lib">
+ <summary>
+ Additional directories to search in for assembly references.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/lib[path]:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.References">
+ <summary>
+ Reference metadata from the specified assembly files.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Packages">
+ <summary>
+ Specifies list of packages to reference.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourcesList">
+ <summary>
+ Resources to embed.
+ </summary>
+ <remarks>
+ <para>
+ This can be a combination of resx files and file resources.
+ </para>
+ <para>
+ .resx files will be compiled by <see cref="T:NAnt.DotNet.Tasks.ResGenTask"/> and then
+ embedded into the resulting executable.
+ </para>
+ <para>
+ The <see cref="P:NAnt.DotNet.Types.ResourceFileSet.Prefix"/> property is used to make
+ up the resource name added to the assembly manifest for non-resx
+ files.
+ </para>
+ <para>
+ For .resx files the namespace from the matching source file is used
+ as prefix. This matches the behaviour of Visual Studio.
+ </para>
+ <para>
+ Multiple resources tags with different namespace prefixes may be
+ specified.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Modules">
+ <summary>
+ Link the specified modules into this assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Sources">
+ <summary>
+ The set of source files for compilation.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SupportsPackageReferences">
+ <summary>
+ Indicates whether package references are supported by compiler for
+ a given target framework. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SupportsWarnAsErrorList">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "warnaserror" option that takes a list of warnings. The default
+ is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SupportsNoWarnList">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ a command line option that allows a list of warnings to be
+ suppressed. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SupportsKeyContainer">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "keycontainer" option. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SupportsKeyFile">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "keyfile" option. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.SupportsDelaySign">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "delaysign" option. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.Extension">
+ <summary>
+ Gets the file extension required by the current compiler.
+ </summary>
+ <value>
+ The file extension required by the current compiler.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ClassNameRegex">
+ <summary>
+ Gets the class name regular expression for the language of the current compiler.
+ </summary>
+ <value> class name regular expression for the language of the current compiler</value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.NamespaceRegex">
+ <summary>
+ Gets the namespace regular expression for the language of the current compiler.
+ </summary>
+ <value> namespace regular expression for the language of the current compiler</value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage">
+ <summary>
+ Holds class and namespace information for resource (*.resx) linkage.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/>
+ class.
+ </summary>
+ <param name="namespaceName">The namespace the resource is under.</param>
+ <param name="className">The class name the resource is associated with.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.ToString">
+ <summary>
+ Returns the resource linkage as a string.
+ </summary>
+ <returns>
+ A string representation of the resource linkage.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.IsValid">
+ <summary>
+ Gets a value indicating whether the <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/>
+ instances contains valid data.
+ </summary>
+ <value>
+ <see langword="true"/> if the <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/>
+ instance contains valid data; otherwise, <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.HasNamespaceName">
+ <summary>
+ Gets a value indicating whether a namespace name is available
+ for this <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/> instance.
+ </summary>
+ <value>
+ <see langword="true"/> if a namespace name is available for
+ this <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/> instance; otherwise,
+ <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.HasClassName">
+ <summary>
+ Gets a value indicating whether a class name is available
+ for this <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/> instance.
+ </summary>
+ <value>
+ <see langword="true"/> if a class name is available for
+ this <see cref="T:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage"/> instance; otherwise,
+ <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.NamespaceName">
+ <summary>
+ Gets the name of namespace the resource is under.
+ </summary>
+ <value>
+ The name of namespace the resource is under.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.ClassName">
+ <summary>
+ Gets the name of the class (most likely a form) that the resource
+ is associated with.
+ </summary>
+ <value>
+ The name of the class the resource is associated with.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CompilerBase.ResourceLinkage.Culture">
+ <summary>
+ Gets the culture that the resource is associated with.
+ </summary>
+ <value>
+ The culture that the resource is associated with.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.CscTask">
+ <summary>
+ Compiles C# programs.
+ </summary>
+ <remarks>
+ <note>
+ In order to have <see cref="T:NAnt.DotNet.Tasks.CscTask"/> generate manifest resource names
+ that match those generated by Microsoft Visual Studio.NET, the value of
+ the <see cref="P:NAnt.DotNet.Types.ResourceFileSet.Prefix"/> attribute of the &lt;<see cref="P:NAnt.DotNet.Tasks.CompilerBase.ResourcesList"/>&gt;
+ element should match the "Default Namespace" of the C# project, and the
+ value of the <see cref="P:NAnt.DotNet.Types.ResourceFileSet.DynamicPrefix"/> attribute
+ should be set to "<see langword="true"/>".
+ </note>
+ </remarks>
+ <example>
+ <para>Compile a "HelloWorld" application, including embedded resources.</para>
+ <code>
+ <![CDATA[
+ <csc target="exe" output="HelloWorld.exe" debug="true">
+ <nowarn>
+ <!-- do not report warnings for missing XML comments -->
+ <warning number="0519" />
+ </nowarn>
+ <sources>
+ <include name="**/*.cs" />
+ </sources>
+ <resources dynamicprefix="true" prefix="HelloWorld">
+ <include name="**/*.resx" />
+ </resources>
+ <references>
+ <include name="System.dll" />
+ <include name="System.Data.dll" />
+ </references>
+ </csc>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CscTask.WriteOptions(System.IO.TextWriter)">
+ <summary>
+ Writes the compiler options to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.CscTask.NeedsCompiling">
+ <summary>
+ Determines whether compilation is needed.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.BaseAddress">
+ <summary>
+ The preferred base address at which to load a DLL. The default base
+ address for a DLL is set by the .NET Framework common language
+ runtime.
+ </summary>
+ <value>
+ The preferred base address at which to load a DLL.
+ </value>
+ <remarks>
+ This address can be specified as a decimal, hexadecimal, or octal
+ number.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.DebugOutput">
+ <summary>
+ Specifies the type of debugging information generated by the
+ compiler. The default is <see cref="T:NAnt.DotNet.Types.DebugOutput.None" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Debug">
+ <summary>
+ No longer expose this to build authors. Use <see cref="P:NAnt.DotNet.Tasks.CscTask.DebugOutput"/>
+ instead.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.DocFile">
+ <summary>
+ The name of the XML documentation file to generate.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/doc:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.FileAlign">
+ <summary>
+ Specifies the size of sections in the output file. Valid values are
+ 512, 1024, 2048, 4096, and 8192.
+ </summary>
+ <value>
+ The size of sections in the output file.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.NoStdLib">
+ <summary>
+ Instructs the compiler not to import mscorlib.dll. The default is
+ <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/nostdlib[+|-]</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.NoConfig">
+ <summary>
+ Instructs the compiler not to use implicit references to assemblies.
+ The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/noconfig</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Checked">
+ <summary>
+ Specifies whether an integer arithmetic statement that is not in
+ the scope of the <c>checked</c> or <c>unchecked</c> keywords and
+ that results in a value outside the range of the data type should
+ cause a run-time exception. The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/checked[+|-]</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Unsafe">
+ <summary>
+ Instructs the compiler to allow code that uses the <c>unsafe</c>
+ keyword. The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/unsafe[+|-]</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.LangVersion">
+ <summary>
+ Causes the compiler to only accept syntax that is included in a
+ given specification.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/langversion</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Optimize">
+ <summary>
+ Specifies whether the compiler should perform optimizations to the
+ make output files smaller, faster, and more effecient. The default
+ is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the compiler should perform optimizations;
+ otherwise, <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/optimize[+|-]</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Platform">
+ <summary>
+ Specifies which platform version of common language runtime (CLR)
+ can run the output file.
+ </summary>
+ <value>
+ The platform version of common language runtime (CLR) that can run
+ the output file.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/platform</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.WarningLevel">
+ <summary>
+ Specifies the warning level for the compiler to display. Valid values
+ are <c>0</c>-<c>4</c>. The default is <c>4</c>.
+ </summary>
+ <value>
+ The warning level for the compiler to display.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/warn</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Codepage">
+ <summary>
+ Specifies the code page to use for all source code files in the
+ compilation.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/codepage</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.SupportsDocGeneration">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports generation of XML Documentation file. The default is
+ <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.SupportsPlatform">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports limiting the platform on which the compiled code can run.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.SupportsLangVersion">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports accepting only a specific language syntax.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.Extension">
+ <summary>
+ Gets the file extension required by the current compiler.
+ </summary>
+ <value>
+ For the C# compiler, the file extension is always <c>cs</c>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.ClassNameRegex">
+ <summary>
+ Gets the class name regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Class name regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.CscTask.NamespaceRegex">
+ <summary>
+ Gets the namespace regular expression for the language of the current compiler.
+ </summary>
+ <value>
+ Namespace regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.DelaySignTask">
+ <summary>
+ Signs delay-signed .NET Assemblies, or re-signs existing assemblies.
+ </summary>
+ <remarks>
+ <para>
+ The delay-signing mechanism takes a fileset (named targets)
+ and either a <see cref="P:NAnt.DotNet.Tasks.DelaySignTask.KeyFile"/> attribute for a file containing the
+ public and private keys, or <see cref="P:NAnt.DotNet.Tasks.DelaySignTask.KeyContainer"/> to name a key
+ container.
+ </para>
+ </remarks>
+ <example>
+ <para>Sign partially-signed <c>foo.dll</c> with <c>bar.snk</c>.</para>
+ <code>
+ <![CDATA[
+ <delay-sign keyfile="bar.snk" verbose="false">
+ <targets>
+ <include name="foo.dll" />
+ </targets>
+ </delay-sign>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.DelaySignTask.ExecuteTask">
+ <summary>
+ Converts a single file or group of files.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.DelaySignTask.Targets">
+ <summary>
+ List of assemblies/executables to sign.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.DelaySignTask.KeyFile">
+ <summary>
+ Specifies the filesystem path to the signing key.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.DelaySignTask.KeyContainer">
+ <summary>
+ Specifies the key container.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.DelaySignTask.ProgramArguments">
+ <summary>
+ Gets the command line arguments for the external program.
+ </summary>
+ <value>
+ The command line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.IlasmTask">
+ <summary>
+ Compiles ILASM programs.
+ </summary>
+ <example>
+ <para>
+ Compiles <c>helloworld.il</c> to <c>helloworld.exe</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <ilasm target="exe" output="helloworld.exe" debug="true">
+ <sources>
+ <include name="helloworld.il" />
+ </sources>
+ </ilasm>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.IlasmTask.ExecuteTask">
+ <summary>
+ Compiles the sources.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.IlasmTask.WriteOptions">
+ <summary>
+ Writes the compiler options.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.IlasmTask.WriteOption(System.IO.StringWriter,System.String)">
+ <summary>
+ Writes an option using the default output format.
+ </summary>
+ <param name="writer">
+ The <see cref="T:System.IO.StringWriter"/> to which the compiler options should
+ be written.
+ </param>
+ <param name="name">
+ A <see cref="T:System.String"/> that contains the name of the
+ option which should be passed to the compiler.
+ </param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.IlasmTask.WriteOption(System.IO.StringWriter,System.String,System.String)">
+ <summary>
+ Writes an option and its value using the default output format.
+ </summary>
+ <param name="writer">
+ The <see cref="T:System.IO.StringWriter"/> to which the compiler options should
+ be written.
+ </param>
+ <param name="name">
+ A <see cref="T:System.String"/> that contains the name of the
+ option which should be passed to the compiler.
+ </param>
+ <param name="arg">
+ A <see cref="T:System.String"/> that contains the value of the
+ option which should be passed to the compiler.
+ </param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.IlasmTask.NeedsCompiling">
+ <summary>
+ Determines whether or not compilation is needed.
+ </summary>
+ <returns>
+ <see langword="true" /> if compilation is needed; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Clock">
+ <summary>
+ Specifies whether or not the compiler should measure and report
+ the compilation times.
+ </summary>
+ <value>
+ <see langword="true" /> if the compilation times should be
+ measured and reported; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/CLOCK</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Debug">
+ <summary>
+ Specifies whether or not the compiler should generate debug
+ information.
+ </summary>
+ <value>
+ <see langword="true" /> if debug information should be generated;
+ otherwise, <see langword="false" />. The default is
+ <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/DEBUG</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Error">
+ <summary>
+ Specifies whether or not the compiler should attempt to create a
+ PE file even if compilation errors have been reported.
+ </summary>
+ <value>
+ <see langword="true" /> if a PE file has to be created even if
+ compilation errors have been reported; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/ERROR</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.ForceRebuild">
+ <summary>
+ Instructs NAnt to recompile the output file regardless of the file
+ timestamps.
+ </summary>
+ <value>
+ <see langword="true" /> if the output file should be recompiled
+ regardless of its timestamps; otherwise <see langword="false" />.
+ The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Listing">
+ <summary>
+ Specifies whether or not the compiler should type a formatted
+ listing of the compilation result.
+ </summary>
+ <value>
+ <see langword="true" /> if a formatted listing of the compilation
+ result should be typed; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/LISTING</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Alignment">
+ <summary>
+ Instructs the compiler to set the <i>FileAlignment</i> value in
+ the PE header.
+ </summary>
+ <value>
+ An <see cref="T:System.Int32" /> that represents the <i>FileAlignment</i>
+ value to set in the PE header. The value must be a power of 2, in
+ range from 512 to 65536.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/ALIGNMENT</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Base">
+ <summary>
+ Instructs the compiler to set the <i>ImageBase</i> value in
+ the PE header.
+ </summary>
+ <value>
+ A <see cref="T:System.Int32" /> that represents the <i>ImageBase</i>
+ value to set in the PE header.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/BASE</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Flags">
+ <summary>
+ Instructs the compiler to set the <i>Flags</i> value in the CLR
+ header.
+ </summary>
+ <value>
+ An <see cref="T:System.Int32" /> that represents the <i>Flags</i>
+ value to set in the CLR header. The most frequently value are 1
+ (pre-IL code) and 2 (mixed code). The third bit indicating that
+ the PE file is strong signed, is ignored.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/FLAGS</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Subsystem">
+ <summary>
+ Instructs the compiler to set the <i>Subsystem</i> value in the PE
+ header.
+ </summary>
+ <value>
+ An <see cref="T:System.Int32" /> that represents the <i>Subsystem</i>
+ value to set in the PE header. The most frequently value are 3
+ (console application) and 2 (GUI application).
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/SUBSYSTEM</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Target">
+ <summary>
+ Specifies which output type should be generated.
+ </summary>
+ <value>
+ A <see cref="T:System.String" /> that contains the target type.
+ Possible values are <c>dll</c> and <c>exe</c>.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/OUTPUT</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.KeySource">
+ <summary>
+ Instructs the compiler to generate a strong signature of the PE
+ file.
+ </summary>
+ <value>
+ A <see cref="T:System.String" /> that contains the private
+ encryption key.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/KEY=<![CDATA[@<]]>keysource<![CDATA[>]]></c>
+ flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.KeyFile">
+ <summary>
+ Instructs the compiler to generate a strong signature of the PE
+ file.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.FileInfo" /> that represents the file
+ containing the private encryption key.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/KEY=<![CDATA[<]]>keyfile<![CDATA[>]]></c>
+ flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.OutputFile">
+ <summary>
+ Specifies the name of the output file created by the compiler.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.FileInfo" /> that represents the name of
+ the output file.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/OUTPUT</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.ResourceFile">
+ <summary>
+ Instructs the compiler to link the specified unmanaged resource
+ file into the resulting PE file.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.FileInfo" /> that represents the unmanaged
+ resource file to link.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/RESOURCE</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.Sources">
+ <summary>
+ Specifies the set of source files to compile.
+ </summary>
+ <value>
+ A <see cref="T:NAnt.Core.Types.FileSet" /> that represents the set
+ of source files to compile.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.IlasmTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ A <see cref="T:System.String" /> that contains the command-line
+ arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.JscTask">
+ <summary>
+ Compiles JScript.NET programs.
+ </summary>
+ <example>
+ <para>Compile <c>helloworld.js</c> to <c>helloworld.exe</c>.</para>
+ <code>
+ <![CDATA[
+ <jsc target="exe" output="helloworld.exe" debug="true">
+ <sources>
+ <include name="helloworld.js" />
+ </sources>
+ </jsc>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.JscTask.WriteModuleReferences(System.IO.TextWriter)">
+ <summary>
+ Writes module references to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the module references should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.JscTask.WriteOptions(System.IO.TextWriter)">
+ <summary>
+ Writes the compiler options to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.AutoRef">
+ <summary>
+ Automatically references assemblies if they have the same name as
+ an imported namespace or as a type annotation when declaring a
+ variable. The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/autoref</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.NoStdLib">
+ <summary>
+ Instructs the compiler not to import standard library, and changes
+ <see cref="P:NAnt.DotNet.Tasks.JscTask.AutoRef"/> to <see langword="false"/>. The default is
+ <see langword="false"/>.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/noconfig</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.Platform">
+ <summary>
+ Specifies which platform version of common language runtime (CLR)
+ can run the output file.
+ </summary>
+ <value>
+ The platform version of common language runtime (CLR) that can run
+ the output file.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/platform</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.VersionSafe">
+ <summary>
+ Causes the compiler to generate errors for implicit method
+ overrides. The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/versionsafe</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.WarningLevel">
+ <summary>
+ Specifies the warning level for the compiler to display. Valid
+ values are <c>0</c>-<c>4</c>. The default is <c>4</c>.
+ </summary>
+ <value>
+ The warning level for the compiler to display.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/warn</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.WarningAsError">
+ <summary>
+ Controls which warnings should be reported as errors.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ compiler does not allow control over which warnings should be
+ reported as errors.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.NoWarn">
+ <summary>
+ Specifies a comma-separated list of warnings that should be suppressed
+ by the compiler.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ compiler does not support package references.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.SuppressWarnings">
+ <summary>
+ Specifies a list of warnings that you want the compiler to suppress.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ compiler does not support suppressing warnings.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.Codepage">
+ <summary>
+ Specifies the code page to use for all source code files in the
+ compilation.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/codepage</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.KeyContainer">
+ <summary>
+ Specifies the key pair container used to strongname the assembly.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ does not support this.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.KeyFile">
+ <summary>
+ Specifies a strong name key file.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ does not support this.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.DelaySign">
+ <summary>
+ Specifies whether to delay sign the assembly using only the public
+ portion of the strong name key.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ does not support this.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.SupportsKeyContainer">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "keycontainer" option. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ does not support this.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.SupportsKeyFile">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "keyfile" option. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ does not support this.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.SupportsDelaySign">
+ <summary>
+ Indicates whether the compiler for a given target framework supports
+ the "delaysign" option. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ does not support this.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.SupportsPlatform">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports limiting the platform on which the compiled code can run.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.Modules">
+ <summary>
+ Link the specified modules into this assembly.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the JScript.NET
+ compiler does not support linking modules.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.Extension">
+ <summary>
+ Gets the file extension required by the current compiler.
+ </summary>
+ <value>
+ For the JScript.NET compiler, the file extension is always <c>js</c>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.ClassNameRegex">
+ <summary>
+ Gets the class name regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Class name regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.JscTask.NamespaceRegex">
+ <summary>
+ Gets the namespace regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Namespace regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.LicenseTask">
+ <summary>
+ Generates a <c>.licence</c> file from a <c>.licx</c> file.
+ </summary>
+ <remarks>
+ <para>
+ If no output file is specified, the default filename is the name of the
+ target file with the extension <c>.licenses</c> appended.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Generate the file <c>component.exe.licenses</c> file from <c>component.licx</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <license input="component.licx" licensetarget="component.exe" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.Initialize">
+ <summary>
+ Initializes the <see cref="T:NAnt.DotNet.Tasks.LicenseTask"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.PrepareProcess(System.Diagnostics.Process)">
+ <summary>
+ Updates the <see cref="T:System.Diagnostics.ProcessStartInfo"/> of the specified
+ <see cref="T:System.Diagnostics.Process"/>.
+ </summary>
+ <param name="process">The <see cref="T:System.Diagnostics.Process"/> of which the <see cref="T:System.Diagnostics.ProcessStartInfo"/> should be updated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.ExecuteTask">
+ <summary>
+ Generates the license file.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.NeedsCompiling(System.IO.FileInfo)">
+ <summary>
+ Determines whether the <c>.licenses</c> file needs to be recompiled
+ or is uptodate.
+ </summary>
+ <param name="licensesFile">The <c>.licenses</c> file.</param>
+ <returns>
+ <see langword="true" /> if the <c>.licenses</c> file needs compiling;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.InputFile">
+ <summary>
+ Input file to process.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.OutputFile">
+ <summary>
+ Name of the license file to output.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.Assemblies">
+ <summary>
+ Names of the references to scan for the licensed component.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.LicenseTarget">
+ <summary>
+ Specifies the executable for which the .licenses file is generated.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.Target">
+ <summary>
+ Specifies the executable for which the .licenses file is generated.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.SupportsAssemblyReferences">
+ <summary>
+ Indicates whether assembly references are supported by the current
+ target framework. The default is <see langword="false" />.
+ </summary>
+ <remarks>
+ Applies only to frameworks having a command line tool for compiling
+ licenses files.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.HasCommandLineCompiler">
+ <summary>
+ Indicates whether the current target framework has a command line
+ tool for compiling licenses files. The default is
+ <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.BaseDirectory">
+ <summary>
+ Gets the working directory for the application.
+ </summary>
+ <value>
+ The working directory for the application.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.Arguments">
+ <summary>
+ The command-line arguments for the external program.
+ </summary>
+ <remarks>
+ Override to avoid exposing these elements in build file.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.LicenseTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>
+ The filename of the external program.
+ </value>
+ <remarks>
+ Override in derived classes to explicitly set the location of the
+ external tool.
+ </remarks>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.LicenseTask.LicenseGatherer">
+ <summary>
+ Responsible for reading the license and writing them to a license
+ file.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.LicenseGatherer.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for
+ this instance.
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease"/> used to control the lifetime
+ policy for this instance. This is the current lifetime service object
+ for this instance if one exists; otherwise, a new lifetime service
+ object initialized with a lease that will never time out.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.LicenseGatherer.CreateLicenseFile(NAnt.DotNet.Tasks.LicenseTask,System.String)">
+ <summary>
+ Creates the whole license file.
+ </summary>
+ <param name="licenseTask">The <see cref="T:NAnt.DotNet.Tasks.LicenseTask"/> instance for which the license file should be created.</param>
+ <param name="licensesFile">The .licenses file to create.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.LicenseTask.LicenseGatherer.IsSerializable(System.Object)">
+ <summary>
+ Determines whether the given object is serializable in binary
+ format.
+ </summary>
+ <param name="value">The object to check.</param>
+ <returns>
+ <see langword="true" /> if <paramref name="value" /> is
+ serializable in binary format; otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.NDocTask">
+ <summary>
+ Runs NDoc V1.3.1 to create documentation.
+ </summary>
+ <remarks>
+ <para>
+ See the <see href="http://ndoc.sourceforge.net/">NDoc home page</see> for more
+ information.
+ </para>
+ <note>
+ By default, only the NDoc MSDN documenter ships as part of the NAnt
+ distribution. To make another NDoc documenter from the NDoc V1.3.1
+ distribution available to the <see cref="T:NAnt.DotNet.Tasks.NDocTask"/>, copy the
+ documenter assembly (and possible dependencies) to the "lib"
+ directory corresponding with the CLR you're running NAnt on
+ (eg. &lt;nant root&gt;/bin/lib/net/1.1).
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Document two assemblies using the MSDN documenter. The namespaces are
+ documented in <c>NamespaceSummary.xml</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <ndoc>
+ <assemblies basedir="${build.dir}">
+ <include name="NAnt.exe" />
+ <include name="NAnt.Core.dll" />
+ </assemblies>
+ <summaries basedir="${build.dir}">
+ <include name="NamespaceSummary.xml" />
+ </summaries>
+ <documenters>
+ <documenter name="MSDN">
+ <property name="OutputDirectory" value="doc\MSDN" />
+ <property name="HtmlHelpName" value="NAnt" />
+ <property name="IncludeFavorites" value="False" />
+ <property name="Title" value="An NDoc Documented Class Library" />
+ <property name="SplitTOCs" value="False" />
+ <property name="DefaulTOC" value="" />
+ <property name="ShowVisualBasic" value="True" />
+ <property name="ShowMissingSummaries" value="True" />
+ <property name="ShowMissingRemarks" value="True" />
+ <property name="ShowMissingParams" value="True" />
+ <property name="ShowMissingReturns" value="True" />
+ <property name="ShowMissingValues" value="True" />
+ <property name="DocumentInternals" value="False" />
+ <property name="DocumentProtected" value="True" />
+ <property name="DocumentPrivates" value="False" />
+ <property name="DocumentEmptyNamespaces" value="False" />
+ <property name="IncludeAssemblyVersion" value="False" />
+ <property name="CopyrightText" value="" />
+ <property name="CopyrightHref" value="" />
+ </documenter>
+ </documenters>
+ </ndoc>
+ ]]>
+ </code>
+ <para>Content of <c>NamespaceSummary.xml</c> :</para>
+ <code>
+ <![CDATA[
+ <namespaces>
+ <namespace name="Foo.Bar">
+ The <b>Foo.Bar</b> namespace reinvents the wheel.
+ </namespace>
+ <namespace name="Foo.Bar.Tests">
+ The <b>Foo.Bar.Tests</b> namespace ensures that the Foo.Bar namespace reinvents the wheel correctly.
+ </namespace>
+ </namespaces>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.Initialize">
+ <summary>
+ Initializes the taks and verifies the parameters.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.ExecuteTask">
+ <summary>
+ Generates an NDoc project and builds the documentation.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.OnDocBuildingStep(System.Object,NDoc.Core.ProgressArgs)">
+ <summary>
+ Represents the method that will be called to update the overall
+ percent complete value and the current step name.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NDoc.Core.ProgressArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.OnDocBuildingProgress(System.Object,NDoc.Core.ProgressArgs)">
+ <summary>
+ Represents the method that will be called to update the current
+ step's precent complete value.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="e">A <see cref="T:NDoc.Core.ProgressArgs"/> that contains the event data.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.CheckAndGetDocumenter(NDoc.Core.Project,System.String)">
+ <summary>
+ Returns the documenter for the given project.
+ </summary>
+ <exception cref="T:NAnt.Core.BuildException">
+ Documenter <paramref name="documenterName"/> is not found.
+ </exception>
+ <exception cref="T:System.ArgumentNullException">
+ <paramref name="project"/> is <see langword="null"/>.
+ </exception>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.ExpandPropertiesInNodes(System.Xml.XmlNodeList)">
+ <summary>
+ Performs macro expansion for the given nodes.
+ </summary>
+ <param name="nodes"><see cref="T:System.Xml.XmlNodeList"/> for which expansion should be performed.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.SetHtmlHelpCompiler(System.Object,System.String)">
+ <summary>
+ Use Reflection to set HtmplHelp._htmlHelpCompiler private field for MSDN Documentor.
+ Ndoc could not handle 64bit installations and is not actively developed anymore.
+ </summary>
+ <param name="sender">Active documentor</param>
+ <param name="hhcexe">Path to hhc.exe</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.NDocTask.ResolveHhcExe">
+ <summary>
+ Searches in %ProgramFiles(x86)%\HTML Help Workshop and %ProgramFiles%\HTML Help Workshop
+ for hhc.exe. If not found let ndoc msdn documentor search itself
+ </summary>
+ <returns>the path to hhc.exe if found, null otherwise</returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.NDocTask.Assemblies">
+ <summary>
+ The set of assemblies to document.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.NDocTask.Summaries">
+ <summary>
+ The set of namespace summary files.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.NDocTask.Documenters">
+ <summary>
+ Specifies the formats in which the documentation should be generated.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.NDocTask.ReferencePaths">
+ <summary>
+ Collection of additional directories to search for referenced
+ assemblies.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.RegsvcsTask">
+ <summary>
+ Installs or removes .NET Services.
+ </summary>
+ <remarks>
+ <para>
+ This tasks provides the same functionality as the <c>regsvcs</c> tool
+ provided in the .NET SDK.
+ </para>
+ <para>
+ It performs the following actions:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>Loads and registers an assembly.</description>
+ </item>
+ <item>
+ <description>Generates, registers, and installs a type library into a specified COM+ application.</description>
+ </item>
+ <item>
+ <description>Configures services that are added programmatically to your class.</description>
+ </item>
+ </list>
+ <para>
+ Refer to the <see href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrfnetservicesinstallationutilityregsvcsexe.htm">.NET Services Installation Tool (Regsvcs.exe)</see> for more information.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Adds all public classes contained in <c>myTest.dll</c> to a COM+
+ application and produces the <c>myTest.tlb</c> type library. If the
+ application already exists, it is overwritten.
+ </para>
+ <code>
+ <![CDATA[
+ <regsvcs action="FindOrCreate" assembly="myTest.dll" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Adds all public classes contained in <c>myTest.dll</c> to <c>myTargetApp</c>
+ and produces the <c>myTest.tlb</c> type library. If the application already
+ exists, it is overwritten.
+ </para>
+ <code>
+ <![CDATA[
+ <regsvcs action="FindOrCreate" assembly="myTest.dll" application="myTargetApp" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Adds all public classes contained in <c>myTest.dll</c> to a COM+
+ application and produces the <c>myTest.tlb</c> type library. A new
+ application is always created.
+ </para>
+ <code>
+ <![CDATA[
+ <regsvcs action="Create" assembly="myTest.dll" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Uninstalls the COM+ application contained in <c>myTest.dll</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <regsvcs action="Uninstall" assembly="myTest.dll" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.RegsvcsTask.ExecuteTask">
+ <summary>
+ Performs the specified action.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.Action">
+ <summary>
+ Defines the action to take with the assembly. The default is
+ <see cref="F:NAnt.DotNet.Tasks.RegsvcsTask.ActionType.FindOrCreate"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.AssemblyFile">
+ <summary>
+ The source assembly file.
+ </summary>
+ <remarks>
+ The assembly must be signed with a strong name.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.TypeLibrary">
+ <summary>
+ Specifies the type library file to install.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.ExistingTypeLibrary">
+ <summary>
+ Uses an existing type library. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.NoReconfig">
+ <summary>
+ Do not reconfigure an existing target application.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.ComponentsOnly">
+ <summary>
+ Configures components only; ignores methods and interfaces.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.ExistingApplication">
+ <summary>
+ Expect an existing application. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.ApplicationName">
+ <summary>
+ Specifies the name of the COM+ application to either find or create.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.PartitionName">
+ <summary>
+ Specifies the name or id of the COM+ application to either find or
+ create.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.RegsvcsTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.RegsvcsTask.ActionType">
+ <summary>
+ Defines the possible actions for a .NET Service.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.RegsvcsTask.ActionType.FindOrCreate">
+ <summary>
+ Finds or creates the target application.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.RegsvcsTask.ActionType.Create">
+ <summary>
+ Creates the target application.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Tasks.RegsvcsTask.ActionType.Uninstall">
+ <summary>
+ Uninstalls the target application.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.ResGenTask">
+ <summary>
+ Converts files from one resource format to another.
+ </summary>
+ <remarks>
+ <note>
+ If no <see cref="P:NAnt.DotNet.Tasks.ResGenTask.ToDirectory"/> is specified, the resource file will
+ be created next to the input file.
+ </note>
+ </remarks>
+ <example>
+ <para>
+ Convert a resource file from the <c>.resx</c> to the <c>.resources</c>
+ format.
+ </para>
+ <code>
+ <![CDATA[
+ <resgen input="translations.resx" output="translations.resources" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Convert a set of <c>.resx</c> files to the <c>.resources</c> format.
+ </para>
+ <code>
+ <![CDATA[
+ <resgen todir=".">
+ <resources>
+ <include name="*.resx" />
+ </resources>
+ </resgen>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.PrepareProcess(System.Diagnostics.Process)">
+ <summary>
+ Updates the <see cref="T:System.Diagnostics.ProcessStartInfo"/> of the specified
+ <see cref="T:System.Diagnostics.Process"/>.
+ </summary>
+ <param name="process">The <see cref="T:System.Diagnostics.Process"/> of which the <see cref="T:System.Diagnostics.ProcessStartInfo"/> should be updated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.ExecuteTask">
+ <summary>
+ Converts a single file or group of files.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.RemoveOutputs">
+ <summary>
+ Cleans up generated files.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.NeedsCompiling(System.IO.FileInfo,System.IO.FileInfo)">
+ <summary>
+ Determines whether the specified input file needs to be compiled.
+ </summary>
+ <param name="inputFile">The input file.</param>
+ <param name="outputFile">The output file.</param>
+ <returns>
+ <see langword="true" /> if the input file need to be compiled;
+ otherwise <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.GetOutputFile(System.IO.FileInfo)">
+ <summary>
+ Determines the full path and extension for the output file.
+ </summary>
+ <param name="file">The output file for which the full path and extension should be determined.</param>
+ <returns>
+ The full path (with extensions) for the specified file.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.ReferencesThirdPartyAssemblies(System.String)">
+ <summary>
+ Determines whether the specified resource file references third
+ party assemblies by checking whether a &lt;data&gt; element exists
+ with a &quot;type&quot; attribute that does not start with
+ &quot;System.&quot;.
+ </summary>
+ <param name="resourceFile">The resource file to check.</param>
+ <returns>
+ <see langword="true" /> if the resource file references third party
+ assemblies, or an error occurred; otherwise, <see langword="false" />.
+ </returns>
+ <remarks>
+ This check will only be accurate for 1.0 resource file, but the
+ 2.0 resx files can only be compiled with a resgen tool that supports
+ assembly references, so this method will not be used anyway.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ResGenTask.GetExternalFileReferences(System.IO.FileInfo)">
+ <summary>
+ Returns a list of external file references for the specified file.
+ </summary>
+ <param name="resxFile">The resx file for which a list of external file references should be returned.</param>
+ <returns>
+ A list of external file references for the specified file, or
+ <see langword="null" /> if <paramref name="resxFile" /> does not
+ exist or does not support external file references.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.InputFile">
+ <summary>
+ Input file to process.
+ </summary>
+ <value>
+ The full path to the input file.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.OutputFile">
+ <summary>
+ The resource file to output.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.TargetExt">
+ <summary>
+ The target type. The default is <c>resources</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.ToDirectory">
+ <summary>
+ The directory to which outputs will be stored.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.UseSourcePath">
+ <summary>
+ Use each source file's directory as the current directory for
+ resolving relative file paths. The default is <see langword="false" />.
+ Only supported when targeting .NET 2.0 (or higher).
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.Resources">
+ <summary>
+ Takes a list of <c>.resx</c> or <c>.txt</c> files to convert to <c>.resources</c> files.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.Assemblies">
+ <summary>
+ Reference metadata from the specified assembly files.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.SupportsAssemblyReferences">
+ <summary>
+ Indicates whether assembly references are supported by the
+ <c>resgen</c> tool for the current target framework. The default
+ is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.SupportsExternalFileReferences">
+ <summary>
+ Indicates whether external file references are supported by the
+ <c>resgen</c> tool for the current target framework. The default
+ is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.QualifiedResources">
+ <summary>
+ For internal use only !
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.BaseDirectory">
+ <summary>
+ Gets the working directory for the application.
+ </summary>
+ <value>
+ The working directory for the application.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.ProgramArguments">
+ <summary>
+ Gets the command line arguments for the external program.
+ </summary>
+ <value>
+ The command line arguments for the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ResGenTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>
+ The filename of the external program.
+ </value>
+ <remarks>
+ Override in derived classes to explicitly set the location of the
+ external tool.
+ </remarks>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.QualifiedResource">
+ <summary>
+ For internal use only !
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.QualifiedResource.#ctor(System.IO.FileInfo,System.IO.FileInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Tasks.QualifiedResource"/>
+ class for a given input and output file.
+ </summary>
+ <param name="input">The resource to compile.</param>
+ <param name="output">The compiled resource.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.QualifiedResource.Input">
+ <summary>
+ Gets the resource file to compile.
+ </summary>
+ <value>
+ The resource file to compile.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.QualifiedResource.Output">
+ <summary>
+ Gets the compiled resource file.
+ </summary>
+ <value>
+ The compiled resource file.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.ScriptTask">
+ <summary>
+ Executes the code contained within the task.
+ </summary>
+ <remarks>
+ <h5>Code</h5>
+ <para>
+ The <see cref="T:NAnt.DotNet.Tasks.ScriptTask"/> must contain a single <c>code</c>
+ element, which in turn contains the script code.
+ </para>
+ <para>
+ This code can include extensions such as functions, or tasks. Once
+ the script task has executed those extensions will be available for
+ use in the buildfile.
+ </para>
+ <para>
+ If no extensions have been defined, a static entry point named
+ <c>ScriptMain</c> - which must have a single <see cref="T:NAnt.Core.Project"/>
+ argument - is required.
+ </para>
+ <h5>Namespaces</h5>
+ <para>
+ The following namespaces are imported by default:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>System</description>
+ </item>
+ <item>
+ <description>System.Collections</description>
+ </item>
+ <item>
+ <description>System.IO</description>
+ </item>
+ <item>
+ <description>System.Text</description>
+ </item>
+ <item>
+ <description>NAnt.Core</description>
+ </item>
+ <item>
+ <description>NAnt.Core.Attributes</description>
+ </item>
+ </list>
+ <h5>Assembly References</h5>
+ <para>
+ The assembly references that are specified will be used to compile
+ the script, and will be loaded into the NAnt appdomain.
+ </para>
+ <para>
+ By default, only the <c>NAnt.Core</c> and <c>mscorlib</c> assemblies
+ are referenced.
+ </para>
+ </remarks>
+ <example>
+ <para>Run C# code that writes a message to the build log.</para>
+ <code>
+ &lt;script language="C#"&gt;
+ &lt;code&gt;
+ &lt;![CDATA[
+ public static void ScriptMain(Project project) {
+ project.Log(Level.Info, "Hello World from a script task using C#");
+ }
+ ]]&gt;
+ &lt;/code&gt;
+ &lt;/script&gt;
+ </code>
+ </example>
+ <example>
+ <para>Define a custom function and call it using C#.</para>
+ <code>
+ &lt;script language="C#" prefix="test" &gt;
+ &lt;code&gt;
+ &lt;![CDATA[
+ [Function("test-func")]
+ public static string Testfunc( ) {
+ return "some result !!!!!!!!";
+ }
+ ]]&gt;
+ &lt;/code&gt;
+ &lt;/script&gt;
+ &lt;echo message='${test::test-func()}'/&gt;
+ </code>
+ </example>
+ <example>
+ <para>Use a custom namespace in C# to create a database</para>
+ <code>
+ &lt;script language="C#" &gt;
+ &lt;references&gt;
+ &lt;include name="System.Data.dll" /&gt;
+ &lt;/references&gt;
+ &lt;imports&gt;
+ &lt;import namespace="System.Data.SqlClient" /&gt;
+ &lt;/imports&gt;
+ &lt;code&gt;
+ &lt;![CDATA[
+ public static void ScriptMain(Project project) {
+ string dbUserName = "nant";
+ string dbPassword = "nant";
+ string dbServer = "(local)";
+ string dbDatabaseName = "NAntSample";
+ string connectionString = String.Format("Server={0};uid={1};pwd={2};", dbServer, dbUserName, dbPassword);
+
+ SqlConnection connection = new SqlConnection(connectionString);
+ string createDbQuery = "CREATE DATABASE " + dbDatabaseName;
+ SqlCommand createDatabaseCommand = new SqlCommand(createDbQuery);
+ createDatabaseCommand.Connection = connection;
+
+ connection.Open();
+
+ try {
+ createDatabaseCommand.ExecuteNonQuery();
+ project.Log(Level.Info, "Database added successfully: " + dbDatabaseName);
+ } catch (Exception e) {
+ project.Log(Level.Error, e.ToString());
+ } finally {
+ connection.Close();
+ }
+ }
+ ]]&gt;
+ &lt;/code&gt;
+ &lt;/script&gt;
+ </code>
+ </example>
+ <example>
+ <para>
+ Run Visual Basic.NET code that writes a message to the build log.
+ </para>
+ <code>
+ &lt;script language="VB"&gt;
+ &lt;code&gt;
+ &lt;![CDATA[
+ Public Shared Sub ScriptMain(project As Project)
+ project.Log(Level.Info, "Hello World from a script task using Visual Basic.NET")
+ End Sub
+ ]]&gt;
+ &lt;/code&gt;
+ &lt;/script&gt;
+ </code>
+ </example>
+ <example>
+ <para>Define a custom task and call it using C#.</para>
+ <code>
+ &lt;script language="C#" prefix="test" &gt;
+ &lt;code&gt;
+ &lt;![CDATA[
+ [TaskName("usertask")]
+ public class TestTask : Task {
+ #region Private Instance Fields
+
+ private string _message;
+
+ #endregion Private Instance Fields
+
+ #region Public Instance Properties
+
+ [TaskAttribute("message", Required=true)]
+ public string FileName {
+ get { return _message; }
+ set { _message = value; }
+ }
+
+ #endregion Public Instance Properties
+
+ #region Override implementation of Task
+
+ protected override void ExecuteTask() {
+ Log(Level.Info, _message.ToUpper());
+ }
+ #endregion Override implementation of Task
+ }
+ ]]&gt;
+ &lt;/code&gt;
+ &lt;/script&gt;
+ &lt;usertask message='Hello from UserTask'/&gt;
+ </code>
+ </example>
+ <example>
+ <para>
+ Define a custom function and call it using <see href="http://boo.codehaus.org/">Boo</see>.
+ </para>
+ <code>
+ &lt;script language="Boo.CodeDom.BooCodeProvider, Boo.CodeDom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67"
+ failonerror="true"&gt;
+ &lt;code&gt;
+ &lt;![CDATA[
+
+ [Function("test-func")]
+ def MyFunc():
+ return "Hello from Boo !!!!!!"
+ ]]&gt;
+ &lt;/code&gt;
+ &lt;/script&gt;
+ &lt;echo message='${script::test-func()}'/&gt;
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ScriptTask.Initialize">
+ <summary>
+ Initializes the task.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.ScriptTask.ExecuteTask">
+ <summary>
+ Executes the script block.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ScriptTask.Language">
+ <summary>
+ The language of the script block. Possible values are "VB", "vb", "VISUALBASIC", "C#", "c#", "CSHARP".
+ "JS", "js", "JSCRIPT" "VJS", "vjs", "JSHARP" or a fully-qualified name for a class implementing
+ <see cref="T:System.CodeDom.Compiler.CodeDomProvider" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ScriptTask.References">
+ <summary>
+ Any required references.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ScriptTask.MainClass">
+ <summary>
+ The name of the main class containing the static <c>ScriptMain</c>
+ entry point.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ScriptTask.Prefix">
+ <summary>
+ The namespace prefix for any custom functions defined in the script.
+ If ommitted the prefix will default to 'script'
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ScriptTask.Imports">
+ <summary>
+ The namespaces to import.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.ScriptTask.Code">
+ <summary>
+ The code to execute.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.VbcTask">
+ <summary>
+ Compiles Visual Basic.NET programs.
+ </summary>
+ <remarks>
+ <note>
+ In order to have <see cref="T:NAnt.DotNet.Tasks.VbcTask"/> generate manifest resource names
+ that match those generated by Microsoft Visual Studio.NET, the value of
+ the <see cref="P:NAnt.DotNet.Types.ResourceFileSet.Prefix"/> attribute of the &lt;<see cref="P:NAnt.DotNet.Tasks.CompilerBase.ResourcesList"/>&gt;
+ element should match the "Root namespace" of the VB.NET project, and the
+ value of the <see cref="P:NAnt.DotNet.Types.ResourceFileSet.DynamicPrefix"/> attribute
+ should be set to "<see langword="false"/>".
+ </note>
+ </remarks>
+ <example>
+ <para>Example build file using this task.</para>
+ <code>
+ <![CDATA[
+ <project name="Hello World" default="build" basedir=".">
+ <property name="basename" value="HelloWorld" />
+ <target name="clean">
+ <delete file="${basename}-vb.exe" failonerror="false" />
+ <delete file="${basename}-vb.pdb" failonerror="false" />
+ </target>
+ <target name="build">
+ <vbc target="exe" output="${basename}-vb.exe" rootnamespace="${basename}">
+ <imports>
+ <import namespace="System" />
+ <import namespace="System.Data" />
+ </imports>
+ <sources>
+ <include name="${basename}.vb" />
+ </sources>
+ <resources prefix="${basename}" dynamicprefix="true">
+ <include name="**/*.resx" />
+ </resources>
+ <references>
+ <include name="System.dll" />
+ <include name="System.Data.dll" />
+ </references>
+ </vbc>
+ </target>
+ <target name="rebuild" depends="clean, build" />
+ </project>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.VbcTask.GetResourceLinkage(System.String,System.Globalization.CultureInfo)">
+ <summary>
+ Finds the correct namespace/classname for a resource file from the
+ given dependent source file, and ensure the <see cref="P:NAnt.DotNet.Tasks.VbcTask.RootNamespace"/>
+ is prefixed.
+ </summary>
+ <param name="dependentFile">The file from which the resource linkage of the resource file should be determined.</param>
+ <param name="resourceCulture">The culture of the resource file for which the resource linkage should be determined.</param>
+ <returns>
+ The namespace/classname of the source file matching the resource or
+ <see langword="null"/> if the dependent source file does not exist.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.VbcTask.WriteConditionalCompilationConstants(System.IO.TextWriter)">
+ <summary>
+ Writes conditional compilation constants to the specified
+ <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the conditional compilation constants should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.VbcTask.WriteOptions(System.IO.TextWriter)">
+ <summary>
+ Writes the compiler options to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.VbcTask.NeedsCompiling">
+ <summary>
+ Determines whether compilation is needed.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.BaseAddress">
+ <summary>
+ The preferred base address at which to load a DLL. The default base
+ address for a DLL is set by the .NET Framework common language
+ runtime.
+ </summary>
+ <value>
+ The preferred base address at which to load a DLL.
+ </value>
+ <remarks>
+ This address must be specified as a hexadecimal number.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.DebugOutput">
+ <summary>
+ Specifies the type of debugging information generated by the
+ compiler. The default is <see cref="T:NAnt.DotNet.Types.DebugOutput.None" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.Debug">
+ <summary>
+ No longer expose this to build authors. Use <see cref="P:NAnt.DotNet.Tasks.VbcTask.DebugOutput"/>
+ instead.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.DocFile">
+ <summary>
+ The name of the XML documentation file to generate. Only supported
+ when targeting .NET 2.0 (or higher).
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/doc:</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.ImportsString">
+ <summary>
+ Specifies whether the <c>/imports</c> option gets passed to the
+ compiler.
+ </summary>
+ <value>
+ The value of this attribute is a string that contains one or more
+ namespaces separated by commas.
+ </value>
+ <remarks>
+ <a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfImportImportNamespaceFromSpecifiedAssembly.htm">See the Microsoft.NET Framework SDK documentation for details.</a>
+ </remarks>
+ <example>Example of an imports attribute
+ <code><![CDATA[imports="Microsoft.VisualBasic, System, System.Collections, System.Data, System.Diagnostics"]]></code>
+ </example>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.Imports">
+ <summary>
+ The namespaces to import.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.NoStdLib">
+ <summary>
+ Instructs the compiler not to reference standard libraries
+ (system.dll and VBC.RSP). The default is <see langword="false" />.
+ Only supported when targeting .NET 2.0 (or higher).
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/nostdlib</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.OptionCompare">
+ <summary>
+ Specifies whether <c>/optioncompare</c> option gets passed to the
+ compiler.
+ </summary>
+ <value>
+ <c>text</c>, <c>binary</c>, or an empty string. If the value is
+ <see langword="false" /> or an empty string, the option will not be
+ passed to the compiler.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfOptioncompareSpecifyHowStringsAreCompared.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.OptionExplicit">
+ <summary>
+ Specifies whether the <c>/optionexplicit</c> option gets passed to
+ the compiler. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the option should be passed to the compiler;
+ otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfOptionexplicitRequireExplicitDeclarationOfVariables.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.OptionOptimize">
+ <summary>
+ Specifies whether the <c>/optimize</c> option gets passed to the
+ compiler. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the option should be passed to the compiler;
+ otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfoptimizeenabledisableoptimizations.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.OptionStrict">
+ <summary>
+ Specifies whether the <c>/optionstrict</c> option gets passed to
+ the compiler. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the option should be passed to the compiler;
+ otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfOptionstrictEnforceStrictTypeSemantics.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.Platform">
+ <summary>
+ Specifies which platform version of common language runtime (CLR)
+ can run the output file.
+ </summary>
+ <value>
+ The platform version of common language runtime (CLR) that can run
+ the output file.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/platform</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.RemoveIntChecks">
+ <summary>
+ Specifies whether the <c>/removeintchecks</c> option gets passed to
+ the compiler. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the option should be passed to the compiler;
+ otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfRemoveintchecksRemoveInteger-OverflowChecks.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.RootNamespace">
+ <summary>
+ Specifies whether the <c>/rootnamespace</c> option gets passed to
+ the compiler.
+ </summary>
+ <value>
+ The value of this attribute is a string that contains the root
+ namespace of the project.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/vblr7net/html/valrfRootnamespace.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.SupportsDocGeneration">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports generation of XML Documentation file. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.SupportsNoStdLib">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports NOT referencing standard libraries (system.dll and VBC.RSP).
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.SupportsPlatform">
+ <summary>
+ Specifies whether the compiler for the active target framework
+ supports limiting the platform on which the compiled code can run.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.Extension">
+ <summary>
+ Gets the file extension required by the current compiler.
+ </summary>
+ <value>
+ For the VB.NET compiler, the file extension is always <c>vb</c>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.ClassNameRegex">
+ <summary>
+ Gets the class name regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Class name regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VbcTask.NamespaceRegex">
+ <summary>
+ Gets the namespace regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Namespace regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Tasks.VjcTask">
+ <summary>
+ Compiles Visual J# programs using vjc, Microsoft's J# compiler.
+ </summary>
+ <remarks>
+ <note>
+ In order to have <see cref="T:NAnt.DotNet.Tasks.VjcTask"/> generate manifest resource names
+ that match those generated by Microsoft Visual Studio.NET, the value of
+ the <see cref="P:NAnt.DotNet.Types.ResourceFileSet.Prefix"/> attribute of the &lt;<see cref="P:NAnt.DotNet.Tasks.CompilerBase.ResourcesList"/>&gt;
+ element should match the "Default Package" of the J#.NET project, and
+ the value of the <see cref="P:NAnt.DotNet.Types.ResourceFileSet.DynamicPrefix"/> attribute
+ should be set to "<see langword="true"/>".
+ </note>
+ </remarks>
+ <example>
+ <para>Compile a "HelloWorld" application, including embedded resources.</para>
+ <code>
+ <![CDATA[
+ <vjc target="exe" output="helloworld.exe" debug="true">
+ <sources>
+ <include name="helloworld.jsl" />
+ </sources>
+ <resources prefix="HelloWorld" dynamicprefix="true">
+ <include name="**/*.resx" />
+ </resources>
+ <references>
+ <include name="System.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.Xml.dll" />
+ </references>
+ </vjc>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.VjcTask.WriteModuleReferences(System.IO.TextWriter)">
+ <summary>
+ Writes module references to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer">The <see cref="T:System.IO.TextWriter"/> to which the module references should be written.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Tasks.VjcTask.WriteOptions(System.IO.TextWriter)">
+ <summary>
+ Writes the compiler options to the specified <see cref="T:System.IO.TextWriter"/>.
+ </summary>
+ <param name="writer"><see cref="T:System.IO.TextWriter"/> to which the compiler options should be written.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.BaseAddress">
+ <summary>
+ The preferred base address at which to load a DLL. The default base
+ address for a DLL is set by the .NET Framework common language
+ runtime.
+ </summary>
+ <value>
+ The preferred base address at which to load a DLL.
+ </value>
+ <remarks>
+ This address can be specified as a decimal, hexadecimal, or octal
+ number.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.DebugOutput">
+ <summary>
+ Specifies the type of debugging information generated by the
+ compiler. The default is <see cref="T:NAnt.DotNet.Types.DebugOutput.None" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.Debug">
+ <summary>
+ No longer expose this to build authors. Use <see cref="P:NAnt.DotNet.Tasks.VjcTask.DebugOutput"/>
+ instead.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.SecureScoping">
+ <summary>
+ Specifies whether package-scoped members are accessible outside of
+ the assembly. In other words, package scope is treated as assembly
+ scope when emitting metadata. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the option should be passed to the compiler;
+ otherwise, <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/securescoping</c> flag.
+ </para>
+ <para>
+ <a href="ms-help://MS.VSCC/MS.VJSharp/dv_vjsharp/html/vjgrfsecurescopingmakepackage-scopedmembersinaccessibleoutsideassembly.htm">See the Visual J# Reference for details.</a>
+ </para>
+ </remarks>
+ <example>
+ <code><![CDATA[<vjc securescoping='true'/>]]></code>
+ </example>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.X">
+ <summary>
+ Specifies whether to disable language extensions.
+ </summary>
+ <value>
+ The value of this property must be either <c>all</c>, <c>net</c>,
+ or an empty string.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/x</c> flag.
+ </para>
+ <para>
+ <a href="ms-help://MS.VSCC/MS.VJSharp/dv_vjsharp/html/vjgrfxdisablelanguageextensions.htm">See the Visual J# Reference for details.</a>
+ </para>
+ </remarks>
+ <example>
+ <para>To disable only the .NET Framework extensions:<c><![CDATA[
+ <vjc x='net'/>
+ ]]></c></para>
+ <para>To disable the .NET Framework extensions and the VJ++ 6.0 extensions:<c><![CDATA[
+ <vjc x='all'/>
+ ]]></c></para>
+ </example>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.LibPath">
+ <summary>
+ Specifies the location of assemblies referenced by way of the <c>/reference</c> flag.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds to the <c>/libpath:dir[;dir2]</c> flag.
+ </para>
+ <para>
+ <a href="ms-help://MS.VSCC/MS.VJSharp/dv_vjsharp/html/vjgrflibpathspecifyassemblyreferencelocations.htm">See the Visual J# Reference for details.</a>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.Jcpa">
+ <summary>
+ Associate Java-language/COM package names.
+ </summary>
+ <value>
+ The value of this propery. must be <c>package=namespace</c>, <c>@filename</c>,
+ or an empty string.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/jcpa:package=namespace</c> and <c>/jcpa:@filename</c> flags.
+ </para>
+ <para>
+ <a href="ms-help://MS.VSCC/MS.VJSharp/dv_vjsharp/html/vjgrfjcpaassociatejava-compackages.htm">See the Visual J# Reference for details.</a>
+ </para>
+ </remarks>
+ <example>
+ <para>Map package 'x' to namespace 'y':<c><![CDATA[
+ <vjc jcpa='x=y'/>
+ ]]></c></para>
+ </example>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.Codepage">
+ <summary>
+ Specifies the code page to use for all source code files in the
+ compilation.
+ </summary>
+ <remarks>
+ <para>
+ Corresponds with the <c>/codepage</c> flag.
+ </para>
+ <para>
+ <a href="ms-help://MS.VSCC/MS.VJSharp/dv_vjsharp/html/vjlrfcodepagespecifycodepageforsourcecodefiles.htm">See the Visual J# Reference for details.</a>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.WarningLevel">
+ <summary>
+ Specifies the warning level for the compiler to display. Valid values
+ are <c>0</c>-<c>4</c>. The default is <c>4</c>.
+ </summary>
+ <value>
+ The warning level for the compiler to display.
+ </value>
+ <remarks>
+ <para>
+ Corresponds with the <c>/warn</c> option.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.WarningAsError">
+ <summary>
+ Controls which warnings should be reported as errors.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the Visual J#
+ compiler does not allow control over which warnings should be
+ reported as errors.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.Packages">
+ <summary>
+ Reference packages
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the Visual J#
+ compiler does not support package references.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.Modules">
+ <summary>
+ Link the specified modules into this assembly.
+ </summary>
+ <remarks>
+ Override to avoid exposing this to build authors, as the Visual J#
+ compiler does not support linking modules.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.Extension">
+ <summary>
+ Gets the file extension required by the current compiler.
+ </summary>
+ <value>
+ For the J# compiler, the file extension is always <c>jsl</c>.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.ClassNameRegex">
+ <summary>
+ Gets the class name regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Class name regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.NamespaceRegex">
+ <summary>
+ Gets the namespace regular expression for the language of the
+ current compiler.
+ </summary>
+ <value>
+ Namespace regular expression for the language of the current
+ compiler.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Tasks.VjcTask.SupportsPackageReferences">
+ <summary>
+ Override to avoid exposing the configuration setting for this
+ task as Visual J# will never support package references.
+ </summary>
+ <value>
+ <see langword="false" />, as the Visual J# compiler will never
+ support package references.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Types.AssemblyAttribute">
+ <summary>
+ Represents an assembly-level attribute.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/>
+ class.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttribute.TypeName">
+ <summary>
+ Typename of the assembly-level attribute.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttribute.Value">
+ <summary>
+ Value of the attribute.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttribute.AsIs">
+ <summary>
+ If <see langword="true" /> then the value of the attribute will be
+ set as is, without actually looking for a matching constructor or
+ named properties. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the value of the attribute should be set
+ as is; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttribute.IfDefined">
+ <summary>
+ Indicates if the attribute should be generated.
+ </summary>
+ <value>
+ <see langword="true" /> if the attribute should be generated;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttribute.UnlessDefined">
+ <summary>
+ Indicates if the attribute should be not generated.
+ </summary>
+ <value>
+ <see langword="true" /> if the attribute should be not generated;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Types.AssemblyAttributeCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/>
+ objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.#ctor(NAnt.DotNet.Types.AssemblyAttributeCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.#ctor(NAnt.DotNet.Types.AssemblyAttribute[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/> class
+ with the specified array of <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.Add(NAnt.DotNet.Types.AssemblyAttribute)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.AddRange(NAnt.DotNet.Types.AssemblyAttribute[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.AddRange(NAnt.DotNet.Types.AssemblyAttributeCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.Contains(NAnt.DotNet.Types.AssemblyAttribute)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> with the specified
+ value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> with
+ value <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.CopyTo(NAnt.DotNet.Types.AssemblyAttribute[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.IndexOf(NAnt.DotNet.Types.AssemblyAttribute)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/>. If the <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.Insert(System.Int32,NAnt.DotNet.Types.AssemblyAttribute)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.AssemblyAttributeEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeCollection.Remove(NAnt.DotNet.Types.AssemblyAttribute)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttributeCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttributeCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> with the specified value.
+ </summary>
+ <param name="value">The value of the <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> to get.</param>
+ </member>
+ <member name="T:NAnt.DotNet.Types.AssemblyAttributeEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.AssemblyAttribute"/> elements of a <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeEnumerator.#ctor(NAnt.DotNet.Types.AssemblyAttributeCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.AssemblyAttributeEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.AssemblyAttributeCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyAttributeEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyAttributeEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.LibDirectorySet">
+ <summary>
+ A specialized <see cref="T:NAnt.Core.Types.FileSet"/> used for setting the lib directories.
+ </summary>
+ <remarks>
+ The primary reason for this class is to allow the <see cref="P:NAnt.DotNet.Types.LibDirectorySet.BaseDirectory"/>
+ to always be the same value as the parent <see cref="T:NAnt.DotNet.Types.AssemblyFileSet"/>
+ </remarks>
+ <seealso cref="T:NAnt.Core.Types.FileSet"/>
+ </member>
+ <member name="M:NAnt.DotNet.Types.LibDirectorySet.#ctor(NAnt.DotNet.Types.AssemblyFileSet)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.LibDirectorySet"/> class.
+ </summary>
+ <param name="parent"></param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.LibDirectorySet.BaseDirectory">
+ <summary>
+ override this. We will always use the base directory of the parent.
+ overriding without the TaskAttribute attribute prevents it being set
+ in the source xml
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.AssemblyFileSet">
+ <summary>
+ Specialized <see cref="T:NAnt.Core.Types.FileSet"/> class for managing assembly files.
+ </summary>
+ <remarks>
+ <para>
+ If an include pattern does not contain any wildcard characters then
+ the assembly will be searched for in following locations (in the order listed):
+ </para>
+ <list type="bullet">
+ <item>
+ <description>
+ The base directory of the fileset.
+ </description>
+ </item>
+ <item>
+ <description>
+ The directories specified using the nested &lt;lib&gt; element.
+ </description>
+ </item>
+ <item>
+ <description>
+ The list of reference assemblies of the current target framework.
+ </description>
+ </item>
+ </list>
+ <para>
+ The reference assemblies of a given target framework are defined using
+ &lt;reference-assemblies&gt; filesets in the &lt;framework&gt; node
+ of the NAnt configuration file.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Define a reference with name "sys.assemblies", holding
+ a set of system assemblies.
+ </para>
+ <code>
+ <![CDATA[
+ <assemblyfileset id="sys.assemblies">
+ <include name="System.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Xml.dll" />
+ </assemblyfileset>
+ ]]>
+ </code>
+ <para>
+ Use the predefined set of assemblies to compile a C# assembly.
+ </para>
+ <code>
+ <![CDATA[
+ <csc target="exe" output="HelloWorld.exe">
+ <sources>
+ <include name="**/*.cs" />
+ </sources>
+ <references refid="sys.assemblies" />
+ </csc>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compile a C# assembly using assembly references that are searched for
+ in the "Third Party Assemblies" and "Company Assemblies"
+ directories.
+ </para>
+ <code>
+ <![CDATA[
+ <csc target="exe" output="HelloWorld.exe">
+ <sources>
+ <include name="**/*.cs" />
+ </sources>
+ <references>
+ <lib>
+ <include name="Third Party Assemblies" />
+ <include name="Company Assemblies" />
+ </lib>
+ <include name="log4net.dll" />
+ <include name="Company.Business.dll" />
+ </references>
+ </csc>
+ ]]>
+ </code>
+ </example>
+ <seealso cref="T:NAnt.Core.Types.FileSet"/>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyFileSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.AssemblyFileSet"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyFileSet.#ctor(NAnt.Core.Types.FileSet)">
+ <summary>
+ copy constructor for FileSet. Required in order to
+ assign references of FileSet type where
+ AssemblyFileSets are used
+ </summary>
+ <param name="fs"></param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyFileSet.Scan">
+ <summary>
+ Do a normal scan and then resolve assemblies.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.AssemblyFileSet.ResolveReferences">
+ <summary>
+ Resolves references to system assemblies and assemblies that can be
+ resolved using directories specified in <see cref="P:NAnt.DotNet.Types.AssemblyFileSet.Lib"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.AssemblyFileSet.Lib">
+ <summary>
+ Additional directories to search in for assembly references.
+ </summary>
+ <remarks>
+ <para>
+ loosely Corresponds with the <c>/lib[path]:</c> flag of the various compiler tasks.
+ </para>
+ </remarks>
+ </member>
+ <member name="T:NAnt.DotNet.Types.CompilerWarning">
+ <summary>
+ Represents a compiler warning.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.CompilerWarning.Number">
+ <summary>
+ A warning number, or comma-separated list of warnings, that you want
+ the compiler to suppress or report.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.CompilerWarning.IfDefined">
+ <summary>
+ If <see langword="true" /> then the element will be processed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.CompilerWarning.UnlessDefined">
+ <summary>
+ If <see langword="true" /> then the element will be skipped;
+ otherwise, processed. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.CompilerWarningCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.#ctor(NAnt.DotNet.Types.CompilerWarningCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.#ctor(NAnt.DotNet.Types.CompilerWarning[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/> class
+ with the specified array of <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.Add(NAnt.DotNet.Types.CompilerWarning)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.AddRange(NAnt.DotNet.Types.CompilerWarning[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.AddRange(NAnt.DotNet.Types.CompilerWarningCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.Contains(NAnt.DotNet.Types.CompilerWarning)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.CopyTo(NAnt.DotNet.Types.CompilerWarning[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.IndexOf(NAnt.DotNet.Types.CompilerWarning)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.DotNet.Types.CompilerWarning"/>. If the <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.Insert(System.Int32,NAnt.DotNet.Types.CompilerWarning)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.CompilerWarningEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningCollection.Remove(NAnt.DotNet.Types.CompilerWarning)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.CompilerWarningCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.DotNet.Types.CompilerWarningEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.CompilerWarning"/> elements of a <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningEnumerator.#ctor(NAnt.DotNet.Types.CompilerWarningCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.CompilerWarningEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.CompilerWarningCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.CompilerWarningEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.CompilerWarningEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.DebugOutput">
+ <summary>
+ Specifies the type of debugging information generated by the compiler.
+ </summary>
+ <remarks>
+ <para>
+ For backward compatibility, the following string values can also be
+ used in build files:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Corresponding field</description>
+ </listheader>
+ <item>
+ <term>"true"</term>
+ <description><see cref="F:NAnt.DotNet.Types.DebugOutput.Enable"/></description>
+ </item>
+ <item>
+ <term>"false"</term>
+ <description><see cref="F:NAnt.DotNet.Types.DebugOutput.None"/></description>
+ </item>
+ </list>
+ <para>
+ When set to <see langword="Enabled"/> then the following conditional
+ compilation symbols will also be defined:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>DEBUG</description>
+ </item>
+ <item>
+ <description>TRACE</description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DebugOutput.None">
+ <summary>
+ Create no debug information.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DebugOutput.Enable">
+ <summary>
+ Enable attaching a debugger to the running program.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DebugOutput.Full">
+ <summary>
+ Enable attaching a debugger to the running program.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DebugOutput.PdbOnly">
+ <summary>
+ Only display assembler when the running program is attached to the
+ debugger.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.DebugOutputConverter">
+ <summary>
+ Specialized <see cref="T:System.ComponentModel.EnumConverter"/> that also supports
+ case-insensitive conversion of "true" to
+ <see cref="F:NAnt.DotNet.Types.DebugOutput.Enable"/> and "false" to
+ <see cref="F:NAnt.DotNet.Types.DebugOutput.None"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DebugOutputConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.DebugOutputConverter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DebugOutputConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
+ <summary>
+ Converts the given object to the type of this converter, using the
+ specified context and culture information.
+ </summary>
+ <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that provides a format context.</param>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/> object. If a <see langword="null"/> is passed, the current culture is assumed.</param>
+ <param name="value">The <see cref="T:System.Object"/> to convert.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that represents the converted value.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.DelaySign">
+ <summary>
+ Specifies whether the generated assembly is strongly named and will
+ be signed later.
+ </summary>
+ <remarks>
+ <para>
+ For backward compatibility, the following string values can also be
+ used in build files:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Value</term>
+ <description>Corresponding field</description>
+ </listheader>
+ <item>
+ <term>"true"</term>
+ <description><see cref="F:NAnt.DotNet.Types.DelaySign.Yes"/></description>
+ </item>
+ <item>
+ <term>"false"</term>
+ <description><see cref="F:NAnt.DotNet.Types.DelaySign.No"/></description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DelaySign.NotSet">
+ <summary>
+ Not specified.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DelaySign.No">
+ <summary>
+ Fully sign the assembly.
+ </summary>
+ </member>
+ <member name="F:NAnt.DotNet.Types.DelaySign.Yes">
+ <summary>
+ Only place the public key in the assembly, allowing the signature
+ to be added later.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.DelaySignConverter">
+ <summary>
+ Specialized <see cref="T:System.ComponentModel.EnumConverter"/> that also supports
+ case-insensitive conversion of "true" to
+ <see cref="F:NAnt.DotNet.Types.DelaySign.Yes"/> and "false" to
+ <see cref="F:NAnt.DotNet.Types.DelaySign.No"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DelaySignConverter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.DelaySignConverter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DelaySignConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
+ <summary>
+ Converts the given object to the type of this converter, using the
+ specified context and culture information.
+ </summary>
+ <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"/> that provides a format context.</param>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/> object. If a <see langword="null"/> is passed, the current culture is assumed.</param>
+ <param name="value">The <see cref="T:System.Object"/> to convert.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that represents the converted value.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.EmbeddedResource">
+ <summary>
+ Represents an embedded resource.
+ </summary>
+ <remarks>
+ Do not yet expose this to build authors.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResource.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/>
+ with the specified file name and manifest resource name.
+ </summary>
+ <param name="file">The path of the compiled resource.</param>
+ <param name="manifestResourceName">The manifest resource name of the embedded resource.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResource.File">
+ <summary>
+ Gets the physical location of the resource to embed.
+ </summary>
+ <value>
+ The physical location of the resource to embed.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResource.ManifestResourceName">
+ <summary>
+ Gets the manifest resource name to use when embedding the resource.
+ </summary>
+ <value>
+ The manifest resource name to use when embedding the resource.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Types.EmbeddedResourceCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> items.
+ </summary>
+ <remarks>
+ Do not yet expose this to build authors.
+ </remarks>
+ </member>
+ <member name="T:NAnt.DotNet.Types.DataTypeCollectionBase">
+ <summary>
+ Base class for collections that needs to be globally referencable.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.DataTypeCollectionBase"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.CopyTo(System.Array,System.Int32)">
+ <summary>
+ Copies the items of the collection to an <see cref="T:System.Array"/>,
+ starting at a particular index.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the items copied from the collection. The <see cref="T:System.Array"/> must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through a collection.
+ </summary>
+ <returns>
+ An <see cref="T:System.Collections.IEnumerator"/> that can be used to iterate through
+ the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.RemoveAt(System.Int32)">
+ <summary>
+ Removes an item at a specific index.
+ </summary>
+ <param name="index">The zero-based index of the item to remove.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.Clear">
+ <summary>
+ Removes all items from the collection.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.ValidateType(System.Object)">
+ <summary>
+ Used by methods that take <see cref="T:System.Object"/> instances as argument
+ to verify whether the instance is valid for the collection class.
+ </summary>
+ <param name="value">The instance to verify.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.DataTypeCollectionBase.RangeCheck(System.Int32)">
+ <summary>
+ Checks whether the specified index is within the range of this
+ collection.
+ </summary>
+ <param name="index">The index to check.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.System#Collections#ICollection#IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is
+ synchronized (thread-safe).
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.Count">
+ <summary>
+ Gets the number of items in the collection.
+ </summary>
+ <value>
+ The number of items in the collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.System#Collections#ICollection#SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the
+ collection.
+ </summary>
+ <value>
+ An object that can be used to synchronize access to the collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.List">
+ <summary>
+ Gets the list of elements contained in the
+ <see cref="T:NAnt.DotNet.Types.DataTypeCollectionBase"/> instance.
+ </summary>
+ <value>
+ An <see cref="T:System.Collections.ArrayList"/> containing the elements of the
+ collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.DataTypeCollectionBase.ItemType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the items in this collection.
+ </summary>
+ <value>
+ The <see cref="T:System.Type"/> of the items in this collection.
+ </value>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.EmbeddedResourceEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.System#Collections#IList#Insert(System.Int32,System.Object)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> into the collection at the
+ specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="value"/> should be inserted.</param>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.System#Collections#IList#Remove(System.Object)">
+ <summary>
+ Removes the specified <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> from the
+ collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.System#Collections#IList#Contains(System.Object)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> is in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.System#Collections#IList#IndexOf(System.Object)">
+ <summary>
+ Gets the location of a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> object to locate.</param>
+ <returns>
+ The zero-based location of the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> in the
+ collection.
+ </returns>
+ <remarks>
+ If the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> is not currently a member of
+ the collection, -1 is returned.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.System#Collections#IList#Add(System.Object)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to the end of the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new item was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.AddRange(NAnt.DotNet.Types.EmbeddedResourceCollection)">
+ <summary>
+ Adds the items of a <see cref="T:NAnt.DotNet.Types.EmbeddedResourceCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.EmbeddedResourceCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.Add(NAnt.DotNet.Types.EmbeddedResource)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to the end of the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new item was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.Insert(System.Int32,NAnt.DotNet.Types.EmbeddedResource)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> into the collection at the
+ specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="value"/> should be inserted.</param>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.Remove(NAnt.DotNet.Types.EmbeddedResource)">
+ <summary>
+ Removes the specified <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> from the
+ collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.Contains(NAnt.DotNet.Types.EmbeddedResource)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> is in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceCollection.IndexOf(NAnt.DotNet.Types.EmbeddedResource)">
+ <summary>
+ Gets the location of a <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> object to locate.</param>
+ <returns>
+ The zero-based location of the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> in the
+ collection.
+ </returns>
+ <remarks>
+ If the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> is not currently a member of
+ the collection, -1 is returned.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResourceCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to get or set.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResourceCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> with the specified manifest
+ resource name.
+ </summary>
+ <param name="value">The manifest resource name of the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> to get.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResourceCollection.ItemType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the items in this collection.
+ </summary>
+ <value>
+ The <see cref="T:System.Type"/> of the items in this collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResourceCollection.System#Collections#IList#Item(System.Int32)">
+ <summary>
+ Gets or sets the item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to get or set.</param>
+ </member>
+ <member name="T:NAnt.DotNet.Types.EmbeddedResourceEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.EmbeddedResource"/> items of a <see cref="T:NAnt.DotNet.Types.EmbeddedResourceCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceEnumerator.#ctor(NAnt.DotNet.Types.EmbeddedResourceCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.EmbeddedResourceEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.EmbeddedResourceCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next item of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next item; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.EmbeddedResourceEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first item in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResourceEnumerator.Current">
+ <summary>
+ Gets the current item in the collection.
+ </summary>
+ <returns>
+ The current item in the collection.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Types.EmbeddedResourceEnumerator.System#Collections#IEnumerator#Current">
+ <summary>
+ Gets the current item in the collection.
+ </summary>
+ <returns>
+ The current item in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.Module">
+ <summary>
+ Represents a metadata file without assembly manifest.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.Module.ToString">
+ <summary>
+ Returns a textual representation of the module, which can be used as
+ argument for command-line tools.
+ </summary>
+ <returns>
+ A textual representation of the path, file[,target].
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Types.Module.File">
+ <summary>
+ The path of the module.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.Module.Target">
+ <summary>
+ File name where the module should be copied to before it is compiled
+ into an assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.Module.ModuleSet">
+ <summary>
+ Gets or sets the <see cref="P:NAnt.DotNet.Types.Module.ModuleSet"/> that contains the module.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.ModuleCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.DotNet.Types.Module"/> items.
+ </summary>
+ <remarks>
+ Do not yet expose this to build authors.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.#ctor(NAnt.DotNet.Types.ModuleSet)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ModuleCollection"/>
+ for the specified <see cref="T:NAnt.DotNet.Types.ModuleSet"/>.
+ </summary>
+ <param name="moduleSet">The <see cref="T:NAnt.DotNet.Types.ModuleSet"/> containing the collection.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="moduleSet"/> is <see langword="true"/>.</exception>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.ModuleEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.CopyTo(System.Array,System.Int32)">
+ <summary>
+ Copies the items of the collection to an <see cref="T:System.Array"/>,
+ starting at a particular index.
+ </summary>
+ <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the items copied from the collection. The <see cref="T:System.Array"/> must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.Clear">
+ <summary>
+ Removes all items from the collection.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.System#Collections#IList#Insert(System.Int32,System.Object)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.Module"/> into the collection at the
+ specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="value"/> should be inserted.</param>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.System#Collections#IList#Remove(System.Object)">
+ <summary>
+ Removes the specified <see cref="T:NAnt.DotNet.Types.Module"/> from the
+ collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.RemoveAt(System.Int32)">
+ <summary>
+ Removes an item at a specific index.
+ </summary>
+ <param name="index">The zero-based index of the item to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="index"/> parameter is less than 0 or greater than or equal to the value of the <see cref="P:NAnt.DotNet.Types.ModuleCollection.Count"/> property of the <see cref="T:NAnt.DotNet.Types.ModuleCollection"/>.</exception>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.System#Collections#IList#Contains(System.Object)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.Module"/> is in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.System#Collections#IList#IndexOf(System.Object)">
+ <summary>
+ Gets the location of a <see cref="T:NAnt.DotNet.Types.Module"/> in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> object to locate.</param>
+ <returns>
+ The zero-based location of the <see cref="T:NAnt.DotNet.Types.Module"/> in the
+ collection.
+ </returns>
+ <remarks>
+ If the <see cref="T:NAnt.DotNet.Types.Module"/> is not currently a member of
+ the collection, -1 is returned.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.System#Collections#IList#Add(System.Object)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.Module"/> to the end of the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new item was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.AddRange(NAnt.DotNet.Types.ModuleCollection)">
+ <summary>
+ Adds the items of a <see cref="T:NAnt.DotNet.Types.ModuleCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.ModuleCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.Add(NAnt.DotNet.Types.Module)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.Module"/> to the end of the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new item was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.ModuleEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.Insert(System.Int32,NAnt.DotNet.Types.Module)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.Module"/> into the collection at the
+ specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="value"/> should be inserted.</param>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.Remove(NAnt.DotNet.Types.Module)">
+ <summary>
+ Removes the specified <see cref="T:NAnt.DotNet.Types.Module"/> from the
+ collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.Contains(NAnt.DotNet.Types.Module)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.Module"/> is in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleCollection.IndexOf(NAnt.DotNet.Types.Module)">
+ <summary>
+ Gets the location of a <see cref="T:NAnt.DotNet.Types.Module"/> in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.Module"/> object to locate.</param>
+ <returns>
+ The zero-based location of the <see cref="T:NAnt.DotNet.Types.Module"/> in the
+ collection.
+ </returns>
+ <remarks>
+ If the <see cref="T:NAnt.DotNet.Types.Module"/> is not currently a member of
+ the collection, -1 is returned.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="index"/> parameter is less than 0 or greater than or equal to the value of the <see cref="P:NAnt.DotNet.Types.ModuleCollection.Count"/> property of the <see cref="T:NAnt.DotNet.Types.ModuleCollection"/>.</exception>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.List">
+ <summary>
+ Gets the list of elements contained in the
+ <see cref="T:NAnt.DotNet.Types.ModuleCollection"/> instance.
+ </summary>
+ <value>
+ An <see cref="T:System.Collections.ArrayList"/> containing the elements of the
+ collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.System#Collections#ICollection#IsSynchronized">
+ <summary>
+ Gets a value indicating whether access to the collection is
+ synchronized (thread-safe).
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.Count">
+ <summary>
+ Gets the number of items in the collection.
+ </summary>
+ <value>
+ The number of items in the collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.System#Collections#ICollection#SyncRoot">
+ <summary>
+ Gets an object that can be used to synchronize access to the
+ collection.
+ </summary>
+ <value>
+ An object that can be used to synchronize access to the collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.IsFixedSize">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the collection has a fixed size.
+ </summary>
+ <value>
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleCollection.System#Collections#IList#Item(System.Int32)">
+ <summary>
+ Gets or sets the item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to get or set.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="index"/> parameter is less than 0 or greater than or equal to the value of the <see cref="P:NAnt.DotNet.Types.ModuleCollection.Count"/> property of the <see cref="T:NAnt.DotNet.Types.ModuleCollection"/>.</exception>
+ </member>
+ <member name="T:NAnt.DotNet.Types.ModuleEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.Module"/> items of a <see cref="T:NAnt.DotNet.Types.ModuleCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleEnumerator.#ctor(NAnt.DotNet.Types.ModuleCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ModuleEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.ModuleCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next item of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next item; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first item in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleEnumerator.Current">
+ <summary>
+ Gets the current item in the collection.
+ </summary>
+ <returns>
+ The current item in the collection.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleEnumerator.System#Collections#IEnumerator#Current">
+ <summary>
+ Gets the current item in the collection.
+ </summary>
+ <returns>
+ The current item in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.ModuleSet">
+ <summary>
+ <para>
+ One or more modules to compile into an assembly.
+ </para>
+ </summary>
+ <example>
+ <para>
+ Define a global <c>&lt;moduleset&gt;</c> that can be referenced by
+ other tasks or types.
+ </para>
+ <code>
+ <![CDATA[
+ <moduleset id="client-modules" dir="${build}">
+ <module file="Client.netmodule" />
+ <module file="Common.netmodule" />
+ </moduleset>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ModuleSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ModuleSet"/> class.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleSet.Dir">
+ <summary>
+ The base of the directory of this <see cref="T:NAnt.DotNet.Types.ModuleSet"/>.
+ The default is the project base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ModuleSet.Modules">
+ <summary>
+ The modules to add to this <see cref="T:NAnt.DotNet.Types.ModuleSet"/>.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.NamespaceImport">
+ <summary>
+ Represents a namespace to import.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImport.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImport.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/>
+ class for the specified namespace.
+ </summary>
+ <param name="nameSpace">The namespace.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="nameSpace"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImport.TempName">
+ <summary>
+ The name of the namespace to import.
+ </summary>
+ <value>
+ The name of the namespace to import.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImport.Namespace">
+ <summary>
+ The name of the namespace to import.
+ </summary>
+ <value>
+ The name of the namespace to import.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImport.IfDefined">
+ <summary>
+ Indicates if the import should be generated.
+ </summary>
+ <value>
+ <see langword="true" /> if the import should be generated; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImport.UnlessDefined">
+ <summary>
+ Indicates if the import should be not generated.
+ </summary>
+ <value>
+ <see langword="true" /> if the import should be not generated;
+ otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Types.NamespaceImportCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> items.
+ </summary>
+ <example>
+ <para>Define a reference with name "system.imports".</para>
+ <code>
+ <![CDATA[
+ <namespaceimports id="system.imports">
+ <import namespace="System" />
+ <import namespace="System.Data" />
+ </namespaceimports>
+ ]]>
+ </code>
+ <para>Use the predefined set of imports to compile a VB.NET assembly.</para>
+ <code>
+ <![CDATA[
+ <vbc target="exe" output="HelloWorld.exe" rootnamespace="HelloWorld">
+ <imports refid="system.imports" />
+ <sources>
+ <include name="**/*.vb" />
+ </sources>
+ <references>
+ <include name="System.dll" />
+ <include name="System.Data.dll" />
+ </references>
+ </vbc>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.NamespaceImportEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.ToString">
+ <summary>
+ Returns a comma-delimited list of namespace imports.
+ </summary>
+ <returns>
+ A comma-delimited list of namespace imports, or an empty
+ <see cref="T:System.String"/> if there are no namespace imports.
+ </returns>
+ <remarks>
+ Each namespace import is quoted individually.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.System#Collections#IList#Insert(System.Int32,System.Object)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> into the collection at the
+ specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="value"/> should be inserted.</param>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.System#Collections#IList#Remove(System.Object)">
+ <summary>
+ Removes the specified <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> from the
+ collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.System#Collections#IList#Contains(System.Object)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> is in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.System#Collections#IList#IndexOf(System.Object)">
+ <summary>
+ Gets the location of a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> object to locate.</param>
+ <returns>
+ The zero-based location of the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> in the
+ collection.
+ </returns>
+ <remarks>
+ If the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> is not currently a member of
+ the collection, -1 is returned.
+ </remarks>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.System#Collections#IList#Add(System.Object)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to the end of the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new item was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.AddRange(NAnt.DotNet.Types.NamespaceImportCollection)">
+ <summary>
+ Adds the items of a <see cref="T:NAnt.DotNet.Types.NamespaceImportCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.NamespaceImportCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.Add(NAnt.DotNet.Types.NamespaceImport)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to the end of the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new item was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.Insert(System.Int32,NAnt.DotNet.Types.NamespaceImport)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> into the collection at the
+ specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="value"/> should be inserted.</param>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.Remove(NAnt.DotNet.Types.NamespaceImport)">
+ <summary>
+ Removes the specified <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> from the
+ collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.Contains(NAnt.DotNet.Types.NamespaceImport)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> is in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="value"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportCollection.IndexOf(NAnt.DotNet.Types.NamespaceImport)">
+ <summary>
+ Gets the location of a <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> in the collection.
+ </summary>
+ <param name="value">The <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> object to locate.</param>
+ <returns>
+ The zero-based location of the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> in the
+ collection.
+ </returns>
+ <remarks>
+ If the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> is not currently a member of
+ the collection, -1 is returned.
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImportCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to get or set.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImportCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> with the specified namespace.
+ </summary>
+ <param name="value">The namespace of the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> to get.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImportCollection.ItemType">
+ <summary>
+ Gets the <see cref="T:System.Type"/> of the items in this collection.
+ </summary>
+ <value>
+ The <see cref="T:System.Type"/> of the items in this collection.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImportCollection.System#Collections#IList#Item(System.Int32)">
+ <summary>
+ Gets or sets the item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to get or set.</param>
+ </member>
+ <member name="T:NAnt.DotNet.Types.NamespaceImportEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.NamespaceImport"/> items of a <see cref="T:NAnt.DotNet.Types.NamespaceImportCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportEnumerator.#ctor(NAnt.DotNet.Types.NamespaceImportCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.NamespaceImportEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.NamespaceImportCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next item of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next item; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.NamespaceImportEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first item in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImportEnumerator.Current">
+ <summary>
+ Gets the current item in the collection.
+ </summary>
+ <returns>
+ The current item in the collection.
+ </returns>
+ </member>
+ <member name="P:NAnt.DotNet.Types.NamespaceImportEnumerator.System#Collections#IEnumerator#Current">
+ <summary>
+ Gets the current item in the collection.
+ </summary>
+ <returns>
+ The current item in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.Package">
+ <summary>
+ Represents a package.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.Package.PackageName">
+ <summary>
+ Name of the package to reference. Multiple package can be specified
+ with a single element as a semi-colon separated list of
+ package names.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.Package.IfDefined">
+ <summary>
+ Indicates if the package should be passed to the task.
+ If <see langword="true" /> then the package will be passed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.Package.UnlessDefined">
+ <summary>
+ Indicates if the package should not be passed to the task.
+ If <see langword="false" /> then the package will be passed;
+ otherwise, skipped. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.DotNet.Types.PackageCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.DotNet.Types.Package"/>
+ objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.PackageCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.#ctor(NAnt.DotNet.Types.PackageCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.PackageCollection"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.PackageCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.#ctor(NAnt.DotNet.Types.Package[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.PackageCollection"/> class
+ with the specified array of <see cref="T:NAnt.DotNet.Types.Package"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.Add(NAnt.DotNet.Types.Package)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.Package"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.Package"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.AddRange(NAnt.DotNet.Types.Package[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.Package"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.DotNet.Types.Package"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.AddRange(NAnt.DotNet.Types.PackageCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.PackageCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.PackageCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.Contains(NAnt.DotNet.Types.Package)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.Package"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.Package"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.CopyTo(NAnt.DotNet.Types.Package[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.IndexOf(NAnt.DotNet.Types.Package)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.DotNet.Types.Package"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.Package"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.DotNet.Types.Package"/>. If the <see cref="T:NAnt.DotNet.Types.Package"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.Insert(System.Int32,NAnt.DotNet.Types.Package)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.Package"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.Package"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.PackageEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageCollection.Remove(NAnt.DotNet.Types.Package)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.Package"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.PackageCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.DotNet.Types.PackageEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.Package"/> elements of a <see cref="T:NAnt.DotNet.Types.PackageCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageEnumerator.#ctor(NAnt.DotNet.Types.PackageCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.PackageEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.PackageCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.PackageEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.PackageEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.ResourceFileSet">
+ <summary>
+ Specialized <see cref="T:NAnt.Core.Types.FileSet"/> class for managing resource files.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSet.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSet.#ctor(NAnt.Core.Types.FileSet)">
+ <summary>
+ copy constructor for FileSet. Required in order to
+ assign references of FileSet type where
+ ResourceFileSet are used
+ </summary>
+ <param name="fs"></param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSet.Clone">
+ <summary>
+ Creates a shallow copy of the <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/>.
+ </summary>
+ <returns>
+ A shallow copy of the <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSet.GetManifestResourceName(System.String)">
+ <summary>
+ Gets the manifest resource name for the specified resource file.
+ </summary>
+ <param name="resourceFile">The physical path of the resource file.</param>
+ <returns>
+ The manifest resource name to be sent to the compiler.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSet.GetManifestResourceName(System.String,System.String)">
+ <summary>
+ Gets the manifest resource name for the file using both its physical
+ and logical path.
+ </summary>
+ <param name="physicalPath">The physical path of the resource file.</param>
+ <param name="logicalPath">The logical location of the resource file.</param>
+ <returns>
+ The manifest resource name to be sent to the compiler.
+ </returns>
+ <remarks>
+ We use the relative path of the logical path, but the filename and
+ and the extension of the physical path to match VS.NET
+ </remarks>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ResourceFileSet.Prefix">
+ <summary>
+ Indicates the prefix to prepend to the actual resource.
+ This is usually the default namspace of the assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ResourceFileSet.DynamicPrefix">
+ <summary>
+ Indicates whether prefixes should be dynamically generated by taking
+ the path of the resource relative to the basedir and appending it
+ to the specified prefix. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ResourceFileSet.ResxFiles">
+ <summary>
+ Gets a <see cref="T:NAnt.Core.Types.FileSet"/> containing all matching resx files.
+ </summary>
+ <value>
+ A <see cref="T:NAnt.Core.Types.FileSet"/> containing all matching resx files.
+ </value>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ResourceFileSet.NonResxFiles">
+ <summary>
+ Gets a <see cref="T:NAnt.Core.Types.FileSet"/> containing all matching non-resx
+ files.
+ </summary>
+ <value>
+ A <see cref="T:NAnt.Core.Types.FileSet"/> containing all matching non-resx files.
+ </value>
+ </member>
+ <member name="T:NAnt.DotNet.Types.ResourceFileSetCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.#ctor(NAnt.DotNet.Types.ResourceFileSetCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.#ctor(NAnt.DotNet.Types.ResourceFileSet[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/> class
+ with the specified array of <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.Add(NAnt.DotNet.Types.ResourceFileSet)">
+ <summary>
+ Adds a <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.AddRange(NAnt.DotNet.Types.ResourceFileSet[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.AddRange(NAnt.DotNet.Types.ResourceFileSetCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.Contains(NAnt.DotNet.Types.ResourceFileSet)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.CopyTo(NAnt.DotNet.Types.ResourceFileSet[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.IndexOf(NAnt.DotNet.Types.ResourceFileSet)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/>. If the <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.Insert(System.Int32,NAnt.DotNet.Types.ResourceFileSet)">
+ <summary>
+ Inserts a <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.DotNet.Types.ResourceFileSetEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetCollection.Remove(NAnt.DotNet.Types.ResourceFileSet)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ResourceFileSetCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.DotNet.Types.ResourceFileSetEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.DotNet.Types.ResourceFileSet"/> elements of a <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetEnumerator.#ctor(NAnt.DotNet.Types.ResourceFileSetCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.DotNet.Types.ResourceFileSetEnumerator"/> class
+ with the specified <see cref="T:NAnt.DotNet.Types.ResourceFileSetCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.DotNet.Types.ResourceFileSetEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.ResourceFileSetEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.DotNet.Types.WarningAsError">
+ <summary>
+ Controls the behaviour of a compiler with regards to the reporting of
+ warnings.
+ </summary>
+ <example>
+ <para>
+ Instruct a compiler to report warning 0519 as an error.
+ </para>
+ <code>
+ <![CDATA[
+ <warnaserror>
+ <include number="0519" />
+ </warnaserror>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Instruct a compiler not to report warning 0519 as an error, if the
+ <c>release</c> property is <see langword="true" />.
+ </para>
+ <code>
+ <![CDATA[
+ <warnaserror>
+ <exclude number="0519" if="${release}" />
+ </warnaserror>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.DotNet.Types.WarningAsError.Includes">
+ <summary>
+ Specifies a list of warnings that the compiler should treat as
+ errors. This overrides the <see cref="P:NAnt.DotNet.Tasks.CompilerBase.WarnAsError"/>
+ attribute. Only supported when targeting .NET 2.0 or higher.
+ </summary>
+ </member>
+ <member name="P:NAnt.DotNet.Types.WarningAsError.Excludes">
+ <summary>
+ Specifies a list of warnings that the compiler should NOT treat as
+ errors. This is only useful if <see cref="P:NAnt.DotNet.Tasks.CompilerBase.WarnAsError"/>
+ is <see langword="true"/>. Only supported when targeting .NET 2.0
+ or higher.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.dll
new file mode 100755
index 0000000..3099966
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.xml
new file mode 100755
index 0000000..9a442c6
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.MSNetTasks.xml
@@ -0,0 +1,579 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.MSNetTasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.MSNet.Tasks.IldasmTask">
+ <summary>
+ Disassembles any portable executable (PE) file that contains
+ intermediate language (IL) code.
+ </summary>
+ <remarks>
+ <para>
+ Files are only disassembled if the input file is newer than the output
+ file, or if the output file does not exist. However, you can
+ explicitly force files to be disassembled with the
+ <see cref="P:NAnt.MSNet.Tasks.IldasmTask.ForceRebuild"/> attribute.
+ </para>
+ <para>
+ A <see cref="T:NAnt.Core.Types.FileSet"/> can be used to select files to disassemble.
+ To use a <see cref="T:NAnt.Core.Types.FileSet"/>, the <see cref="P:NAnt.MSNet.Tasks.IldasmTask.ToDirectory"/>
+ attribute must be set. The file name of the output file will be equal
+ to the file name of the input file, but with extension ".il".
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Disassembles <c>helloworld.exe</c> to <c>helloworld.il</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <ildasm input="helloworld.exe" output="helloworld.il" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Disassembles a set of PE files into the specified directory.
+ </para>
+ <code>
+ <![CDATA[
+ <ildasm todir=".">
+ <assemblies>
+ <include name="*.exe" />
+ <include name="*.dll" />
+ </assemblies>
+ </ildasm>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.Initialize">
+ <summary>
+ Checks whether the task is initialized with valid attributes.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.ExecuteTask">
+ <summary>
+ Disassembles the PE file(s).
+ </summary>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.DisassemblyFile(System.IO.FileInfo)">
+ <summary>
+ Disassembles the specified PE file.
+ </summary>
+ <param name="inputFile">The PE file to disassemble.</param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.GetOutputFile(System.IO.FileInfo)">
+ <summary>
+ Determines the full path and extension for the output file.
+ </summary>
+ <param name="inputFile">
+ A <see cref="T:System.IO.FileInfo"/> that represents the PE file
+ file for which the corresponding output file should be determined.
+ </param>
+ <returns>
+ A <see cref="T:System.IO.FileInfo"/> that represents the full path
+ for the output file.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">The path of the output file could not be determined.</exception>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.WriteOptions(System.IO.FileInfo,System.IO.FileInfo)">
+ <summary>
+ Writes the disassembler options.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.WriteOption(System.IO.StringWriter,System.String)">
+ <summary>
+ Writes an option using the default output format.
+ </summary>
+ <param name="writer">
+ The <see cref="T:System.IO.StringWriter"/> to which the disassembler options
+ should be written.
+ </param>
+ <param name="name">
+ A <see cref="T:System.String"/> that contains the name of the
+ option which should be passed to the disassembler.
+ </param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.WriteOption(System.IO.StringWriter,System.String,System.String)">
+ <summary>
+ Writes an option and its value using the default output format.
+ </summary>
+ <param name="writer">
+ The <see cref="T:System.IO.StringWriter"/> to which the disassembler options
+ should be written.
+ </param>
+ <param name="name">
+ A <see cref="T:System.String"/> that contains the name of the
+ option which should be passed to the disassembler.
+ </param>
+ <param name="arg">
+ A <see cref="T:System.String"/> that contains the value of the
+ option which should be passed to the disassembler.
+ </param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.IldasmTask.NeedsDisassembling(System.IO.FileInfo,System.IO.FileInfo)">
+ <summary>
+ Determines whether or not disassembling is needed.
+ </summary>
+ <returns>
+ <see langword="true" /> if disassembling is needed; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.All">
+ <summary>
+ Specifies whether or not the disassembler should combine the
+ <c>/HEADER</c>, <c>/BYTE</c>, and <c>/TOKENS</c> options. The default
+ is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the disassembler should combine the
+ <c>/HEADER</c>, <c>/BYTE</c>, and <c>/TOKENS</c> options;
+ otherwise, <see langword="false" />. The default is
+ <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/ALL</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Bytes">
+ <summary>
+ Specifies whether or not the disassembler should generate the
+ IL stream bytes (in hexadecimal notation) as instruction comments.
+ The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the IL stream bytes should be generated
+ as instruction comments; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/BYTE</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.ForceRebuild">
+ <summary>
+ Instructs NAnt to rebuild the output file regardless of the file
+ timestamps. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the output file should be rebuilt
+ regardless of its timestamps; otherwise <see langword="false" />.
+ The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Header">
+ <summary>
+ Specifies whether or not the disassembler should include PE header
+ information and runtime header information in the output. The default
+ is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if PE header information and runtime header
+ information should be included in the output; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/HEADER</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.InputFile">
+ <summary>
+ Specifies the PE file to disassemble.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.FileInfo"/> that represents the PE file
+ to disassemble.
+ </value>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.LineNumbers">
+ <summary>
+ Specifies whether or not the disassembler should include
+ references to original source lines. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if references to original source lines
+ should be included; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/LINENUM</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.NoIL">
+ <summary>
+ Specifies whether or not the disassembler should suppress ILASM
+ code output. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if ILASM code output should be suppresses;
+ otherwise, <see langword="false" />. The default is
+ <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/NOIL</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.PublicOnly">
+ <summary>
+ Specifies whether or not the disassembler should disassemble
+ public items only. This is a shortcut for <see cref="P:NAnt.MSNet.Tasks.IldasmTask.Visibility"/>="pub".
+ The default is <see langword="false"/>.
+ </summary>
+ <value>
+ <see langword="true"/> if only public items should be
+ disassembled; otherwise, <see langword="false"/>. The default is
+ <see langword="false"/>.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/PUBONLY</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.QuoteAllNames">
+ <summary>
+ Specifies whether or not the disassembler should enclose all names
+ in single quotation marks. By default, only names that don't match
+ the ILASM definition of a simple name are quoted. The default is
+ <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if all names should be enclosed in single
+ quotation marks; otherwise, <see langword="false" />. The default
+ is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/QUOTEALLNAMES</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.RawExceptionHandling">
+ <summary>
+ Specifies whether or not the disassembler should generate
+ structured exception handling clauses in canonical (label) form.
+ The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if structured exception handling clauses
+ should be generated in canonical form; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/RAWEH</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Source">
+ <summary>
+ Specifies whether or not the disassembler should generate
+ original source lines as comments. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if original source lines should be
+ generated as comments; otherwise, <see langword="false" />.
+ The default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/SOURCE</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Tokens">
+ <summary>
+ Specifies whether or not the disassembler should generate metadata
+ token values as comments. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if metadata token values should be
+ generated as comments; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/TOKENS</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Unicode">
+ <summary>
+ Specifies whether or not the disassembler should use the UNICODE
+ encoding when generating the output. The default is ANSI.
+ </summary>
+ <value>
+ <see langword="true" /> if the output should be generated using
+ the UNICODE encoding; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/UNICODE</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Utf8">
+ <summary>
+ Specifies whether or not the disassembler should use the UTF-8
+ encoding when generating the output. The default is ANSI.
+ </summary>
+ <value>
+ <see langword="true" /> if the output should be generated using
+ the UTF-8 encoding; otherwise, <see langword="false" />. The
+ default is <see langword="false" />.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/UTF8</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Item">
+ <summary>
+ Instructs the disassembler to disassemble the specified item only.
+ </summary>
+ <value>
+ A <see cref="T:System.String"/> that specifies the item to
+ disassemble.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/ITEM</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Visibility">
+ <summary>
+ Instructs the disassembler to disassemble only the items with the
+ specified visibility. Possible values are <c>PUB</c>, <c>PRI</c>,
+ <c>FAM</c>, <c>ASM</c>, <c>FAA</c>, <c>FOA</c>, <c>PSC</c>,
+ or any combination of them separated by <c>+</c>.
+ </summary>
+ <value>
+ A <see cref="T:System.String"/> that contains the visibility
+ suboptions.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/VISIBILITY</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.OutputFile">
+ <summary>
+ Specifies the name of the output file created by the disassembler.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.FileInfo"/> that represents the name of
+ the output file.
+ </value>
+ <remarks>
+ <para>
+ Corresponds to the <c>/OUT</c> flag.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.ToDirectory">
+ <summary>
+ Specifies the directory to which outputs will be stored.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.DirectoryInfo"/> that represents the
+ directory to which outputs will be stored.
+ </value>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Assemblies">
+ <summary>
+ Specifies a list of PE files to disassemble. To use a <see cref="T:NAnt.Core.Types.FileSet"/>,
+ the <see cref="P:NAnt.MSNet.Tasks.IldasmTask.ToDirectory"/> attribute must be specified.
+ </summary>
+ <value>
+ A <see cref="T:NAnt.Core.Types.FileSet"/> that represents the set
+ of PE files to disassemble.
+ </value>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.Arguments">
+ <summary>
+ The command-line arguments for the external program.
+ </summary>
+ <remarks>
+ Overridden to ensure the &lt;arg&gt; elements would not be exposed
+ to build authors.
+ </remarks>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.IldasmTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ A <see cref="T:System.String"/> that contains the command-line
+ arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.MSNet.Tasks.ServiceControllerTask">
+ <summary>
+ Allows a Windows service to be controlled.
+ </summary>
+ <example>
+ <para>Starts the World Wide Web Publishing Service on the local computer.</para>
+ <code>
+ <![CDATA[
+ <servicecontroller action="Start" service="w3svc" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Stops the Alerter service on computer 'MOTHER'.</para>
+ <code>
+ <![CDATA[
+ <servicecontroller action="Stop" service="Alerter" machine="MOTHER" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.MSNet.Tasks.ServiceControllerTask"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.ExecuteTask">
+ <summary>
+ Peforms actions on the service in order to reach the desired status.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.DetermineDesiredStatus">
+ <summary>
+ Determines the desired status of the service based on the action
+ that should be performed on it.
+ </summary>
+ <returns>
+ The <see cref="T:System.ServiceProcess.ServiceControllerStatus"/> that should be reached
+ in order for the <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.Action"/> to be considered successful.
+ </returns>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.StartService(System.ServiceProcess.ServiceController)">
+ <summary>
+ Starts the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and
+ <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.
+ </summary>
+ <param name="serviceController"><see cref="T:System.ServiceProcess.ServiceController"/> instance for controlling the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.</param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.StopService(System.ServiceProcess.ServiceController)">
+ <summary>
+ Stops the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and
+ <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.
+ </summary>
+ <param name="serviceController"><see cref="T:System.ServiceProcess.ServiceController"/> instance for controlling the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.</param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.RestartService(System.ServiceProcess.ServiceController)">
+ <summary>
+ Restarts the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and
+ <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.
+ </summary>
+ <param name="serviceController"><see cref="T:System.ServiceProcess.ServiceController"/> instance for controlling the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.</param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.PauseService(System.ServiceProcess.ServiceController)">
+ <summary>
+ Pauses the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and
+ <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.
+ </summary>
+ <param name="serviceController"><see cref="T:System.ServiceProcess.ServiceController"/> instance for controlling the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.</param>
+ </member>
+ <member name="M:NAnt.MSNet.Tasks.ServiceControllerTask.ContinueService(System.ServiceProcess.ServiceController)">
+ <summary>
+ Continues the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and
+ <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.
+ </summary>
+ <param name="serviceController"><see cref="T:System.ServiceProcess.ServiceController"/> instance for controlling the service identified by <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName"/> and <see cref="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName"/>.</param>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask._serviceName">
+ <summary>
+ Holds the name of the service that should be controlled.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask._machineName">
+ <summary>
+ Holds the name of the computer on which the service resides.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask._action">
+ <summary>
+ Holds the action that should be performed on the service.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask._timeout">
+ <summary>
+ Holds the time, in milliseconds, the task will wait for a service
+ to reach the desired status.
+ </summary>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.ServiceControllerTask.ServiceName">
+ <summary>
+ The name of the service that should be controlled.
+ </summary>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.ServiceControllerTask.MachineName">
+ <summary>
+ The name of the computer on which the service resides. The default
+ is the local computer.
+ </summary>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.ServiceControllerTask.Action">
+ <summary>
+ The action that should be performed on the service.
+ </summary>
+ </member>
+ <member name="P:NAnt.MSNet.Tasks.ServiceControllerTask.Timeout">
+ <summary>
+ The time, in milliseconds, the task will wait for the service to
+ reach the desired status. The default is 5000 milliseconds.
+ </summary>
+ </member>
+ <member name="T:NAnt.MSNet.Tasks.ServiceControllerTask.ActionType">
+ <summary>
+ Defines the actions that can be performed on a service.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask.ActionType.Start">
+ <summary>
+ Starts a service.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask.ActionType.Stop">
+ <summary>
+ Stops a service.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask.ActionType.Restart">
+ <summary>
+ Restarts a service.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask.ActionType.Pause">
+ <summary>
+ Pauses a running service.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSNet.Tasks.ServiceControllerTask.ActionType.Continue">
+ <summary>
+ Continues a paused service.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.dll
new file mode 100755
index 0000000..cf7d5dc
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.xml
new file mode 100755
index 0000000..a7c6239
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit.xml
@@ -0,0 +1,353 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.NUnit</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.NUnit.Types.FormatterData">
+ <summary>
+ Carries data specified through the formatter element.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterData.Type">
+ <summary>
+ Gets or sets the type of the formatter.
+ </summary>
+ <value>The type of the formatter.</value>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterData.UseFile">
+ <summary>
+ Gets or sets a value indicating whether output should be persisted
+ to a file.
+ </summary>
+ <value>
+ <see langword="true" /> if output should be written to a file; otherwise,
+ <see langword="false" />. The default is <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterData.Extension">
+ <summary>
+ Gets or sets the extension to append to the output filename.
+ </summary>
+ <value>The extension to append to the output filename.</value>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterData.OutputDirectory">
+ <summary>
+ Gets or sets the directory where the output file should be written
+ to, if <see cref="P:NAnt.NUnit.Types.FormatterData.UseFile"/> is <see langword="true"/>.
+ </summary>
+ <value>
+ The directory where the output file should be written to.
+ </value>
+ </member>
+ <member name="T:NAnt.NUnit.Types.FormatterDataCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.NUnit.Types.FormatterData"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.#ctor(NAnt.NUnit.Types.FormatterDataCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/> class
+ with the specified <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.#ctor(NAnt.NUnit.Types.FormatterData[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/> class
+ with the specified array of <see cref="T:NAnt.NUnit.Types.FormatterData"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.Add(NAnt.NUnit.Types.FormatterData)">
+ <summary>
+ Adds a <see cref="T:NAnt.NUnit.Types.FormatterData"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterData"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.AddRange(NAnt.NUnit.Types.FormatterData[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit.Types.FormatterData"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.NUnit.Types.FormatterData"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.AddRange(NAnt.NUnit.Types.FormatterDataCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.Contains(NAnt.NUnit.Types.FormatterData)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.NUnit.Types.FormatterData"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterData"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.CopyTo(NAnt.NUnit.Types.FormatterData[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.IndexOf(NAnt.NUnit.Types.FormatterData)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.NUnit.Types.FormatterData"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterData"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.NUnit.Types.FormatterData"/>. If the <see cref="T:NAnt.NUnit.Types.FormatterData"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.Insert(System.Int32,NAnt.NUnit.Types.FormatterData)">
+ <summary>
+ Inserts a <see cref="T:NAnt.NUnit.Types.FormatterData"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterData"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.NUnit.Types.FormatterDataEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataCollection.Remove(NAnt.NUnit.Types.FormatterData)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterData"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterDataCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.NUnit.Types.FormatterDataEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.NUnit.Types.FormatterData"/> elements of a <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataEnumerator.#ctor(NAnt.NUnit.Types.FormatterDataCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterDataEnumerator"/> class
+ with the specified <see cref="T:NAnt.NUnit.Types.FormatterDataCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterDataEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterDataEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.NUnit.Types.FormatterType">
+ <summary>
+ The built-in formatter types.
+ </summary>
+ </member>
+ <member name="F:NAnt.NUnit.Types.FormatterType.Plain">
+ <summary>
+ A plaintext formatter.
+ </summary>
+ </member>
+ <member name="F:NAnt.NUnit.Types.FormatterType.Xml">
+ <summary>
+ An XML formatter.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit.Types.FormatterElement">
+ <summary>
+ Represents the FormatterElement of the NUnit task.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElement.Type">
+ <summary>
+ Type of formatter.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElement.Extension">
+ <summary>
+ Extension to append to the output filename.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElement.UseFile">
+ <summary>
+ Determines whether output should be persisted to a file. The default
+ is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElement.OutputDirectory">
+ <summary>
+ Specifies the directory where the output file should be written to,
+ if <see cref="P:NAnt.NUnit.Types.FormatterElement.UseFile"/> is <see langword="true"/>. If not
+ specified, the output file will be written to the directory where
+ the test module is located.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElement.Data">
+ <summary>
+ Gets the underlying <see cref="T:NAnt.NUnit.Types.FormatterData"/> for the element.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit.Types.FormatterElementCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.NUnit.Types.FormatterElement"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.#ctor(NAnt.NUnit.Types.FormatterElementCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/> class
+ with the specified <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.#ctor(NAnt.NUnit.Types.FormatterElement[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/> class
+ with the specified array of <see cref="T:NAnt.NUnit.Types.FormatterElement"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.Add(NAnt.NUnit.Types.FormatterElement)">
+ <summary>
+ Adds a <see cref="T:NAnt.NUnit.Types.FormatterElement"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterElement"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.AddRange(NAnt.NUnit.Types.FormatterElement[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit.Types.FormatterElement"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.NUnit.Types.FormatterElement"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.AddRange(NAnt.NUnit.Types.FormatterElementCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.Contains(NAnt.NUnit.Types.FormatterElement)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.NUnit.Types.FormatterElement"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterElement"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.CopyTo(NAnt.NUnit.Types.FormatterElement[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.IndexOf(NAnt.NUnit.Types.FormatterElement)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.NUnit.Types.FormatterElement"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterElement"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.NUnit.Types.FormatterElement"/>. If the <see cref="T:NAnt.NUnit.Types.FormatterElement"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.Insert(System.Int32,NAnt.NUnit.Types.FormatterElement)">
+ <summary>
+ Inserts a <see cref="T:NAnt.NUnit.Types.FormatterElement"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterElement"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.NUnit.Types.FormatterElementEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementCollection.Remove(NAnt.NUnit.Types.FormatterElement)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit.Types.FormatterElement"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElementCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.NUnit.Types.FormatterElementEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.NUnit.Types.FormatterElement"/> elements of a <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementEnumerator.#ctor(NAnt.NUnit.Types.FormatterElementCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit.Types.FormatterElementEnumerator"/> class
+ with the specified <see cref="T:NAnt.NUnit.Types.FormatterElementCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit.Types.FormatterElementEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit.Types.FormatterElementEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.dll
new file mode 100755
index 0000000..a7bda37
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.xml
new file mode 100755
index 0000000..85367f3
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit1Tasks.xml
@@ -0,0 +1,538 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.NUnit1Tasks</name>
+ </assembly>
+ <members>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatter.StartTestSuite(NAnt.NUnit1.Types.NUnitTestData)">
+ <summary>
+ The whole test suite started.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatter.EndTestSuite(NAnt.NUnit1.Types.TestResultExtra)">
+ <summary>
+ The whole test suite ended.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatter.SetOutput(System.IO.TextWriter)">
+ <summary>
+ Sets the <see cref="T:System.IO.TextWriter"/> the formatter is supposed to write
+ its results to.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.IResultFormatterCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.#ctor(NAnt.NUnit1.Types.IResultFormatterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/> class
+ with the specified <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.#ctor(NAnt.NUnit1.Types.IResultFormatter[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/> class
+ with the specified array of <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.Add(NAnt.NUnit1.Types.IResultFormatter)">
+ <summary>
+ Adds a <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.AddRange(NAnt.NUnit1.Types.IResultFormatter[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.AddRange(NAnt.NUnit1.Types.IResultFormatterCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.Contains(NAnt.NUnit1.Types.IResultFormatter)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.CopyTo(NAnt.NUnit1.Types.IResultFormatter[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.IndexOf(NAnt.NUnit1.Types.IResultFormatter)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/>. If the <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.Insert(System.Int32,NAnt.NUnit1.Types.IResultFormatter)">
+ <summary>
+ Inserts a <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.NUnit1.Types.IResultFormatterEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterCollection.Remove(NAnt.NUnit1.Types.IResultFormatter)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.IResultFormatterCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.IResultFormatterEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.NUnit1.Types.IResultFormatter"/> elements of a <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterEnumerator.#ctor(NAnt.NUnit1.Types.IResultFormatterCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.IResultFormatterEnumerator"/> class
+ with the specified <see cref="T:NAnt.NUnit1.Types.IResultFormatterCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.IResultFormatterEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.IResultFormatterEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.LogFormatter">
+ <summary>
+ Prints information about running tests directly to the build log.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.LogFormatter.SetOutput(System.IO.TextWriter)">
+ <summary>Not used, all output goes to Log class.</summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.LogFormatter.StartTestSuite(NAnt.NUnit1.Types.NUnitTestData)">
+ <summary>Called when the whole test suite has started.</summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.LogFormatter.EndTestSuite(NAnt.NUnit1.Types.TestResultExtra)">
+ <summary>Called when the whole test suite has ended.</summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.LogFormatter.FormatError(System.String,System.String)">
+ <summary>Convert a stack trace line into something that can be clicked on in an IDE output window.</summary>
+ <param name="trace">The StackTrace string, see <see cref="P:System.Exception.StackTrace"/>.</param>
+ <param name="message">The string that gets appended to the end of file(line): portion.</param>
+ </member>
+ <member name="T:NAnt.NUnit1.Tasks.NUnitTask">
+ <summary>
+ Runs tests using the NUnit V1.0 framework.
+ </summary>
+ <remarks>
+ <para>
+ See the <see href="http://nunit.sf.net">NUnit home page</see> for more
+ information.
+ </para>
+ <para>
+ The <see cref="P:NAnt.NUnit1.Tasks.NUnitTask.HaltOnFailure"/> or <see cref="P:NAnt.NUnit1.Tasks.NUnitTask.HaltOnError"/>
+ attributes are only used to stop more than one test suite to stop
+ running. If any test suite fails a build error will be thrown.
+ Set <see cref="P:NAnt.Core.Task.FailOnError"/> to <see langword="false"/> to
+ ignore test errors and continue build.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Run tests in the <c>MyProject.Tests.dll</c> assembly.
+ </para>
+ <para>
+ The test results are logged in <c>results.xml</c> and <c>results.txt</c>
+ using the <see cref="F:NAnt.NUnit.Types.FormatterType.Xml"/> and <see cref="F:NAnt.NUnit.Types.FormatterType.Plain"/>
+ formatters, respectively.
+ </para>
+ <code>
+ <![CDATA[
+ <nunit basedir="build" verbose="false" haltonerror="true" haltonfailure="true">
+ <formatter type="Xml" />
+ <formatter type="Plain" />
+ <test name="MyProject.Tests.AllTests" assembly="MyProject.Tests.dll" outfile="results"/>
+ </nunit>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTask.HaltOnError">
+ <summary>
+ Stops running tests when a test causes an error. The default is
+ <see langword="false" />.
+ </summary>
+ <remarks>
+ Implies haltonfailure.
+ </remarks>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTask.HaltOnFailure">
+ <summary>
+ Stops running tests if a test fails (errors are considered failures
+ as well). The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTask.Timeout">
+ <summary>
+ Cancel the individual tests if they do not finish in the specified
+ time (measured in milliseconds). Ignored if fork is disabled.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTask.Tests">
+ <summary>
+ Tests to run.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTask.FormatterElements">
+ <summary>
+ Formatters to output results of unit tests.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.NUnitTest">
+ <summary>
+ Represents a test element of an <see cref="T:NAnt.NUnit1.Tasks.NUnitTask"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.OutFile">
+ <summary>
+ Base name of the test result. The full filename is determined by this
+ attribute and the extension of formatter.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.ToDir">
+ <summary>
+ Directory to write the reports to.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.Class">
+ <summary>
+ Class name of the test.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.Assembly">
+ <summary>
+ Assembly to load the test from.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.Fork">
+ <summary>
+ Run the tests in a separate <see cref="T:System.AppDomain"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.HaltOnError">
+ <summary>
+ Stop the build process if an error occurs during the test run.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.HaltOnFailure">
+ <summary>
+ Stop the build process if a test fails (errors are considered failures
+ as well).
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTest.AppConfigFile">
+ <summary>
+ The application configuration file to use for the NUnit test domain.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.NUnitTestCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.#ctor(NAnt.NUnit1.Types.NUnitTestCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/> class
+ with the specified <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.#ctor(NAnt.NUnit1.Types.NUnitTest[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/> class
+ with the specified array of <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.Add(NAnt.NUnit1.Types.NUnitTest)">
+ <summary>
+ Adds a <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.AddRange(NAnt.NUnit1.Types.NUnitTest[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.AddRange(NAnt.NUnit1.Types.NUnitTestCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.Contains(NAnt.NUnit1.Types.NUnitTest)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.CopyTo(NAnt.NUnit1.Types.NUnitTest[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.IndexOf(NAnt.NUnit1.Types.NUnitTest)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.NUnit1.Types.NUnitTest"/>. If the <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.Insert(System.Int32,NAnt.NUnit1.Types.NUnitTest)">
+ <summary>
+ Inserts a <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.NUnit1.Types.NUnitTestEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestCollection.Remove(NAnt.NUnit1.Types.NUnitTest)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTestCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.NUnitTestEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.NUnit1.Types.NUnitTest"/> elements of a <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestEnumerator.#ctor(NAnt.NUnit1.Types.NUnitTestCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.NUnitTestEnumerator"/> class
+ with the specified <see cref="T:NAnt.NUnit1.Types.NUnitTestCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.NUnitTestEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.NUnitTestEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.NUnitTestData">
+ <summary>
+ Carries data specified through the test element.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Tasks.NUnitTestRunner.NeedsRunning">
+ <summary>
+ Determines if the unit test needs running.
+ </summary>
+ <returns>
+ <see langword="true" /> if unit test needs running, otherwise,
+ <see langword="false" />.
+ </returns>
+ <remarks>
+ <para>
+ Determines if the test needs running by looking at the date stamp
+ of the test assembly and the test results log.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.NUnit1.Tasks.NUnitTestRunner.Run(System.String,System.Boolean)">
+ <summary>
+ Runs a Suite extracted from a TestCase subclass.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Tasks.NUnitTestRunner.CreateFormatters(NAnt.NUnit1.Types.NUnitTestData,System.String,System.Boolean)">
+ <summary>
+ Creates the formatters to be used when running this test.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Tasks.NUnitTestRunner.GetOutput(NAnt.NUnit.Types.FormatterData,NAnt.NUnit1.Types.NUnitTestData)">
+ <summary>
+ Returns the output file or null if does not use a file.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Tasks.NUnitTestRunner.GetSuite(System.String)">
+ <summary>
+ Returns the test suite from a given class.
+ </summary>
+ <remarks>
+ The assemblyQualifiedName parameter needs to be in form:
+ "full.qualified.class.name,Assembly"
+ </remarks>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTestRunner.Formatters">
+ <summary>
+ Gets the collection of registered formatters.
+ </summary>
+ <value>Collection of registered formatters.</value>
+ </member>
+ <member name="P:NAnt.NUnit1.Tasks.NUnitTestRunner.ResultCode">
+ <summary>
+ Gets the result of the test.
+ </summary>
+ <value>The result of the test.</value>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.PlainTextFormatter">
+ <summary>
+ Prints information about running tests in plain text.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.PlainTextFormatter.SetOutput(System.IO.TextWriter)">
+ <summary>Sets the Writer the formatter is supposed to write its results to.</summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.PlainTextFormatter.StartTestSuite(NAnt.NUnit1.Types.NUnitTestData)">
+ <summary>Called when the whole test suite has started.</summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.PlainTextFormatter.EndTestSuite(NAnt.NUnit1.Types.TestResultExtra)">
+ <summary>Called when the whole test suite has ended.</summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.PlainTextFormatter.FormatError(System.String,System.String)">
+ <summary>Convert a stack trace line into something that can be clicked on in an IDE output window.</summary>
+ <param name="trace">The StackTrace string, see <see cref="P:System.Exception.StackTrace"/>.</param>
+ <param name="message">The string that gets appended to the end of file(line): portion.</param>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.TestResultExtra">
+ <summary>
+ Decorates NUnits <see cref="T:NUnit.Framework.TestResult"/> with extra information such as
+ run-time.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.TestResultExtra.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.TestResultExtra"/>
+ class.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit1.Types.TestResultExtra.RunTime">
+ <summary>
+ Gets or sets the total run-time of a test.
+ </summary>
+ <value>The total run-time of a test.</value>
+ </member>
+ <member name="T:NAnt.NUnit1.Types.XmlResultFormatter">
+ <summary>
+ Prints detailed information about running tests in XML format.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.XmlResultFormatter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit1.Types.XmlResultFormatter"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.XmlResultFormatter.SetOutput(System.IO.TextWriter)">
+ <summary>
+ Sets the <see cref="T:System.IO.TextWriter"/> the formatter is supposed to
+ write its results to.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.XmlResultFormatter.StartTestSuite(NAnt.NUnit1.Types.NUnitTestData)">
+ <summary>
+ Called when the whole test suite has started.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit1.Types.XmlResultFormatter.EndTestSuite(NAnt.NUnit1.Types.TestResultExtra)">
+ <summary>
+ Called when the whole test suite has ended.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.dll
new file mode 100755
index 0000000..657180c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.xml
new file mode 100755
index 0000000..83ba73a
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.NUnit2Tasks.xml
@@ -0,0 +1,516 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.NUnit2Tasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.NUnit2.Types.Categories">
+ <summary>
+ Controls the categories of tests to execute using the <see cref="T:NAnt.NUnit2.Tasks.NUnit2Task"/>.
+ </summary>
+ <example>
+ <para>
+ Only include test cases and fixtures that require no internet access.
+ </para>
+ <code>
+ <![CDATA[
+ <categories>
+ <include name="NoInternetAccess" />
+ </categories>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Exclude test cases and fixtures that are known to fail.
+ </para>
+ <code>
+ <![CDATA[
+ <categories>
+ <exclude name="NotWorking" />
+ </categories>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.Categories.Includes">
+ <summary>
+ Specifies a list of categories to include.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.Categories.Excludes">
+ <summary>
+ Specifies a list of categories to exclude.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit2.Types.Category">
+ <summary>
+ Represents a certain group of test cases or fixtures.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.Category.CategoryName">
+ <summary>
+ A name of a category, or comma-separated list of names.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.Category.IfDefined">
+ <summary>
+ If <see langword="true" /> then the category will be processed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.Category.UnlessDefined">
+ <summary>
+ If <see langword="true" /> then the category will be skipped;
+ otherwise, processed. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit2.Types.CategoryCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.NUnit2.Types.Category"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.CategoryCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.CategoryCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.CategoryCollection.#ctor(System.Collections.Generic.IList{NAnt.NUnit2.Types.Category})">
+ <summary>
+ Initializes a new instance of the
+ <see cref="T:NAnt.NUnit2.Types.CategoryCollection"/> class as a wrapper for
+ the specified list.
+ </summary>
+ <param name="value">
+ The list that is wrapped by the newly created instance.
+ </param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.CategoryCollection.#ctor(NAnt.NUnit2.Types.CategoryCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.CategoryCollection"/> class
+ with the specified <see cref="T:NAnt.NUnit2.Types.CategoryCollection"/> instance.
+ </summary>
+ <param name="value">
+ The collection to use to initialize the new instance with.
+ </param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.CategoryCollection.#ctor(NAnt.NUnit2.Types.Category[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.CategoryCollection"/> class
+ with the specified array of <see cref="T:NAnt.NUnit2.Types.Category"/> instances.
+ </summary>
+ <param name="value">
+ The collection to use to initialize the new instance with.
+ </param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.CategoryCollection.ToString">
+ <summary>
+ Returns a comma-delimited list of categories.
+ </summary>
+ <returns>
+ A comma-delimited list of categories, or an empty
+ <see cref="T:System.String"/> if there are no categories.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.CategoryCollection.AddRange(System.Collections.Generic.IEnumerable{NAnt.NUnit2.Types.Category})">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit2.Types.Category"/> array to the end of the
+ collection.
+ </summary>
+ <param name="items">
+ The array of <see cref="T:NAnt.NUnit2.Types.Category"/> elements to be added to the end of
+ the collection.
+ </param>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.CategoryCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.NUnit2.Types.Category"/> with the specified name.
+ </summary>
+ <param name="value">The name of the <see cref="T:NAnt.NUnit2.Types.Category"/> to get.</param>
+ </member>
+ <member name="T:NAnt.NUnit2.Tasks.NUnit2Task">
+ <summary>
+ Runs tests using the NUnit V2.6 framework.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:NAnt.NUnit2.Tasks.NUnit2Task.HaltOnFailure"/> attribute is only useful when more
+ than one test suite is used, and you want to continue running other
+ test suites although a test failed.
+ </para>
+ <para>
+ Set <see cref="P:NAnt.Core.Task.FailOnError"/> to <see langword="false"/> to
+ ignore any errors and continue the build.
+ </para>
+ <para>
+ In order to run a test assembly built with NUnit 2.0 or 2.1 using
+ <see cref="T:NAnt.NUnit2.Tasks.NUnit2Task"/>, you must add the following node to your
+ test config file :
+ </para>
+ <code>
+ <![CDATA[
+ <configuration>
+ ...
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="Neutral" />
+ <bindingRedirect oldVersion="2.0.6.0" newVersion="2.2.8.0" />
+ <bindingRedirect oldVersion="2.1.4.0" newVersion="2.2.8.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+ ...
+ </configuration>
+ ]]>
+ </code>
+ <para>
+ See the <see href="http://nunit.sf.net">NUnit home page</see> for more
+ information.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Run tests in the <c>MyProject.Tests.dll</c> assembly.
+ </para>
+ <code>
+ <![CDATA[
+ <nunit2>
+ <formatter type="Plain" />
+ <test assemblyname="MyProject.Tests.dll" appconfig="MyProject.Tests.dll.config" />
+ </nunit2>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Only run tests that are not known to fail in files listed in the <c>tests.txt</c>
+ file.
+ </para>
+ <code>
+ <![CDATA[
+ <nunit2>
+ <formatter type="Xml" usefile="true" extension=".xml" outputdir="${build.dir}/results" />
+ <test>
+ <assemblies>
+ <includesfile name="tests.txt" />
+ </assemblies>
+ <categories>
+ <exclude name="NotWorking" />
+ </categories>
+ <references basedir="build">
+ <include name="Cegeka.Income.Services.dll" />
+ <include name="Cegeka.Util.dll" />
+ </references>
+ </test>
+ </nunit2>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2Task.ExecuteTask">
+ <summary>
+ Runs the tests and sets up the formatters.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2Task.GetListener(NAnt.Core.LogWriter)">
+ <summary>
+ Gets a new EventListener to use for the unit tests.
+ </summary>
+ <returns>
+ A new EventListener created with a new EventCollector that
+ is initialized with <paramref name="logWriter"/>.
+ </returns>
+ <param name='logWriter'>
+ Log writer to send test output to.
+ </param>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2Task.GetLoggingThreshold">
+ <summary>
+ Gets the logging threshold to use for a test runner based on
+ the current threshold of this task.
+ </summary>
+ <returns>
+ The logging threshold to use when running a test runner.
+ </returns>
+ </member>
+ <member name="P:NAnt.NUnit2.Tasks.NUnit2Task.HaltOnFailure">
+ <summary>
+ Stop the test run if a test fails. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Tasks.NUnit2Task.Labels">
+ <summary>
+ Indicate whether or not to label the text output as the tests run.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Tasks.NUnit2Task.Tests">
+ <summary>
+ Tests to run.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Tasks.NUnit2Task.FormatterElements">
+ <summary>
+ Formatters to output results of unit tests.
+ </summary>
+ </member>
+ <member name="T:NAnt.NUnit2.Types.NUnit2Test">
+ <summary>
+ Represents a <c>test</c> element of an <see cref="T:NAnt.NUnit2.Tasks.NUnit2Task"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.AssemblyFile">
+ <summary>
+ Name of the assembly to search for tests.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.TestName">
+ <summary>
+ Name of a specific testfixture to run. If not specified then all
+ testfixtures are run.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.Assemblies">
+ <summary>
+ Assemblies to include in test.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.References">
+ <summary>
+ Assemblies to scan for missing assembly references.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.Categories">
+ <summary>
+ Categories of test cases to include or exclude.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.HaltOnFailure">
+ <summary>
+ Build fails on failure. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.XsltFile">
+ <summary>
+ XSLT transform file to use when using the <see cref="F:NAnt.NUnit.Types.FormatterType.Plain"/>
+ formatter.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.AppConfigFile">
+ <summary>
+ The application configuration file to use for the NUnit test domain.
+ If not specified, NAnt will try to use a configuration name matching
+ the file name of the assembly with extension ".config".
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2Test.TestAssemblies">
+ <summary>
+ Gets all assemblies specified for these tests.
+ </summary>
+ <returns>
+ All assemblies specified for these tests.
+ </returns>
+ </member>
+ <member name="T:NAnt.NUnit2.Types.NUnit2TestCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.#ctor(NAnt.NUnit2.Types.NUnit2TestCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/> class
+ with the specified <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.#ctor(NAnt.NUnit2.Types.NUnit2Test[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/> class
+ with the specified array of <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.Add(NAnt.NUnit2.Types.NUnit2Test)">
+ <summary>
+ Adds a <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.AddRange(NAnt.NUnit2.Types.NUnit2Test[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.AddRange(NAnt.NUnit2.Types.NUnit2TestCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.Contains(NAnt.NUnit2.Types.NUnit2Test)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.CopyTo(NAnt.NUnit2.Types.NUnit2Test[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.IndexOf(NAnt.NUnit2.Types.NUnit2Test)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/>. If the <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.Insert(System.Int32,NAnt.NUnit2.Types.NUnit2Test)">
+ <summary>
+ Inserts a <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.NUnit2.Types.NUnit2TestEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestCollection.Remove(NAnt.NUnit2.Types.NUnit2Test)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2TestCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.NUnit2.Types.NUnit2TestEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.NUnit2.Types.NUnit2Test"/> elements of a <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestEnumerator.#ctor(NAnt.NUnit2.Types.NUnit2TestCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Types.NUnit2TestEnumerator"/> class
+ with the specified <see cref="T:NAnt.NUnit2.Types.NUnit2TestCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Types.NUnit2TestEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.NUnit2.Types.NUnit2TestEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.NUnit2.Tasks.NUnit2TestDomain">
+ <summary>
+ Custom TestDomain, similar to the one included with NUnit, in order
+ to workaround some limitations in it.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2TestDomain.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.NUnit2.Tasks.NUnit2TestDomain"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2TestDomain.CreateRunner(System.IO.FileInfo,System.IO.FileInfo,System.Collections.Specialized.StringCollection)">
+ <summary>
+ Runs a single testcase.
+ </summary>
+ <param name="assemblyFile">The test assembly.</param>
+ <param name="configFile">The application configuration file for the test domain.</param>
+ <param name="referenceAssemblies">List of files to scan for missing assembly references.</param>
+ <returns>
+ The result of the test.
+ </returns>
+ </member>
+ <member name="T:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler">
+ <summary>
+ Helper class called when an assembly resolve event is raised.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler.#ctor(System.String[],System.String[])">
+ <summary>
+ Initializes an instanse of the <see cref="T:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler.ResolveAssembly(System.Object,System.ResolveEventArgs)">
+ <summary>
+ Called back when the CLR cannot resolve a given assembly.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="args">A <see cref="T:System.ResolveEventArgs"/> that contains the event data.</param>
+ <returns>
+ The <c>nunit.framework</c> we know to be in NAnts bin directory, if
+ that is the assembly that needs to be resolved; otherwise,
+ <see langword="null"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler.AssemblyLoad(System.Object,System.AssemblyLoadEventArgs)">
+ <summary>
+ Occurs when an assembly is loaded. The loaded assembly is added
+ to the assembly cache.
+ </summary>
+ <param name="sender">The source of the event.</param>
+ <param name="args">An <see cref="T:System.AssemblyLoadEventArgs"/> that contains the event data.</param>
+ </member>
+ <member name="F:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler._probePaths">
+ <summary>
+ Holds the list of directories that will be scanned for missing
+ assembly references.
+ </summary>
+ </member>
+ <member name="F:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler._referenceAssemblies">
+ <summary>
+ Holds the list of assemblies that can be scanned for missing
+ assembly references.
+ </summary>
+ </member>
+ <member name="F:NAnt.NUnit2.Tasks.NUnit2TestDomain.AssemblyResolveHandler._assemblyCache">
+ <summary>
+ Holds the loaded assemblies.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.dll
new file mode 100755
index 0000000..82e44da
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.xml
new file mode 100755
index 0000000..70d9cfb
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.SourceControlTasks.xml
@@ -0,0 +1,1289 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.SourceControlTasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.SourceControl.Tasks.AbstractCvsTask">
+ <summary>
+ A base class for creating tasks for executing CVS client commands on a
+ CVS repository.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.AbstractSourceControlTask">
+ <summary>
+ A base class for creating tasks for executing CVS client commands on a
+ CVS repository.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractSourceControlTask.EnvHome">
+ <summary>
+ Name of the environmental variable specifying a users' home
+ in a *nix environment.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractSourceControlTask.AppData">
+ <summary>
+ Used on windows to specify the location of application data.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractSourceControlTask.PathVariable">
+ <summary>
+ The environment variable that holds path information.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractSourceControlTask.CvsPassFileVariable">
+ <summary>
+ The environment variable that holds the location of the
+ .cvspass file.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractSourceControlTask.PropExeName">
+ <summary>
+ Property name used to specify the source control executable. This is
+ used as a readonly property.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.SourceControl.Tasks.AbstractCvsTask"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.PrepareProcess(System.Diagnostics.Process)">
+ <summary>
+ Build up the command line arguments, determine which executable is being
+ used and find the path to that executable and set the working
+ directory.
+ </summary>
+ <param name="process">The process to prepare.</param>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.SetGlobalOption(System.String,System.String,System.Boolean)">
+ <summary>
+ Adds a new global option if none exists. If one does exist then
+ the use switch is toggled on or of.
+ </summary>
+ <param name="name">The common name of the option.</param>
+ <param name="value">The option value or command line switch
+ of the option.</param>
+ <param name="on"><code>true</code> if the option should be
+ appended to the commandline, otherwise <code>false</code>.</param>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.SetCommandOption(System.String,System.String,System.Boolean)">
+ <summary>
+ Adds a new command option if none exists. If one does exist then
+ the use switch is toggled on or of.
+ </summary>
+ <param name="name">The common name of the option.</param>
+ <param name="value">The option value or command line switch
+ of the option.</param>
+ <param name="on"><code>true</code> if the option should be
+ appended to the commandline, otherwise <code>false</code>.</param>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.SetEnvironment(System.Diagnostics.Process)">
+ <summary>
+ Set up the environment variables for a process.
+ </summary>
+ <param name="process">A process to setup.</param>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.AppendFiles">
+ <summary>
+ Append the files specified in the fileset to the command line argument.
+ Files are changed to use a relative path from the working directory
+ that the task is spawned in.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractSourceControlTask.DeriveVcsFromEnvironment">
+ <summary>
+ Derive the location of the version control system from the environment
+ variable <code>PATH</code>.
+ </summary>
+ <returns>The file information of the version control system,
+ or <code>null</code> if this cannot be found.</returns>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.PassFileName">
+ <summary>
+ The name of the passfile, overriden for each version control system (VCS).
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.VcsHome">
+ <summary>
+ The path to the specific home directory of the version control system,
+ this can be where the binary files are kept, or other app
+ information.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.VcsHomeEnv">
+ <summary>
+ The environment variable that defines where the version control system
+ (VCS) home variable is kept.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.VcsExeName">
+ <summary>
+ The name of the version control system (VCS) executable file.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.Root">
+ <summary>
+ <para>
+ The root variable contains information on how to locate a repository.
+ Although this information is in different formats it typically must
+ define the following:
+ <list type="table">
+ <item>server location</item>
+ <item>protocol used to communicate with the repository</item>
+ <item>repository location on the server</item>
+ <item>project location in the repository</item>
+ </list>
+ </para>
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.DestinationDirectory">
+ <summary>
+ Destination directory for the local sandbox. If destination is not specified
+ then the current directory is used.
+ </summary>
+ <value>
+ Root path of the local sandbox.
+ </value>
+ <remarks>
+ <para>
+ Root path of the local sandbox.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.Password">
+ <summary>
+ The password for logging in to the repository.
+ </summary>
+ <value>
+ The password for logging in to the repository.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.PassFile">
+ <summary>
+ The full path to the cached password file. If not specified then the
+ environment variables are used to try and locate the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.GlobalOptions">
+ <summary>
+ Holds a collection of globally available options.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.CommandOptions">
+ <summary>
+ A collection of options that can be used to modify the default behavoir
+ of the version control commands. See the sub-tasks for implementation
+ specifics.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.CommandLineArguments">
+ <summary>
+ Command-line arguments for the program. The command line arguments are used to specify
+ any cvs command options that are not available as attributes. These are appended
+ after the command itself and are additive to whatever attributes are currently specified.
+ </summary>
+ <example>
+ &lt;cvs-checkout cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant"
+ destination="e:\test\merillcornish\working"
+ readonly="true"
+ quiet="true"
+ commandline="-n"
+ cvsfullpath="C:\Program Files\TortoiseCVS\cvs.exe"
+ /&gt;
+ <br />
+ Produces the cvs command:
+ <code>c:\Program Files\TortoiseCVS\cvs.exe -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant -q checkout -n nant</code>
+ </example>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.CommandName">
+ <summary>
+ The name of the command that is going to be executed.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.VcsFileSet">
+ <summary>
+ Used to specify the version control system (VCS) files that are going
+ to be acted on.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.Ssh">
+ <summary>
+ The executable to use for ssh communication.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.SshEnv">
+ <summary>
+ The environment name for the ssh variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.ExeName">
+ <summary>
+ The name of the version control system executable.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.ProgramArguments">
+ <summary>
+ Get the command line arguments for the task.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.DefaultRecursive">
+ <summary>
+ Default value for the recursive directive. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.DefaultQuiet">
+ <summary>
+ Default value for the quiet command.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.DefaultReallyQuiet">
+ <summary>
+ Default value for the really quiet command.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.CvsHome">
+ <summary>
+ An environment variable that holds path information about where
+ cvs is located.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.CvsPassfile">
+ <summary>
+ Name of the password file that cvs stores pserver
+ cvsroot/ password pairings.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.DefaultCompressionLevel">
+ <summary>
+ The default compression level to use for cvs commands.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.DefaultUseSharpCvsLib">
+ <summary>
+ The default use of binaries, defaults to use sharpcvs.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.CvsExe">
+ <summary>
+ The name of the cvs executable.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.SharpCvsExe">
+ <summary>
+ The temporary name of the sharpcvslib binary file, to avoid
+ conflicts in the path variable.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.CvsRsh">
+ <summary>
+ Environment variable that holds the executable name that is used for
+ ssh communication.
+ </summary>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.AbstractCvsTask.UseSharpCvsLibProp">
+ <summary>
+ Property name used to specify on a project level whether sharpcvs is
+ used or not.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractCvsTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.SourceControl.Tasks.AbstractCvsTask"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractCvsTask.ToCvsDateTimeString(System.DateTime)">
+ <summary>
+ Converts a date value to a string representation that can be
+ interpreted by cvs.
+ </summary>
+ <param name="item">Date to convert.</param>
+ <returns>
+ String interpretation of <paramref name="item"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractCvsTask.PrepareProcess(System.Diagnostics.Process)">
+ <summary>
+ Build up the command line arguments, determine which executable is being
+ used and find the path to that executable and set the working
+ directory.
+ </summary>
+ <param name="process">The process to prepare.</param>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractCvsTask.AppendSubCommandArgs">
+ <summary>
+ Override to append any commands before the modele and files.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractCvsTask.AppendCommandOptions">
+ <summary>
+ Append the command line options or commen names for the options
+ to the generic options collection. This is then piped to the
+ command line as a switch.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.AbstractCvsTask.AddArg(System.String)">
+ <summary>
+ Add the given argument to the command line options. Note that are not explicitly
+ quoted are split into seperate arguments. This is to resolve a recent issue
+ with quoting command line arguments.
+ </summary>
+ <param name="arg"></param>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.SshEnv">
+ <summary>
+ The environment name for the ssh variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.VcsExeName">
+ <summary>
+ The name of the cvs binary, or <c>cvs.exe</c> at the time this
+ was written.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.PassFileName">
+ <summary>
+ The name of the pass file, or <c>.cvspass</c> at the time
+ of this writing.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.VcsHomeEnv">
+ <summary>
+ The name of the version control system specific home environment
+ variable.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.IsModuleNeeded">
+ <summary>
+ Specify if the module is needed for this cvs command. It is
+ only needed if there is no module information on the local file
+ system.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.CvsFileSet">
+ <summary>
+ Used to specify the version control system (VCS) files that are going
+ to be acted on.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.VcsFileSet">
+ <summary>
+ Get the cvs file set.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.ExeName">
+ <summary>
+ The name of the cvs executable.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.CvsFullPath">
+ <summary>
+ The full path to the cvs binary used. The cvs tasks will attempt to
+ "guess" the location of your cvs binary based on your path. If the
+ task is unable to resolve the location, or resolves it incorrectly
+ this can be used to manually specify the path.
+ </summary>
+ <value>
+ A full path (i.e. including file name) of your cvs binary:
+ On Windows: c:\vcs\cvs\cvs.exe
+ On *nix: /usr/bin/cvs
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.Root">
+ <summary>
+ <para>
+ The cvs root variable has the following components:
+ </para>
+ <para>
+ <code>[protocol]:[username]@[servername]:[server path]</code>
+ <ul>
+ <li>protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.</li>
+ <li>username: [username]</li>
+ <li>servername: cvs.sourceforge.net</li>
+ <li>server path: /cvsroot/nant</li>
+ </ul>
+ </para>
+ </summary>
+ <example>
+ <para>NAnt anonymous cvsroot:</para>
+ <code>
+ :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.Module">
+ <summary>
+ The module to perform an operation on.
+ </summary>
+ <value>
+ The module to perform an operation on. This is a normal file/folder
+ name without path information.
+ </value>
+ <example>
+ <para>In NAnt the module name would be:</para>
+ <code>nant</code>
+ </example>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.UseSharpCvsLib">
+ <summary>
+ <para>
+ <see langword="true" /> if the SharpCvsLib binaries that come bundled
+ with NAnt should be used to perform the cvs commands, <see langword="false" />
+ otherwise.
+ </para>
+ <para>
+ You may also specify an override value for all cvs tasks instead
+ of specifying a value for each. To do this set the property
+ <c>sourcecontrol.usesharpcvslib</c> to <see langword="false" />.
+ </para>
+ <warn>
+ If you choose not to use SharpCvsLib to checkout from cvs you will
+ need to include a cvs.exe binary in your path.
+ </warn>
+ </summary>
+ <example>
+ To use a cvs client in your path instead of sharpcvslib specify
+ the property:
+ &gt;property name="sourcecontrol.usesharpcvslib" value="false"&lt;
+
+ The default settings is to use sharpcvslib and the setting closest
+ to the task execution is used to determine which value is used
+ to execute the process.
+
+ For instance if the attribute usesharpcvslib was set to false
+ and the global property was set to true, the usesharpcvslib is
+ closes to the point of execution and would be used and is false.
+ Therefore the sharpcvslib binary would NOT be used.
+ </example>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.Ssh">
+ <summary>
+ The executable to use for ssh communication.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.Quiet">
+ <summary>
+ Indicates if the output from the cvs command should be supressed.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.ReallyQuiet">
+ <summary>
+ Indicates if the output from the cvs command should be stopped.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.ReadOnly">
+ <summary>
+ <see langword="true" /> if the sandbox files should be checked out in
+ read only mode. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.ReadWrite">
+ <summary>
+ <see langword="true" /> if the sandbox files should be checked out in
+ read/write mode. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.AbstractCvsTask.CompressionLevel">
+ <summary>
+ Compression level to use for all net traffic. This should be a value from 1-9.
+ <br />
+ <br />
+ <bold>NOTE: This is not available on sharpcvslib.</bold>
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.ChangeLogTask">
+ <summary>
+ Produces an XML report that represents the cvs changes from the given
+ start day, to a given end date.
+ </summary>
+ <example>
+ <para>Report changes in NAnt from 1st of June 2004 until 25th of July 2004.</para>
+ <code>
+ <![CDATA[
+ <cvs-changelog
+ destination="e:/test/nant/sourcecontrol/"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant"
+ start="2004/06/01"
+ end="2004/07/25"
+ xmlfile="e:/test/nant/sourcecontrol/changelog-nant.xml"
+ />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.ChangeLogTask.CvsCommandName">
+ <summary>
+ The command being executed.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ChangeLogTask.DestFile">
+ <summary>
+ Name of the xml file that will contain the cvs log information.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ChangeLogTask.StartDate">
+ <summary>
+ The earliest change to use in the cvs log command.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ChangeLogTask.EndDate">
+ <summary>
+ The latest date to use in the cvs log command.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ChangeLogTask.CommandName">
+ <summary>
+ The cvs command to execute.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ChangeLogTask.UseSharpCvsLib">
+ <summary>
+ Override use of sharpcvslib, needs to be true.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ChangeLogTask.Root">
+ <summary>
+ <para>
+ The cvs root variable has the following components:
+ </para>
+ <para>
+ <code>[protocol]:[username]@[servername]:[server path]</code>
+ <ul>
+ <li>protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.</li>
+ <li>username: [username]</li>
+ <li>servername: cvs.sourceforge.net</li>
+ <li>server path: /cvsroot/nant</li>
+ </ul>
+ </para>
+ <para>
+ If the cvsroot is not specified then the directory specified by the
+ <see cref="P:NAnt.SourceControl.Tasks.AbstractSourceControlTask.DestinationDirectory"/> attribute
+ is searched for CVS\Root.
+ </para>
+ </summary>
+ <example>
+ <para>NAnt anonymous cvsroot:</para>
+ <code>
+ :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant
+ </code>
+ </example>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.CheckoutTask">
+ <summary>
+ Checks out a CVS module to the required directory.
+ </summary>
+ <example>
+ <para>Checkout NAnt.</para>
+ <code>
+ <![CDATA[
+ <cvs-checkout
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Checkout NAnt revision named <c>0_85</c> to the
+ folder <c>c:\src\nant\v0.85</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <cvs-checkout
+ destination="c:\src\nant"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant"
+ revision="0_85"
+ overridedir="v0.85" />
+ ]]>
+ </code>
+ <para>So the nant module tagged with revision 0_85 will be checked
+ out in the folder v0.85 under the working/ destination directory.
+ <br/>This could be used to work on different
+ branches of a repository at the same time.</para>
+ </example>
+ <example>
+ <para>
+ Checkout NAnt with specified revision date to the
+ folder <c>c:\src\nant\2003_08_16</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <cvs-checkout
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant"
+ date="2003/08/16"
+ overridedir="2003_08_16" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.CheckoutTask.CvsCommandName">
+ <summary>
+ The command being executed.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.CheckoutTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.SourceControl.Tasks.CheckoutTask"/> class.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CheckoutTask.Revision">
+ <summary>
+ Specify the revision to checkout. This corresponds to the "sticky-tag"
+ of the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CheckoutTask.StickyTag">
+ <summary>
+ Sticky tag or revision to checkout.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CheckoutTask.Date">
+ <summary>
+ Specify the revision date to checkout. The date specified is validated
+ and then passed to the cvs binary in a standard format recognized by
+ cvs.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CheckoutTask.OverrideDir">
+ <summary>
+ Specify a directory name to replace the module name. Valid names
+ include any valid filename, excluding path information.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CheckoutTask.OverrideDirectory">
+ <summary>
+ Specify a directory name to replace the module name. Valid names
+ include any valid filename, excluding path information.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CheckoutTask.CommandName">
+ <summary>
+ The name of the cvs command that is going to be executed.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.CvsPass">
+ <summary>
+ Executes the cvs login command which appends or updates an entry to the
+ specified .cvspass file.
+ </summary>
+ <example>
+ <para>Update .cvspass file to include the NAnt anonymous login.</para>
+ <code>
+ <![CDATA[
+ <cvs-pass cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ password="anonymous"
+ passfile="C:\.cvspass" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.CvsPass.Initialize">
+ <summary>
+ Ensures all information is available to execute the <see cref="T:NAnt.Core.Task"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.CvsPass.ExecuteTask">
+ <summary>
+ Update the .cvspass file with the given password. If the passfile
+ is not specified then the default search locations are used:
+ <list type="list">
+ <item>CVS_PASSFILE/.cvspass</item>
+ <item>HOME/.cvspass</item>
+ <item>USERPROFILE/.cvspass TODO: Confirm that this is valid
+ behavior or if it is going to give problems with the
+ cvsnt implementation.</item>
+ </list>
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CvsPass.Password">
+ <summary>
+ Password to append or update to the .cvspass file.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CvsPass.PassFile">
+ <summary>
+ The full path to the .cvspass file. The default is ~/.cvspass.
+ </summary>
+ <value></value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CvsPass.DestinationDirectory">
+ <summary>
+ The current working directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CvsPass.Root">
+ <summary>
+ The repository root string.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.CvsTask">
+ <summary>
+ Executes the cvs command specified by the command attribute.
+ </summary>
+ <example>
+ <para>Checkout NAnt.</para>
+ <code>
+ <![CDATA[
+ <cvs command="checkout"
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CvsTask.CommandName">
+ <summary>
+ The cvs command to execute.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.CvsTask.IsModuleNeeded">
+ <summary>
+ Specify if the module is needed for this cvs command.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.ExportTask">
+ <summary>
+ Exports a cvs module in preperation for a release (i.e. the CVS version
+ folders are not exported).
+ </summary>
+ <example>
+ <para>Export the most recent NAnt sources from cvs.</para>
+ <code>
+ <![CDATA[
+ <cvs-export
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Export NAnt revision named <c>your_favorite_revision_here</c> to the
+ folder <c>c:\src\nant\replacement_for_module_directory_name</c>.
+
+ <warn>**NOTE**</warn>: filesets names for the export task must be
+ prefixed with the module name. This is different than other tasks.
+ </para>
+ <code>
+ <![CDATA[
+ <cvs-export
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant"
+ revision="your_favorite_revision_here"
+ overridedir="replacement_for_module_directory_name"
+ recursive="false">
+ <fileset>
+ <include name="nant/bin/NAnt.exe"/>
+ <include name="nant/bin/NAnt.exe.config"/>
+ </fileset>
+ </cvs-export>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.ExportTask.CvsCommandName">
+ <summary>
+ The command being executed.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.ExportTask.#ctor">
+ <summary>
+ Create a new instance of the <see cref="T:NAnt.SourceControl.Tasks.ExportTask"/>.
+ </summary>
+ <value>
+ The following values are set by default:
+ <ul>
+ <li>Recursive: <see langword="true"/></li>
+ </ul>
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.NoShortening">
+ <summary>
+ No shortening. Do not shorten module paths if -d specified.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.ForceHead">
+ <summary>
+ Indicates whether the head revision should be used if the revison specified by
+ <see cref="P:NAnt.SourceControl.Tasks.ExportTask.Revision"/> or the <see cref="P:NAnt.SourceControl.Tasks.ExportTask.Date"/> tags are not
+ found. The default is <see langword="false"/>.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be moved;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.Recursive">
+ <summary>
+ If a directory is specified indicates whether sub-directories should
+ also be processed.
+ </summary>
+ <value>
+ <see langword="true" /> if the sub-directories should be tagged;
+ otherwise, <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.Revision">
+ <summary>
+ Specify the revision to update the file to. This corresponds to the "sticky-tag"
+ of the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.Date">
+ <summary>
+ Specify the revision date to update to. The version of the file that
+ existed at the date specified is retrieved.
+ </summary>
+ <value>
+ A valid date time value, which is then converted to a format that
+ cvs can parse.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.OverrideDir">
+ <summary>
+ Specify a directory name to replace the module name. Valid names
+ include any valid filename, excluding path information.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.ExportTask.CommandName">
+ <summary>
+ The export command name for the cvs client.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.RTagTask">
+ <summary>
+ Tags all sources in the remote repository with a given tag.
+ </summary>
+ <remarks>
+ <para>
+ Unlike tag, the rtag command acts only on sources that are in the repository.
+ Any modified sources on the local file system will NOT be tagged with this
+ command, so a commit should be performed before an rtag is done.
+ </para>
+ <para>
+ NOTE: Although a working directory is not necessary to perform the command
+ one must be specified in order to remain in compliance with the cvs library.
+ </para>
+ </remarks>
+ <example>
+ <para>Tag NAnt sources remotely.</para>
+ <code>
+ <![CDATA[
+ <cvs-rtag
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ destination="."
+ tag="v0_8_4"
+ />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Remove a tag from the remote repository.</para>
+ <code>
+ <![CDATA[
+ <cvs-rtag
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ destination="."
+ tag="v0_8_4"
+ remove="true"
+ />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.RTagTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.SourceControl.Tasks.RTagTask"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.RTagTask.AppendSubCommandArgs">
+ <summary>
+ Append the tag information to the commandline.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.Tag">
+ <summary>
+ The name of the tag to assign or remove.
+ </summary>
+ <value>
+ The name of the tag to assign or remove.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.Remove">
+ <summary>
+ Indicates whether the tag specified in <see cref="P:NAnt.SourceControl.Tasks.RTagTask.Tag"/> should
+ be removed or not.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be removed;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.MoveIfExists">
+ <summary>
+ Indicates whether the tag specified in <see cref="P:NAnt.SourceControl.Tasks.RTagTask.Tag"/> should
+ be moved to the current file revision. If the tag does not exist
+ then it is created.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be moved;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.Recursive">
+ <summary>
+ If a directory is specified indicates whether sub-directories should
+ also be processed.
+ </summary>
+ <value>
+ <see langword="true" /> if the sub-directories should be tagged;
+ otherwise, <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.ActOnTag">
+ <summary>
+ Indicates the repository <see cref="P:NAnt.SourceControl.Tasks.RTagTask.Tag"/> that is acted on
+ for the tag command. Note if <see cref="P:NAnt.SourceControl.Tasks.RTagTask.MoveIfExists"/> is
+ <see langword="true"/> then the tag specified is moved to the revision
+ of the file on the HEAD of the branch specified.
+ </summary>
+ <value>
+ The tag (or more likely) branch that should be used to apply the new tag.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.ActOnDate">
+ <summary>
+ Indicates the revision date of the file that the tag should be
+ applied to.
+ </summary>
+ <value>
+ A valid date which specifies the revision point that the tag will
+ be applied to.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.ForceHead">
+ <summary>
+ Indicates whether the head revision should be used if the
+ <see cref="P:NAnt.SourceControl.Tasks.RTagTask.ActOnTag"/> or the <see cref="P:NAnt.SourceControl.Tasks.RTagTask.ActOnDate"/> tags are not
+ found.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be moved;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.RTagTask.CommandName">
+ <summary>
+ The name of the cvs command that is going to be executed.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.TagTask">
+ <summary>
+ Tags all local sources with the specified tag.
+ </summary>
+ <remarks>
+ <para>
+ This differs from the
+ <see cref="T:NAnt.SourceControl.Tasks.RTagTask"/> in that it acts on references to the cvs files
+ contained in your local filesystem. As such the sticky tags and local
+ revisions can be considered in commits. It also allows you to verify that
+ all local files have been checked in before a tag is performed.
+ </para>
+ </remarks>
+ <example>
+ <para>Tag NAnt sources remotely.</para>
+ <code>
+ <![CDATA[
+ <cvs-tag
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ destination="."
+ tag="v0_8_4"
+ />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>Remove a tag from the remote repository.</para>
+ <code>
+ <![CDATA[
+ <cvs-tag
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ destination="."
+ tag="v0_8_4"
+ remove="true"
+ fail-if-modified="true"
+ />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.TagTask.CvsCommandName">
+ <summary>
+ Cvs command to be executed.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.TagTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.SourceControl.Tasks.TagTask"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.TagTask.AppendSubCommandArgs">
+ <summary>
+ Append the tag information to the commandline.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.Tag">
+ <summary>
+ The name of the tag to assign or remove.
+ </summary>
+ <value>
+ The name of the tag to assign or remove.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.Remove">
+ <summary>
+ Indicates whether the tag specified in <see cref="P:NAnt.SourceControl.Tasks.TagTask.Tag"/> should
+ be removed or not.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be removed;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.MoveIfExists">
+ <summary>
+ Indicates whether the tag specified in <see cref="P:NAnt.SourceControl.Tasks.TagTask.Tag"/> should
+ be moved to the current file revision. If the tag does not exist
+ then it is created.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be moved;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.Recursive">
+ <summary>
+ If a directory is specified indicates whether sub-directories should
+ also be processed.
+ </summary>
+ <value>
+ <see langword="true" /> if the sub-directories should be tagged;
+ otherwise, <see langword="false" />. The default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.ActOnTag">
+ <summary>
+ Indicates the repository <see cref="P:NAnt.SourceControl.Tasks.TagTask.Tag"/> that is acted on
+ for the tag command. Note if <see cref="P:NAnt.SourceControl.Tasks.TagTask.MoveIfExists"/> is
+ <see langword="true"/> then the tag specified is moved to the revision
+ of the file on the HEAD of the branch specified.
+ </summary>
+ <value>
+ The tag (or more likely) branch that should be used to apply the new tag.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.ActOnDate">
+ <summary>
+ Indicates the revision date of the file that the tag should be
+ applied to.
+ </summary>
+ <value>
+ A valid date which specifies the revision point that the tag will
+ be applied to.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.ForceHead">
+ <summary>
+ Indicates whether the head revision should be used if the revision specified by
+ <see cref="P:NAnt.SourceControl.Tasks.TagTask.ActOnTag"/> or the <see cref="P:NAnt.SourceControl.Tasks.TagTask.ActOnDate"/> tags are not
+ found.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be moved;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.FailIfModified">
+ <summary>
+ Indicates whether the head revision should be used if the
+ <see cref="P:NAnt.SourceControl.Tasks.TagTask.ActOnTag"/> or the <see cref="P:NAnt.SourceControl.Tasks.TagTask.ActOnDate"/> tags are not
+ found.
+ </summary>
+ <value>
+ <see langword="true"/> if the specified tag should be moved;
+ otherwise, <see langword="false"/>. The default is <see langword="false"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.CommandName">
+ <summary>
+ The name of the cvs command that is going to be executed.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.Module">
+ <summary>
+ Not used
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.TagTask.IsModuleNeeded">
+ <summary>
+ Specify if the module is needed for this cvs command. It is
+ only needed if there is no module information on the local file
+ system.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Tasks.UpdateTask">
+ <summary>
+ Updates a CVS module in a local working directory.
+ </summary>
+ <example>
+ <para>Update nant.</para>
+ <code>
+ <![CDATA[
+ <cvs-update
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ password=""
+ module="nant" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Update your NAnt revision named <c>your_favorite_revision_here</c> in
+ the folder <c>c:\src\nant\replacement_for_module_directory_name</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <cvs-update
+ destination="c:\src\nant\"
+ cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
+ module="nant"
+ revision="your_favorite_revision_here"
+ overridedir="replacement_for_module_directory_name"
+ usesharpcvslib="false">
+ <fileset>
+ <include name="build.number"/>
+ </fileset>
+ </cvs-update>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.SourceControl.Tasks.UpdateTask.CvsCommandName">
+ <summary>
+ The command being executed.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Tasks.UpdateTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.SourceControl.Tasks.UpdateTask"/>
+ class.
+ </summary>
+ <remarks>
+ Sets the build directory and prune empty directory properties to
+ <see langword="true"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.BuildDirs">
+ <summary>
+ If <see langword="true" />. new directories will be created on the local
+ sandbox. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.PruneEmpty">
+ <summary>
+ If <see langword="true" /> empty directories copied down from the
+ remote repository will be removed from the local sandbox.
+ The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.OverwriteLocal">
+ <summary>
+ If <see langword="true" /> the local copy of the file will be
+ overwritten with the copy from the remote repository. The default
+ is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.Recursive">
+ <summary>
+ Specifies if the command should be executed recursively. The
+ default is <see langword="true" />.
+ </summary>
+ <remarks>
+ The <c>-R</c> option is on by default in cvs.
+ </remarks>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.Revision">
+ <summary>
+ Specify the revision to update the file to. This corresponds to the
+ "sticky-tag" of the file.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.StickyTag">
+ <summary>
+ Sticky tag or revision to update the local file to.
+ </summary>
+ <value>
+ A valid cvs tag.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.Date">
+ <summary>
+ Specify the revision date to update to. The version of the file that
+ existed at the date specified is retrieved.
+ </summary>
+ <value>
+ A valid date time value, which is then converted to a format that
+ cvs can parse.
+ </value>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.IsModuleNeeded">
+ <summary>
+ Specify if the module is needed for this cvs command. It is
+ only needed if there is no module information on the local file
+ system.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Tasks.UpdateTask.CommandName">
+ <summary>
+ The name of the cvs command that is going to be executed.
+ </summary>
+ </member>
+ <member name="T:NAnt.SourceControl.Types.CvsFileSet">
+ <summary>
+ A <see cref="T:NAnt.SourceControl.Types.CvsFileSet"/> is a <see cref="T:NAnt.Core.Types.FileSet"/> with extra
+ attributes useful in the context of the <see cref="T:NAnt.SourceControl.Tasks.CvsTask"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.SourceControl.Types.CvsFileSet.Initialize">
+ <summary>
+ Initialize the <see cref="T:NAnt.SourceControl.Types.CvsFileSet"/> object and locate the .cvsignore
+ files to add to the exclude list.
+ </summary>
+ </member>
+ <member name="P:NAnt.SourceControl.Types.CvsFileSet.UseCvsIgnore">
+ <summary>
+ Indicates whether the entires in the .cvsignore should be used to limit the
+ file list; <see langword="true"/> to exclude files in .cvsignore, otherwise
+ <see langword="false"/>. The default is <see langword="true"/>.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.dll
new file mode 100755
index 0000000..37f8c3a
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.xml
new file mode 100755
index 0000000..445d275
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VSNetTasks.xml
@@ -0,0 +1,3986 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.VSNetTasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.VSNet.Everett.Solution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.GetProjectFileFromGuid(System.String)">
+ <summary>
+ Gets the project file of the project with the given unique identifier.
+ </summary>
+ <param name="projectGuid">The unique identifier of the project for which the project file should be retrieves.</param>
+ <returns>
+ The project file of the project with the given unique identifier.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">No project with unique identifier <paramref name="projectGuid"/> could be located.</exception>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.Log(NAnt.Core.Level,System.String)">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to be logged.</param>
+ <remarks>
+ The actual logging is delegated to the underlying task.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <remarks>
+ The actual logging is delegated to the underlying task.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.LoadProjects(NAnt.Core.Util.GacCache,NAnt.VSNet.ReferencesResolver,System.Collections.Hashtable)">
+ <summary>
+ Loads the projects from the file system and stores them in an
+ instance variable.
+ </summary>
+ <param name="gacCache"><see cref="T:NAnt.Core.Util.GacCache"/> instance to use to determine whether an assembly is located in the Global Assembly Cache.</param>
+ <param name="refResolver"><see cref="T:NAnt.VSNet.ReferencesResolver"/> instance to use to determine location and references of assemblies.</param>
+ <param name="explicitProjectDependencies">TODO</param>
+ <exception cref="T:NAnt.Core.BuildException">A project GUID in the solution file does not match the actual GUID of the project in the project file.</exception>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.TranslateProjectPath(System.String,System.String)">
+ <summary>
+ Translates a project path, in the form of a relative file path or
+ a URL, to an absolute file path.
+ </summary>
+ <param name="solutionDir">The directory of the solution.</param>
+ <param name="projectPath">The project path to translate to an absolute file path.</param>
+ <returns>
+ The project path translated to an absolute file path.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.FixProjectReferences(NAnt.VSNet.ProjectBase,NAnt.VSNet.Configuration,System.Collections.Hashtable,System.Collections.Hashtable)">
+ <summary>
+ Converts assembly references to projects to project references, adding
+ a build dependency.c
+ </summary>
+ <param name="project">The <see cref="T:NAnt.VSNet.ProjectBase"/> to analyze.</param>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="builtProjects"><see cref="T:System.Collections.Hashtable"/> containing list of projects that have been built.</param>
+ <param name="failedProjects"><see cref="T:System.Collections.Hashtable"/> containing list of projects that failed to build.</param>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionBase.HasDirtyProjectDependency(NAnt.VSNet.ProjectBase,System.Collections.Hashtable)">
+ <summary>
+ Determines whether any of the project dependencies of the specified
+ project still needs to be built.
+ </summary>
+ <param name="project">The <see cref="T:NAnt.VSNet.ProjectBase"/> to analyze.</param>
+ <param name="builtProjects"><see cref="T:System.Collections.Hashtable"/> containing list of projects that have been built.</param>
+ <returns>
+ <see langword="true"/> if one of the project dependencies has not
+ yet been built; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Extensibility.IProjectBuildProvider.IsSupported(System.String,System.Xml.XmlElement)">
+ <summary>
+ Returns a number representing how much this file fits this project type.
+ </summary>
+ <param name="projectExt"></param>
+ <param name="xmlDefinition"></param>
+ <returns></returns>
+ <remarks>
+ This enables the override in other providers. Do not return big numbers, mainly when compring only on filename.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VSNet.Rainier.Solution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.Tasks.SolutionTask">
+ <summary>
+ Compiles VS.NET solutions (or sets of projects), automatically determining
+ project dependencies from inter-project references.
+ </summary>
+ <remarks>
+ <para>
+ This task support the following projects:
+ </para>
+ <list type="bullet">
+ <item>
+ <description>Visual Basic .NET</description>
+ </item>
+ <item>
+ <description>Visual C# .NET</description>
+ </item>
+ <item>
+ <description>Visual J# .NET</description>
+ </item>
+ <item>
+ <description>Visual C++ .NET</description>
+ </item>
+ </list>
+ <note>
+ Right now, only Microsoft Visual Studio .NET 2002 and 2003 solutions
+ and projects are supported. Support for .NET Compact Framework projects
+ is also not available at this time.
+ </note>
+ <para>
+ The <see cref="T:NAnt.VSNet.Tasks.SolutionTask"/> also supports the model of referencing
+ projects by their output filenames, rather than referencing them inside
+ the solution. It will automatically detect the existance of a file
+ reference and convert it to a project reference. For example, if project
+ "A" references the file in the release output directory of
+ project "B", the <see cref="T:NAnt.VSNet.Tasks.SolutionTask"/> will automatically
+ convert this to a project dependency on project "B" and will
+ reference the appropriate configuration output directory at the final
+ build time (ie: reference the debug version of "B" if the
+ solution is built as debug).
+ </para>
+ <note>
+ The <see cref="T:NAnt.VSNet.Tasks.SolutionTask"/> expects all project files to be valid
+ XML files.
+ </note>
+ <h3>Resx Files</h3>
+ <para>
+ When building a project for a down-level target framework, special care
+ should be given to resx files. Resx files (can) contain references to
+ a specific version of CLR types, and as such are only upward compatible.
+ </para>
+ <para>
+ For example: if you want to be able to build a project both as a .NET 1.0
+ and .NET 1.1 assembly, the resx files should only contain references to
+ .NET 1.0 CLR types. Failure to do this may result in a <see cref="T:System.InvalidCastException"/>
+ failure at runtime on machines with only the .NET Framework 1.0 installed.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Compiles all of the projects in <c>test.sln</c>, in release mode, in
+ the proper order.
+ </para>
+ <code>
+ <![CDATA[
+ <solution configuration="release" solutionfile="test.sln" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compiles all of the projects in <c>projects.txt</c>, in the proper
+ order.
+ </para>
+ <code>
+ <![CDATA[
+ <solution configuration="release">
+ <projects>
+ <includesfile name="projects.txt" />
+ </projects>
+ </solution>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compiles projects A, B and C, using the output of project X as a
+ reference.
+ </para>
+ <code>
+ <![CDATA[
+ <solution configuration="release">
+ <projects>
+ <include name="A\A.csproj" />
+ <include name="B\b.vbproj" />
+ <include name="C\c.csproj" />
+ </projects>
+ <referenceprojects>
+ <include name="X\x.csproj" />
+ </referenceprojects>
+ </solution>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compiles all of the projects in the solution except for project A.
+ </para>
+ <code>
+ <![CDATA[
+ <solution solutionfile="test.sln" configuration="release">
+ <excludeprojects>
+ <include name="A\A.csproj" />
+ </excludeprojects>
+ </solution>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compiles all of the projects in the solution mapping the specific project at
+ http://localhost/A/A.csproj to c:\inetpub\wwwroot\A\A.csproj and any URLs under
+ http://localhost/B/[remainder] to c:\other\B\[remainder]. This allows the build
+ to work without WebDAV.
+ </para>
+ <code>
+ <![CDATA[
+ <solution solutionfile="test.sln" configuration="release">
+ <webmap>
+ <map url="http://localhost/A/A.csproj" path="c:\inetpub\wwwroot\A\A.csproj" />
+ <map url="http://localhost/B" path="c:\other\B" />
+ </webmap>
+ </solution>
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compiles all of the projects in the solution placing compiled outputs
+ in <c>c:\temp</c>.</para>
+ <code>
+ <![CDATA[
+ <solution solutionfile="test.sln" configuration="release" outputdir="c:\temp" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.VSNet.Tasks.SolutionTask._customproperties">
+ <summary>
+ Private var containing custom properties.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Tasks.SolutionTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.Tasks.SolutionTask"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Tasks.SolutionTask.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro or <see langword="null"/> if the macro is not
+ supported.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">The macro cannot be expanded.</exception>
+ </member>
+ <member name="M:NAnt.VSNet.Tasks.SolutionTask.BuildAssemblyFolders">
+ <summary>
+ Builds the list of folders that should be scanned for assembly
+ references.
+ </summary>
+ <returns>
+ The list of folders that should be scanned for assembly references.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.Projects">
+ <summary>
+ The projects to build.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.ReferenceProjects">
+ <summary>
+ The projects to scan, but not build.
+ </summary>
+ <remarks>
+ These projects are used to resolve project references and are
+ generally external to the solution being built. References to
+ these project's output files are converted to use the appropriate
+ solution configuration at build time.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.SolutionFile">
+ <summary>
+ The name of the VS.NET solution file to build.
+ </summary>
+ <remarks>
+ <para>
+ The <see cref="P:NAnt.VSNet.Tasks.SolutionTask.Projects"/> can be used instead to supply a list
+ of Visual Studio.NET projects that should be built.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.Configuration">
+ <summary>
+ The name of the solution configuration to build.
+ </summary>
+ <remarks>
+ <para>
+ Generally <c>release</c> or <c>debug</c>. Not case-sensitive.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.Platform">
+ <summary>
+ The name of platform to build the solution for.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.SolutionConfig">
+ <summary>
+ Gets the solution configuration to build.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.OutputDir">
+ <summary>
+ The directory where compiled targets will be placed. This
+ overrides path settings contained in the solution/project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.WebMaps">
+ <summary>
+ WebMap of URL's to project references.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.ExcludeProjects">
+ <summary>
+ Fileset of projects to exclude.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.AssemblyFolders">
+ <summary>
+ Set of folders where references are searched when not found in path
+ from project file (HintPath).
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.IncludeVSFolders">
+ <summary>
+ Includes Visual Studio search folders in reference search path.
+ The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.EnableWebDav">
+ <summary>
+ Allow the task to use WebDAV for retrieving/compiling the projects within solution. Use of
+ <see cref="T:NAnt.VSNet.Types.WebMap"/> is preferred over WebDAV. The default is <see langword="false"/>.
+ </summary>
+ <remarks>
+ <para>WebDAV support requires permission changes to be made on your project server. These changes may affect
+ the security of the server and should not be applied to a public installation.</para>
+ <para>Consult your web server or the NAnt Wiki documentation for more information.</para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.CustomProperties">
+ <summary>
+ Set of properties set at solution level. Builders for projects in solution may or may not use them.
+ </summary>
+ <remarks>
+ <para>
+ TODO: some documentataion which properties could be defined here.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Tasks.SolutionTask.AssemblyFolderList">
+ <summary>
+ Gets the list of folders to scan for assembly references.
+ </summary>
+ <value>
+ The list of folders to scan for assembly references.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.Types.UseOfATL">
+ <summary>
+ Defines how the project is using the ATL library.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UseOfATL.NotUsing">
+ <summary>
+ Don't use ATL.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UseOfATL.Static">
+ <summary>
+ Use ATL in a Static Library.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UseOfATL.Shared">
+ <summary>
+ Use ATL in a Shared DLL.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.Types.UseOfMFC">
+ <summary>
+ Defines how the project is using the MFC library.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UseOfMFC.NotUsing">
+ <summary>
+ Don't use MFC.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UseOfMFC.Static">
+ <summary>
+ Use MFC in a Static Library.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UseOfMFC.Shared">
+ <summary>
+ Use MFC in a Shared DLL.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.Types.UsePrecompiledHeader">
+ <summary>
+ Indicates the possible ways in which precompiled header file use is
+ specified in a Visual C++ project.
+ </summary>
+ <remarks>
+ The integer values assigned match those specified in the Visual C++
+ project file for each setting.
+ </remarks>>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UsePrecompiledHeader.Unspecified">
+ <summary>
+ Precompiled header file use not specified.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UsePrecompiledHeader.No">
+ <summary>
+ Don't use a precompiled header file.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /Yc.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UsePrecompiledHeader.Create">
+ <summary>
+ Create precompiled header file.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /Yc.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UsePrecompiledHeader.AutoCreate">
+ <summary>
+ Automatically create precompiled header file if necessary.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /Yc.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.Types.UsePrecompiledHeader.Use">
+ <summary>
+ Use a precompiled header file.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /Yu.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VSNet.Types.WebMap">
+ <summary>
+ Represents a single mapping from URL project path to physical project
+ path.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMap.Url">
+ <summary>
+ Specifies the URL of the project file, or a URL fragment to match.
+ </summary>
+ <value>
+ The URL of the project file or the URL fragment to match.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMap.Path">
+ <summary>
+ Specifies the actual path to the project file, or the path fragment
+ to replace.
+ </summary>
+ <value>
+ The actual path to the project file or the path fragment to replace
+ the URL fragment with.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMap.CaseSensitive">
+ <summary>
+ Specifies whether the mapping is case-sensitive or not.
+ </summary>
+ <value>
+ A boolean flag representing the case-sensitivity of the mapping. Default is <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMap.IfDefined">
+ <summary>
+ Indicates if the URL of the project file should be mapped.
+ </summary>
+ <value>
+ <see langword="true" /> if the URL of the project file should be
+ mapped; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMap.UnlessDefined">
+ <summary>
+ Indicates if the URL of the project file should not be mapped.
+ </summary>
+ <value>
+ <see langword="true" /> if the URL of the project file should not
+ be mapped; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.Types.WebMapCollection">
+ <summary>
+ Contains a strongly typed collection of <see cref="T:NAnt.VSNet.Types.WebMap"/>
+ objects.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.Types.WebMapCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.#ctor(NAnt.VSNet.Types.WebMapCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.Types.WebMapCollection"/> class
+ with the specified <see cref="T:NAnt.VSNet.Types.WebMapCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.#ctor(NAnt.VSNet.Types.WebMap[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.Types.WebMapCollection"/> class
+ with the specified array of <see cref="T:NAnt.VSNet.Types.WebMap"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.FindBestMatch(System.String)">
+ <summary>
+ Find the best matching <see cref="T:NAnt.VSNet.Types.WebMap"/> for the given Uri.
+ </summary>
+ <param name="uri">The value to match against the <see cref="T:NAnt.VSNet.Types.WebMap"/> objects in the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.Add(NAnt.VSNet.Types.WebMap)">
+ <summary>
+ Adds a <see cref="T:NAnt.VSNet.Types.WebMap"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.Types.WebMap"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.AddRange(NAnt.VSNet.Types.WebMap[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VSNet.Types.WebMap"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.VSNet.Types.WebMap"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.AddRange(NAnt.VSNet.Types.WebMapCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VSNet.Types.WebMapCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.VSNet.Types.WebMapCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.Contains(NAnt.VSNet.Types.WebMap)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VSNet.Types.WebMap"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.Types.WebMap"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VSNet.Types.WebMap"/> with the specified
+ value is in the collection.
+ </summary>
+ <param name="value">The argument value to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.VSNet.Types.WebMap"/> with value
+ <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.CopyTo(NAnt.VSNet.Types.WebMap[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.IndexOf(NAnt.VSNet.Types.WebMap)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.VSNet.Types.WebMap"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.Types.WebMap"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.VSNet.Types.WebMap"/>. If the <see cref="T:NAnt.VSNet.Types.WebMap"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.Insert(System.Int32,NAnt.VSNet.Types.WebMap)">
+ <summary>
+ Inserts a <see cref="T:NAnt.VSNet.Types.WebMap"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.VSNet.Types.WebMap"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.VSNet.Types.WebMapEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapCollection.Remove(NAnt.VSNet.Types.WebMap)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.Types.WebMap"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMapCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMapCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.VSNet.Types.WebMap"/> with the specified value.
+ </summary>
+ <param name="value">The value of the <see cref="T:NAnt.VSNet.Types.WebMap"/> to get.</param>
+ </member>
+ <member name="T:NAnt.VSNet.Types.WebMapEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.VSNet.Types.WebMap"/> elements of a <see cref="T:NAnt.VSNet.Types.WebMapCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapEnumerator.#ctor(NAnt.VSNet.Types.WebMapCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.Types.WebMapEnumerator"/> class
+ with the specified <see cref="T:NAnt.VSNet.Types.WebMapCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Types.WebMapEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Types.WebMapEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.GetPrimaryOutputFile(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the output path of the reference, without taking the "copy local"
+ setting into consideration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The full output path of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.GetOutputFiles(NAnt.VSNet.Configuration,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files of the reference for the
+ specified configuration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.GetAssemblyReferences(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the complete set of assemblies that need to be referenced when
+ a project references this component.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The complete set of assemblies that need to be referenced when a
+ project references this component.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.GetTimestamp(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the timestamp of the reference.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The timestamp of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether the reference is managed for the
+ specified configuration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ <see langword="true" /> if the reference is managed for the
+ specified configuration; otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.GetFileTimestamp(System.String)">
+ <summary>
+ Returns the date and time the specified file was last written to.
+ </summary>
+ <param name="fileName">The file for which to obtain write date and time information.</param>
+ <returns>
+ A <see cref="T:System.DateTime"/> structure set to the date and time that
+ the specified file was last written to, or
+ <see cref="F:System.DateTime.MaxValue"/> if the specified file does not
+ exist.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.Log(NAnt.Core.Level,System.String)">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to be logged.</param>
+ <remarks>
+ The actual logging is delegated to the underlying task.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ReferenceBase.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <remarks>
+ The actual logging is delegated to the underlying task.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ReferenceBase.CopyLocal">
+ <summary>
+ Gets a value indicating whether the output file(s) of this reference
+ should be copied locally.
+ </summary>
+ <value>
+ <see langword="true" /> if the output file(s) of this reference
+ should be copied locally; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ReferenceBase.IsSystem">
+ <summary>
+ Gets a value indicating whether this reference represents a system
+ assembly.
+ </summary>
+ <value>
+ <see langword="true" /> if this reference represents a system
+ assembly; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ReferenceBase.Parent">
+ <summary>
+ Gets the project in which the reference is defined.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.FileReferenceBase.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether the reference is managed for the
+ specified configuration.
+ </summary>
+ <param name="config">The build configuration of the reference.</param>
+ <returns>
+ <see langword="true" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.FileReferenceBase.GetAssemblyOutputFiles(System.String,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files for the specified assembly
+ and adds them to <paremref name="outputFiles"/> collection.
+ </summary>
+ <param name="assemblyFile">The path of the assembly to get the output files for.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.GetPrimaryOutputFile(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the path of the reference, without taking the "copy local"
+ setting into consideration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The output path of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.GetOutputFiles(NAnt.VSNet.Configuration,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files for the referenced project.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.GetAssemblyReferences(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the complete set of assemblies that need to be referenced when
+ a project references this component.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The complete set of assemblies that need to be referenced when a
+ project references this component.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.GetTimestamp(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the timestamp of the reference.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The timestamp of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.ResolveAssemblyReference">
+ <summary>
+ Resolves an assembly reference.
+ </summary>
+ <returns>
+ The full path to the resolved assembly, or <see langword="null" />
+ if the assembly reference could not be resolved.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.ResolveFromFolderList(System.Collections.Specialized.StringCollection,System.String)">
+ <summary>
+ Searches for the given file in all paths in <paramref name="folderList" />.
+ </summary>
+ <param name="folderList">The folders to search.</param>
+ <param name="fileName">The file to search for.</param>
+ <returns>
+ The path of the assembly if <paramref name="fileName" /> was found
+ in <paramref name="folderList" />; otherwise, <see langword="null" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.ResolveFromFramework(System.String)">
+ <summary>
+ Resolves an assembly reference in the framework assembly directory
+ of the target framework.
+ </summary>
+ <param name="fileName">The file to search for.</param>
+ <returns>
+ The full path of the assembly file if the assembly could be located
+ in the framework assembly directory; otherwise, <see langword="null" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.AssemblyReferenceBase.ResolveFromRelativePath(System.String)">
+ <summary>
+ Resolves an assembly reference using a path relative to the project
+ directory.
+ </summary>
+ <returns>
+ The full path of the assembly, or <see langword="null"/> if
+ <paramref name="relativePath"/> is <see langword="null"/> or an
+ empty <see cref="T:System.String"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.AssemblyReferenceBase.CopyLocal">
+ <summary>
+ Gets a value indicating whether the output file(s) of this reference
+ should be copied locally.
+ </summary>
+ <value>
+ <see langword="true" /> if the output file(s) of this reference
+ should be copied locally; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.AssemblyReferenceBase.IsSystem">
+ <summary>
+ Gets a value indicating whether this reference represents a system
+ assembly.
+ </summary>
+ <value>
+ <see langword="true" /> if this reference represents a system
+ assembly; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="M:NAnt.VSNet.ConfigurationBase.#ctor(NAnt.VSNet.ProjectBase)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ConfigurationBase"/>
+ class with the given <see cref="T:NAnt.VSNet.ProjectBase"/>.
+ </summary>
+ <param name="project">The project of the configuration.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ConfigurationBase.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The macro is not supported.</para>
+ <para>-or-</para>
+ <para>The macro is not implemented.</para>
+ <para>-or-</para>
+ <para>The macro cannot be expanded.</para>
+ </exception>
+ <exception cref="T:System.NotImplementedException">
+ <para>Expansion of a given macro is not yet implemented.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.ConfigurationBase.EvaluateMacro(System.Text.RegularExpressions.Match)">
+ <summary>
+ Is called each time a regular expression match is found during a
+ <see cref="M:Regex.Replace(string, MatchEvaluator)"/> operation.
+ </summary>
+ <param name="m">The <see cref="T:System.Text.RegularExpressions.Match"/> resulting from a single regular expression match during a <see cref="M:Regex.Replace(string, MatchEvaluator)"/>.</param>
+ <returns>
+ The expanded <see cref="T:System.Text.RegularExpressions.Match"/>.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.Project">
+ <summary>
+ Gets the project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.Name">
+ <summary>
+ Gets the name of the configuration.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.ObjectDir">
+ <summary>
+ Get the directory in which intermediate build output will be stored
+ for this configuration.
+ </summary>
+ <remarks>
+ <para>
+ This is a directory relative to the project directory named
+ <c>obj\&lt;configuration name&gt;</c>.
+ </para>
+ <para>
+ <c>.resx</c> and <c>.licx</c> files will only be recompiled if the
+ compiled resource files in the <see cref="P:NAnt.VSNet.ConfigurationBase.ObjectDir"/> are not
+ uptodate.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.OutputDir">
+ <summary>
+ Gets the output directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.OutputPath">
+ <summary>
+ Gets the path for the output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.BuildPath">
+ <summary>
+ Gets the path in which the output file will be created before its
+ copied to the actual output path.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.RelativeOutputDir">
+ <summary>
+ Get the path of the output directory relative to the project
+ directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.PlatformName">
+ <summary>
+ Gets the platform that the configuration targets.
+ </summary>
+ <value>
+ The platform targeted by the configuration.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationBase.ExtraOutputFiles">
+ <summary>
+ Gets the set of output files that is specific to the project
+ configuration.
+ </summary>
+ <value>
+ The set of output files that is specific to the project
+ configuration.
+ </value>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ConfigurationDictionary.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ConfigurationDictionary"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ConfigurationMap.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ConfigurationMap"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ConfigurationMap.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ConfigurationMap"/>
+ class with the specified initial capacity.
+ </summary>
+ <param name="capacity">The appropriate number of entries that the <see cref="T:NAnt.VSNet.ConfigurationMap"/> can initially contain.</param>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationSettings.PlatformName">
+ <summary>
+ Gets the platform that the configuration targets.
+ </summary>
+ <value>
+ The platform targeted by the configuration.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationSettings.BuildPath">
+ <summary>
+ Gets the path in which the output file will be created before its
+ copied to the actual output path.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ConfigurationSettings.RegisterForComInterop">
+ <summary>
+ Gets a value indicating whether to register the project output for
+ use with COM components.
+ </summary>
+ <value>
+ <see langword="true" /> if the project output should be registered
+ for use with COM components; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectBase">
+ <summary>
+ Base class for all project classes.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.#ctor(System.Xml.XmlElement,NAnt.VSNet.Tasks.SolutionTask,System.CodeDom.Compiler.TempFileCollection,NAnt.Core.Util.GacCache,NAnt.VSNet.ReferencesResolver,System.IO.DirectoryInfo)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectBase"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.GetOutputFiles(NAnt.VSNet.Configuration,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files for the project configuration
+ matching the specified solution configuration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <remarks>
+ <para>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </para>
+ <para>
+ If the project is not configured to be built for the specified
+ solution configuration, then no output files are added.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether building the project for the specified
+ build configuration results in managed output.
+ </summary>
+ <param name="configuration">The build configuration.</param>
+ <returns>
+ <see langword="true" /> if the project output for the given build
+ configuration is managed; otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro or <see langword="null" /> if the macro is not
+ supported.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ file.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.VerifyProjectXml(System.Xml.XmlElement)">
+ <summary>
+ Verifies whether the specified XML fragment represents a valid project
+ that is supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The XML fragment is not supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.</para>
+ <para>-or-</para>
+ <para>The XML fragment does not represent a valid project (for this <see cref="T:NAnt.VSNet.ProjectBase"/>).</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.Prepare(NAnt.VSNet.Configuration)">
+ <summary>
+ Prepares the project for being built.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <remarks>
+ The default implementation will ensure that none of the output files
+ are marked read-only.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.CopyFile(System.IO.FileInfo,System.IO.FileInfo,NAnt.Core.Task)">
+ <summary>
+ Copies the specified file if the destination file does not exist, or
+ the source file has been modified since it was previously copied.
+ </summary>
+ <param name="srcFile">The file to copy.</param>
+ <param name="destFile">The destination file.</param>
+ <param name="parent">The <see cref="T:NAnt.Core.Task"/> in which context the operation will be performed.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.Log(NAnt.Core.Level,System.String)">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to be logged.</param>
+ <remarks>
+ The actual logging is delegated to the underlying task.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBase.Log(NAnt.Core.Level,System.String,System.Object[])">
+ <summary>
+ Logs a message with the given priority.
+ </summary>
+ <param name="messageLevel">The message priority at which the specified message is to be logged.</param>
+ <param name="message">The message to log, containing zero or more format items.</param>
+ <param name="args">An <see cref="T:System.Object"/> array containing zero or more objects to format.</param>
+ <remarks>
+ The actual logging is delegated to the underlying task.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProductVersion">
+ <summary>
+ Gets the Visual Studio product version of the project.
+ </summary>
+ <value>
+ The Visual Studio product version of the project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.Name">
+ <summary>
+ Gets the name of the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.Type">
+ <summary>
+ Gets the type of the project.
+ </summary>
+ <value>
+ The type of the project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProjectPath">
+ <summary>
+ Gets the path of the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProjectDirectory">
+ <summary>
+ Gets the directory containing the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProjectLocation">
+ <summary>
+ Get the location of the project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ObjectDir">
+ <summary>
+ Get the directory in which intermediate build output that is not
+ specific to the build configuration will be stored.
+ </summary>
+ <remarks>
+ <para>
+ For <see cref="T:NAnt.VSNet.ProjectLocation.Local" /> projects, this is defined
+ as <c>&lt;Project Directory&lt;\obj</c>.
+ </para>
+ <para>
+ For <see cref="T:NAnt.VSNet.ProjectLocation.Web" /> projects, this is defined
+ as <c>%HOMEPATH%\VSWebCache\&lt;Machine Name&gt;\&lt;Project Directory&gt;\obj</c>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.Guid">
+ <summary>
+ Gets or sets the unique identifier of the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProjectConfigurations">
+ <summary>
+ Gets a list of all configurations defined in the project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.BuildConfigurations">
+ <summary>
+ Gets a list of project configurations that can be build.
+ </summary>
+ <remarks>
+ <para>
+ Project configurations that are not in this list do not need to be
+ compiled.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ExtraOutputFiles">
+ <summary>
+ Gets the extra set of output files for the project.
+ </summary>
+ <value>
+ The extra set of output files for the project.
+ </value>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProjectDependencies">
+ <summary>
+ Gets the set of projects that the project depends on.
+ </summary>
+ <value>
+ The set of projects that the project depends on.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBase.ProductVersionNumber">
+ <summary>
+ TODO: refactor this !!!
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether building the project for the specified
+ build configuration results in managed output.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ <see langword="true" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.Prepare(NAnt.VSNet.Configuration)">
+ <summary>
+ Prepares the project for being built.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <remarks>
+ Ensures the configuration-level object directory exists and ensures
+ that none of the output files are marked read-only.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.GetOutputFiles(NAnt.VSNet.Configuration,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files for the project configuration
+ matching the specified solution configuration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <remarks>
+ <para>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </para>
+ <para>
+ If the project is not configured to be built for the specified
+ solution configuration, then no output files are added.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.GetProcessStartInfo(NAnt.VSNet.ConfigurationBase,System.String)">
+ <summary>
+ Returns a <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler
+ for this project.
+ </summary>
+ <param name="config">The configuration to build.</param>
+ <param name="responseFile">The response file for the compiler.</param>
+ <returns>
+ A <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler for
+ this project.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.DetermineProjectLocation(System.Xml.XmlElement)">
+ <summary>
+ Returns the project location from the specified project XML fragment.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <returns>
+ The project location of the specified project XML file.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The project location could not be determined.</para>
+ <para>-or-</para>
+ <para>The project location is invalid.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.GetTypeLibraryPath(NAnt.VSNet.ConfigurationSettings)">
+ <summary>
+ Gets the absolute path of the type library for the project
+ output.
+ </summary>
+ <param name="config">The configuration to build.</param>
+ <returns>
+ The absolute path of the type library for the project output.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.RegisterForComInterop(NAnt.VSNet.ConfigurationSettings,NAnt.VSNet.Configuration,System.String)">
+ <summary>
+ Generates a type library for the specified assembly, registers it.
+ </summary>
+ <param name="config">The project configuration that is built.</param>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="typelibPath">The path of the type library to generate.</param>
+ <remarks>
+ The <c>regasm</c> tool is used to generate the type library.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.UnregisterForComInterop(NAnt.VSNet.ConfigurationSettings,NAnt.VSNet.Configuration)">
+ <summary>
+ Unregister a type library for the specified assembly, and the types
+ in that assembly.
+ </summary>
+ <param name="config">The project configuration that is built.</param>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <remarks>
+ The <c>regasm</c> tool is used to unregister the type library, and
+ remove the COM registration for types in the specified assembly.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.GetLocalizedResources">
+ <summary>
+ Returns <see cref="T:System.Collections.Hashtable"/> containing culture-specific resources.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Hashtable"/> containing culture-specific resources.
+ </returns>
+ <remarks>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is <see cref="T:System.Globalization.CultureInfo"/>
+ and the value is an <see cref="T:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet"/> instance
+ for that culture.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.CreateRegAsmTask">
+ <summary>
+ Creates and initializes a <see cref="T:NAnt.Win32.Tasks.RegAsmTask"/> instance.
+ </summary>
+ <returns>
+ An initialized <see cref="T:NAnt.Win32.Tasks.RegAsmTask"/> instance.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.GetProductVersion(System.Xml.XmlNode)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="projectNode">XML fragment representing the project to check.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.GetProjectLocation(System.Xml.XmlNode)">
+ <summary>
+ Returns the <see cref="P:NAnt.VSNet.ManagedProjectBase.ProjectLocation"/> of the specified project
+ XML fragment.
+ </summary>
+ <param name="projectNode">XML fragment representing the project to check.</param>
+ <returns>
+ The <see cref="P:NAnt.VSNet.ManagedProjectBase.ProjectLocation"/> of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The project location could not be determined.</para>
+ <para>-or-</para>
+ <para>The project location is invalid.</para>
+ </exception>
+ </member>
+ <member name="F:NAnt.VSNet.ManagedProjectBase._sourceFiles">
+ <summary>
+ Holds a case-insensitive list of source files.
+ </summary>
+ <remarks>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the full path of the
+ source file and the value is <see langword="null"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.FileExtension">
+ <summary>
+ Gets the default file extension of sources for this project.
+ </summary>
+ <value>
+ The default file extension of sources for this project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.IsWebProject">
+ <summary>
+ Gets a value indicating if this is a web project.
+ </summary>
+ <value>
+ <see langword="true" /> if this is a web project; otherwise,
+ <see langword="false" />.
+ </value>
+ <remarks>
+ If the url of a web project has been mapped to a local path
+ (using the &lt;webmap&gt; element), then this property will return
+ <see langword="false" /> for a <see cref="T:NAnt.VSNet.ProjectLocation.Web" />
+ project.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.Name">
+ <summary>
+ Gets the name of the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.ProjectPath">
+ <summary>
+ Gets the path of the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.ProjectDirectory">
+ <summary>
+ Gets the directory containing the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.ProjectLocation">
+ <summary>
+ Get the location of the project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.Guid">
+ <summary>
+ Gets or sets the unique identifier of the VS.NET project.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet">
+ <summary>
+ Groups a set of <see cref="T:NAnt.VSNet.Resource"/> instances for a specific
+ culture.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet.#ctor(System.Globalization.CultureInfo)">
+ <summary>
+ Initializes a new <see cref="T:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet"/> instance
+ for the specified culture.
+ </summary>
+ <param name="culture">A <see cref="T:System.Globalization.CultureInfo"/>.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet.GetBuildDirectory(NAnt.VSNet.ConfigurationSettings)">
+ <summary>
+ Gets the intermediate build directory in which the satellite
+ assembly is built.
+ </summary>
+ <param name="projectConfig">The project build configuration.</param>
+ <returns>
+ The intermediate build directory in which the satellite assembly
+ is built.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet.GetSatelliteAssemblyPath(NAnt.VSNet.ConfigurationSettings,NAnt.VSNet.ProjectSettings)">
+ <summary>
+ Gets a <see cref="T:System.IO.FileInfo"/> representing the path to the
+ intermediate file location of the satellite assembly.
+ </summary>
+ <param name="projectConfig">The project build configuration.</param>
+ <param name="projectSettings">The project settings.</param>
+ <returns>
+ A <see cref="T:System.IO.FileInfo"/> representing the path to the
+ intermediate file location of the satellite assembly.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet.GetRelativePath(NAnt.VSNet.ProjectSettings)">
+ <summary>
+ Gets path of the satellite assembly, relative to the output
+ directory.
+ </summary>
+ <param name="projectSettings">The project settings.</param>
+ <returns>
+ The path of the satellite assembly, relative to the output
+ directory.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet.Culture">
+ <summary>
+ Gets the <see cref="T:System.Globalization.CultureInfo"/> of the
+ <see cref="T:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedProjectBase.LocalizedResourceSet.Resources">
+ <summary>
+ Gets the set of localized resources.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.CSharpProject.VerifyProjectXml(System.Xml.XmlElement)">
+ <summary>
+ Verifies whether the specified XML fragment represents a valid project
+ that is supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The XML fragment is not supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.</para>
+ <para>-or-</para>
+ <para>The XML fragment does not represent a valid project (for this <see cref="T:NAnt.VSNet.ProjectBase"/>).</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.CSharpProject.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="docElement">The document element of the project.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.CSharpProject.GetProcessStartInfo(NAnt.VSNet.ConfigurationBase,System.String)">
+ <summary>
+ Returns a <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler
+ for this project.
+ </summary>
+ <param name="config">The configuration to build.</param>
+ <param name="responseFile">The response file for the compiler.</param>
+ <returns>
+ A <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler for
+ this project.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.CSharpProject.DetermineProjectLocation(System.Xml.XmlElement)">
+ <summary>
+ Returns the project location from the specified project XML fragment.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <returns>
+ The project location of the specified project XML file.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The project location could not be determined.</para>
+ <para>-or-</para>
+ <para>The project location is invalid.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.CSharpProject.IsSupported(System.Xml.XmlElement)">
+ <summary>
+ Returns a value indicating whether the project represented by the
+ specified XML fragment is supported by <see cref="T:NAnt.VSNet.CSharpProject"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project to check.</param>
+ <returns>
+ <see langword="true"/> if <see cref="T:NAnt.VSNet.CSharpProject"/> supports
+ the specified project; otherwise, <see langword="false"/>.
+ </returns>
+ <remarks>
+ <para>
+ A project is identified as as C# project, if the XML fragment at
+ least has the following information:
+ </para>
+ <code>
+ <![CDATA[
+ <VisualStudioProject>
+ <CSHARP
+ ProductVersion="..."
+ ....
+ >
+ ...
+ </CSHARP>
+ </VisualStudioProject>
+ ]]>
+ </code>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.CSharpProject.Type">
+ <summary>
+ Gets the type of the project.
+ </summary>
+ <value>
+ The type of the project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.CSharpProject.FileExtension">
+ <summary>
+ Gets the default file extension of sources for this project.
+ </summary>
+ <value>
+ For C# projects, the default file extension is &quot;.cs&quot;.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.GenericSolution">
+ <summary>
+ Supports grouping of individual projects, and treating them as a solution.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.JSharpProject.VerifyProjectXml(System.Xml.XmlElement)">
+ <summary>
+ Verifies whether the specified XML fragment represents a valid project
+ that is supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The XML fragment is not supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.</para>
+ <para>-or-</para>
+ <para>The XML fragment does not represent a valid project (for this <see cref="T:NAnt.VSNet.ProjectBase"/>).</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.JSharpProject.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="docElement">The document element of the project.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.JSharpProject.Prepare(NAnt.VSNet.Configuration)">
+ <summary>
+ Prepares the project for being built.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <remarks>
+ Ensures the configuration-level object directory exists and ensures
+ that none of the output files are marked read-only.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.JSharpProject.GetProcessStartInfo(NAnt.VSNet.ConfigurationBase,System.String)">
+ <summary>
+ Returns a <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler
+ for this project.
+ </summary>
+ <param name="config">The configuration to build.</param>
+ <param name="responseFile">The response file for the compiler.</param>
+ <returns>
+ A <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler for
+ this project.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.JSharpProject.DetermineProjectLocation(System.Xml.XmlElement)">
+ <summary>
+ Returns the project location from the specified project XML fragment.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <returns>
+ The project location of the specified project XML file.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The project location could not be determined.</para>
+ <para>-or-</para>
+ <para>The project location is invalid.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.JSharpProject.IsSupported(System.Xml.XmlElement)">
+ <summary>
+ Returns a value indicating whether the project represented by the
+ specified XML fragment is supported by <see cref="T:NAnt.VSNet.JSharpProject"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project to check.</param>
+ <returns>
+ <see langword="true"/> if <see cref="T:NAnt.VSNet.CSharpProject"/> supports
+ the specified project; otherwise, <see langword="false"/>.
+ </returns>
+ <remarks>
+ <para>
+ A project is identified as as J# project, if the XML fragment at
+ least has the following information:
+ </para>
+ <code>
+ <![CDATA[
+ <VisualStudioProject>
+ <JSHARP
+ ProductVersion="..."
+ ....
+ >
+ ...
+ </JSHARP>
+ </VisualStudioProject>
+ ]]>
+ </code>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.JSharpProject.Type">
+ <summary>
+ Gets the type of the project.
+ </summary>
+ <value>
+ The type of the project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.JSharpProject.FileExtension">
+ <summary>
+ Gets the default file extension of sources for this project.
+ </summary>
+ <value>
+ For J# projects, the default file extension is &quot;.jsl&quot;.
+ </value>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedAssemblyReference.ResolveAssemblyReference">
+ <summary>
+ Resolves an assembly reference.
+ </summary>
+ <returns>
+ The full path to the resolved assembly, or <see langword="null" />
+ if the assembly reference could not be resolved.
+ </returns>
+ <remarks>
+ <para>
+ Visual Studio .NET uses the following search mechanism :
+ </para>
+ <list type="number">
+ <item>
+ <term>
+ The project directory.
+ </term>
+ </item>
+ <item>
+ <term>
+ The directories specified in the "ReferencePath" property,
+ which is stored in the .USER file.
+ </term>
+ </item>
+ <item>
+ <term>
+ The .NET Framework directory (see KB306149)
+ </term>
+ </item>
+ <item>
+ <term>
+ <para>
+ The directories specified under the following registry
+ keys:
+ </para>
+ <list type="bullet">
+ <item>
+ <term>
+ HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders
+ </term>
+ </item>
+ <item>
+ <term>
+ HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders
+ </term>
+ </item>
+ <item>
+ <term>
+ HKLM\SOFTWARE\Microsoft\VisualStudio\&lt;major version&gt;.&lt;minor version&gt;\AssemblyFolders
+ </term>
+ </item>
+ <item>
+ <term>
+ HKCU\SOFTWARE\Microsoft\VisualStudio\&lt;major version&gt;.&lt;minor version&gt;\AssemblyFolders
+ </term>
+ </item>
+ </list>
+ <para>
+ Future versions of Visual Studio .NET will also check
+ in:
+ </para>
+ <list type="bullet">
+ <item>
+ <term>
+ HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx
+ </term>
+ </item>
+ <item>
+ <term>
+ HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx
+ </term>
+ </item>
+ </list>
+ </term>
+ </item>
+ <item>
+ <term>
+ The HintPath.
+ </term>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedAssemblyReference.Name">
+ <summary>
+ Gets the name of the referenced assembly.
+ </summary>
+ <value>
+ The name of the referenced assembly, or <see langword="null" /> if
+ the name could not be determined.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedAssemblyReference.AssemblyFoldersKey">
+ <summary>
+ Gets the Visual Studio .NET AssemblyFolders registry key matching
+ the current target framework.
+ </summary>
+ <value>
+ The Visual Studio .NET AssemblyFolders registry key matching the
+ current target framework.
+ </value>
+ <exception cref="T:NAnt.Core.BuildException">The current target framework is not supported.</exception>
+ <remarks>
+ We use the target framework instead of the product version of the
+ containing project file to determine what registry key to scan, as
+ we don't want to use assemblies meant for uplevel framework versions.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VSNet.ManagedOutputType">
+ <summary>
+ Indentifies the different output types of a managed project.
+ </summary>
+ <remarks>
+ Visual Studio .NET does not support modules.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.ManagedOutputType.Library">
+ <summary>
+ A class library.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ManagedOutputType.Executable">
+ <summary>
+ A console application.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ManagedOutputType.WindowsExecutable">
+ <summary>
+ A Windows program.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectReferenceBase.GetPrimaryOutputFile(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the output path of the reference, without taking the "copy local"
+ setting into consideration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The output path of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectReferenceBase.GetOutputFiles(NAnt.VSNet.Configuration,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files for the referenced project.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <returns>
+ The complete set of output files for the referenced project.
+ </returns>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectReferenceBase.GetAssemblyReferences(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the complete set of assemblies that need to be referenced when
+ a project references this project.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The complete set of assemblies that need to be referenced when a
+ project references this project.
+ </returns>
+ <remarks>
+ <para>
+ Apparently, there's some hack in VB.NET that allows a type to be used
+ that derives from a type in an assembly that is not referenced by the
+ project.
+ </para>
+ <para>
+ When building from the command line (using vbc), the following error
+ is reported "error BC30007: Reference required to assembly 'X'
+ containing the base class 'X'. Add one to your project".
+ </para>
+ <para>
+ Somehow VB.NET can workaround this issue, without actually adding a
+ reference to that assembly. I verified this with both VS.NET 2003 and
+ VS.NET 2005.
+ </para>
+ <para>
+ For now, we have no other option than to return all assembly
+ references of the referenced project if the parent is a VB.NET
+ project.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectReferenceBase.GetTimestamp(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the timestamp of the reference.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The timestamp of the reference.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectReferenceBase.CopyLocal">
+ <summary>
+ Gets a value indicating whether the output file(s) of this reference
+ should be copied locally.
+ </summary>
+ <value>
+ <see langword="true" /> if the output file(s) of this reference
+ should be copied locally; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectReferenceBase.IsSystem">
+ <summary>
+ Gets a value indicating whether this reference represents a system
+ assembly.
+ </summary>
+ <value>
+ <see langword="false" /> as a project by itself can never be a
+ system assembly.
+ </value>
+ </member>
+ <member name="M:NAnt.VSNet.ManagedProjectReference.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether the reference is managed for the
+ specified configuration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ <see langword="true" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.WrapperReferenceBase.GetPrimaryOutputFile(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the path of the reference, without taking the "copy local"
+ setting into consideration.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The output path of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.WrapperReferenceBase.GetOutputFiles(NAnt.VSNet.Configuration,System.Collections.Hashtable)">
+ <summary>
+ Gets the complete set of output files for the referenced project.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <param name="outputFiles">The set of output files to be updated.</param>
+ <remarks>
+ The key of the case-insensitive <see cref="T:System.Collections.Hashtable"/> is the
+ full path of the output file and the value is the path relative to
+ the output directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.WrapperReferenceBase.GetAssemblyReferences(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the complete set of assemblies that need to be referenced when
+ a project references this component.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The complete set of assemblies that need to be referenced when a
+ project references this component.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.WrapperReferenceBase.GetTimestamp(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets the timestamp of the reference.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ The timestamp of the reference.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.WrapperReferenceBase.Sync(NAnt.VSNet.ConfigurationBase)">
+ <summary>
+ Removes wrapper assembly from build directory, if wrapper assembly
+ no longer exists in output directory or is not in sync with build
+ directory, to force rebuild.
+ </summary>
+ <param name="config">The project configuration.</param>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.CopyLocal">
+ <summary>
+ Gets a value indicating whether the output file(s) of this reference
+ should be copied locally.
+ </summary>
+ <value>
+ <see langword="false" /> if the reference wraps a Primary Interop
+ Assembly; otherwise, <see langword="true" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.IsSystem">
+ <summary>
+ Gets a value indicating whether this reference represents a system
+ assembly.
+ </summary>
+ <value>
+ <see langword="false" /> as none of the system assemblies are wrappers
+ or Primary Interop Assemblies anyway.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.WrapperTool">
+ <summary>
+ Gets the name of the tool that should be used to create the
+ <see cref="P:NAnt.VSNet.WrapperReferenceBase.WrapperAssembly"/>.
+ </summary>
+ <value>
+ The name of the tool that should be used to create the
+ <see cref="P:NAnt.VSNet.WrapperReferenceBase.WrapperAssembly"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.WrapperAssembly">
+ <summary>
+ Gets the path of the wrapper assembly.
+ </summary>
+ <value>
+ The path of the wrapper assembly.
+ </value>
+ <remarks>
+ The wrapper assembly is stored in the object directory of the
+ project.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.IsCreated">
+ <summary>
+ Gets a value indicating whether the wrapper assembly has already been
+ created.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.PrimaryInteropAssembly">
+ <summary>
+ Gets the path of the Primary Interop Assembly.
+ </summary>
+ <value>
+ The path of the Primary Interop Assembly, or <see langword="null" />
+ if not available.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.TypeLibVersion">
+ <summary>
+ Gets the hex version of the type library as defined in the definition
+ of the reference.
+ </summary>
+ <value>
+ The hex version of the type library.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.TypeLibGuid">
+ <summary>
+ Gets the GUID of the type library as defined in the definition
+ of the reference.
+ </summary>
+ <value>
+ The GUID of the type library.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.TypeLibLocale">
+ <summary>
+ Gets the locale of the type library in hex notation.
+ </summary>
+ <value>
+ The locale of the type library.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.WrapperReferenceBase.TypeLibraryName">
+ <summary>
+ Gets the name of the type library.
+ </summary>
+ <value>
+ The name of the type library.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.Name">
+ <summary>
+ Gets the name of the referenced assembly.
+ </summary>
+ <value>
+ The name of the referenced assembly, or <see langword="null" /> if
+ the name could not be determined.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.WrapperTool">
+ <summary>
+ Gets the name of the tool that should be used to create the
+ <see cref="P:NAnt.VSNet.ManagedWrapperReference.WrapperAssembly"/>.
+ </summary>
+ <value>
+ The name of the tool that should be used to create the
+ <see cref="P:NAnt.VSNet.ManagedWrapperReference.WrapperAssembly"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.WrapperAssembly">
+ <summary>
+ Gets the path of the wrapper assembly.
+ </summary>
+ <value>
+ The path of the wrapper assembly.
+ </value>
+ <remarks>
+ The wrapper assembly is stored in the object directory of the
+ project.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.PrimaryInteropAssembly">
+ <summary>
+ Gets the path of the Primary Interop Assembly.
+ </summary>
+ <value>
+ The path of the Primary Interop Assembly, or <see langword="null" />
+ if not available.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.TypeLibVersion">
+ <summary>
+ Gets the hex version of the type library as defined in the definition
+ of the reference.
+ </summary>
+ <value>
+ The hex version of the type library.
+ </value>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>
+ The definition of the reference does not contain a "VersionMajor" attribute.
+ </para>
+ <para>-or</para>
+ <para>
+ The definition of the reference does not contain a "VersionMinor" attribute.
+ </para>
+ </exception>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.TypeLibGuid">
+ <summary>
+ Gets the GUID of the type library as defined in the definition
+ of the reference.
+ </summary>
+ <value>
+ The GUID of the type library.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ManagedWrapperReference.TypeLibLocale">
+ <summary>
+ Gets the locale of the type library in hex notation.
+ </summary>
+ <value>
+ The locale of the type library.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectType">
+ <summary>
+ Specifies the type of the project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectType.VB">
+ <summary>
+ A Visual Basic.NET project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectType.CSharp">
+ <summary>
+ A Visual C# project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectType.VisualC">
+ <summary>
+ A Visual C++ project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectType.JSharp">
+ <summary>
+ A Visual J# project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectType.MSBuild">
+ <summary>
+ MSBuild project.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.BuildResult">
+ <summary>
+ Specifies the result of the build.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.BuildResult.Failed">
+ <summary>
+ The build failed.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.BuildResult.Success">
+ <summary>
+ The build succeeded.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.BuildResult.SuccessOutputUpdated">
+ <summary>
+ The build succeeded and the output was updated.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProductVersion.Rainier">
+ <summary>
+ Visual Studio.NET 2002
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProductVersion.Everett">
+ <summary>
+ Visual Studio.NET 2003
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProductVersion.Whidbey">
+ <summary>
+ Visual Studio 2005
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProductVersion.Orcas">
+ <summary>
+ Visual Studio 2008
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProductVersion.Rosario">
+ <summary>
+ Visual Studio 2010
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectLocation">
+ <summary>
+ Indentifies the physical location of a managed project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectLocation.Local">
+ <summary>
+ A local project.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectLocation.Web">
+ <summary>
+ A web project.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectBaseCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.VSNet.ProjectBase"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectBaseCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.#ctor(NAnt.VSNet.ProjectBaseCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectBaseCollection"/> class
+ with the specified <see cref="T:NAnt.VSNet.ProjectBaseCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.#ctor(NAnt.VSNet.ProjectBase[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectBaseCollection"/> class
+ with the specified array of <see cref="T:NAnt.VSNet.ProjectBase"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.Add(NAnt.VSNet.ProjectBase)">
+ <summary>
+ Adds a <see cref="T:NAnt.VSNet.ProjectBase"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectBase"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.AddRange(NAnt.VSNet.ProjectBase[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VSNet.ProjectBase"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.VSNet.ProjectBase"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.AddRange(NAnt.VSNet.ProjectBaseCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VSNet.ProjectBaseCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.VSNet.ProjectBaseCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.Contains(NAnt.VSNet.ProjectBase)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VSNet.ProjectBase"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectBase"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VSNet.ProjectBase"/> with the specified
+ GUID is in the collection, using a case-insensitive lookup.
+ </summary>
+ <param name="value">The GUID to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.VSNet.ProjectBase"/> with GUID
+ <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.CopyTo(NAnt.VSNet.ProjectBase[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.IndexOf(NAnt.VSNet.ProjectBase)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.VSNet.ProjectBase"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectBase"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.VSNet.ProjectBase"/>. If the <see cref="T:NAnt.VSNet.ProjectBase"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.Insert(System.Int32,NAnt.VSNet.ProjectBase)">
+ <summary>
+ Inserts a <see cref="T:NAnt.VSNet.ProjectBase"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectBase"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.VSNet.ProjectBaseEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.Remove(NAnt.VSNet.ProjectBase)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectBase"/> to remove from the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseCollection.Remove(System.String)">
+ <summary>
+ Remove items with the specified guid from the collection.
+ </summary>
+ <param name="guid">The guid of the project to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBaseCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBaseCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.VSNet.ProjectBase"/> with the specified GUID.
+ </summary>
+ <param name="guid">The GUID of the <see cref="T:NAnt.VSNet.ProjectBase"/> to get.</param>
+ <remarks>
+ Performs a case-insensitive lookup.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectBaseEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.VSNet.ProjectBase"/> elements of a <see cref="T:NAnt.VSNet.ProjectBaseCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseEnumerator.#ctor(NAnt.VSNet.ProjectBaseCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectBaseEnumerator"/> class
+ with the specified <see cref="T:NAnt.VSNet.ProjectBaseCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectBaseEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectBaseEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectEntry.Project">
+ <summary>
+ Gets or sets the in memory representation of the project.
+ </summary>
+ <value>
+ The in memory representation of the project, or <see langword="null" />
+ if the project is not (yet) loaded.
+ </value>
+ <remarks>
+ This property will always be <see langword="null" /> for
+ projects that are not supported.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectEntry.BuildConfigurations">
+ <summary>
+ Return a mapping between the configurations defined in the
+ solution file and the project build configurations.
+ </summary>
+ <value>
+ Mapping between configurations defined in the solution file
+ and the project build configurations, or <see langword="null" />
+ if the project is not defined in a solution file.
+ </value>
+ <remarks>
+ This mapping only includes project build configurations that
+ are configured to be built for a given solution configuration.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectEntryCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.VSNet.ProjectEntry"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectEntryCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.#ctor(NAnt.VSNet.ProjectEntryCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectEntryCollection"/> class
+ with the specified <see cref="T:NAnt.VSNet.ProjectEntryCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.#ctor(NAnt.VSNet.ProjectEntry[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectEntryCollection"/> class
+ with the specified array of <see cref="T:NAnt.VSNet.ProjectEntry"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.Add(NAnt.VSNet.ProjectEntry)">
+ <summary>
+ Adds a <see cref="T:NAnt.VSNet.ProjectEntry"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectEntry"/> to be added to the end of the collection.</param>
+ <returns>
+ The position into which the new element was inserted.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.AddRange(NAnt.VSNet.ProjectEntry[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VSNet.ProjectEntry"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.VSNet.ProjectEntry"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.AddRange(NAnt.VSNet.ProjectEntryCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VSNet.ProjectEntryCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.VSNet.ProjectEntryCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.Contains(NAnt.VSNet.ProjectEntry)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VSNet.ProjectEntry"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectEntry"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.Contains(System.String)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VSNet.ProjectEntry"/> with the specified
+ GUID is in the collection, using a case-insensitive lookup.
+ </summary>
+ <param name="value">The GUID to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if a <see cref="T:NAnt.VSNet.ProjectEntry"/> with GUID
+ <paramref name="value"/> is found in the collection; otherwise,
+ <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.CopyTo(NAnt.VSNet.ProjectEntry[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.IndexOf(NAnt.VSNet.ProjectEntry)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.VSNet.ProjectEntry"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectEntry"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.VSNet.ProjectEntry"/>. If the <see cref="T:NAnt.VSNet.ProjectEntry"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.Insert(System.Int32,NAnt.VSNet.ProjectEntry)">
+ <summary>
+ Inserts a <see cref="T:NAnt.VSNet.ProjectEntry"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectEntry"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.VSNet.ProjectEntryEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryCollection.Remove(NAnt.VSNet.ProjectEntry)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VSNet.ProjectEntry"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectEntryCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectEntryCollection.Item(System.String)">
+ <summary>
+ Gets the <see cref="T:NAnt.VSNet.ProjectEntry"/> with the specified GUID.
+ </summary>
+ <param name="guid">The GUID of the <see cref="T:NAnt.VSNet.ProjectEntry"/> to get.</param>
+ <remarks>
+ Performs a case-insensitive lookup.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectEntryEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.VSNet.ProjectEntry"/> elements of a <see cref="T:NAnt.VSNet.ProjectEntryCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryEnumerator.#ctor(NAnt.VSNet.ProjectEntryCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectEntryEnumerator"/> class
+ with the specified <see cref="T:NAnt.VSNet.ProjectEntryCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectEntryEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectEntryEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.VSNet.ProjectFactory">
+ <summary>
+ Factory class for VS.NET projects.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectFactory.#ctor(NAnt.VSNet.Tasks.SolutionTask)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.ProjectFactory"/>
+ class.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectFactory._cachedProjects">
+ <summary>
+ Holds a case-insensitive list of cached projects.
+ </summary>
+ <remarks>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the path of the project
+ file (for web projects this can be a URL) and the value is a
+ <see cref="T:NAnt.Core.Project"/> instance.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectFactory._cachedProjectGuids">
+ <summary>
+ Holds a case-insensitive list of cached project GUIDs.
+ </summary>
+ <remarks>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the path of the project
+ file (for web projects this can be a URL) and the value is the GUID
+ of the project.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.ProjectFactory._cachedProjectXml">
+ <summary>
+ Holds a case-insensitive list of cached project GUIDs.
+ </summary>
+ <remarks>
+ The key of the <see cref="T:System.Collections.Hashtable"/> is the path of the project
+ file (for web projects this can be a URL) and the value is the Xml
+ of the project.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectSettings.GetOutputType(System.Xml.XmlElement)">
+ <summary>
+ Determines the output type of the project from its XML definition.
+ </summary>
+ <param name="settingsXml">The XML definition of the project settings.</param>
+ <returns>
+ The output type of the project.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>
+ The output type of the project is not set in the specified XML
+ definition.
+ </para>
+ <para>-or-</para>
+ <para>
+ The output type of the project is not supported.
+ </para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.ProjectSettings.GetProjectGuid(System.String,System.Xml.XmlElement)">
+ <summary>
+ Gets the project GUID from the given <see cref="T:System.Xml.XmlElement"/>
+ holding a <c>&lt;VisualStudioProject&gt;</c> node.
+ </summary>
+ <param name="projectFile">The path of the project file.</param>
+ <param name="elemRoot">The <c>&lt;VisualStudioProject&gt;</c> node from which the project GUID should be retrieved.</param>
+ <returns>
+ The project GUID from specified <c>&lt;VisualStudioProject&gt;</c> node.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.ApplicationIcon">
+ <summary>
+ Gets the .ico file to use as application icon.
+ </summary>
+ <value>
+ The .ico file to use as application icon, or <see langword="null" />
+ if no application icon should be used.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.AssemblyOriginatorKeyFile">
+ <summary>
+ Gets the key file to use to sign ActiveX/COM wrappers.
+ </summary>
+ <value>
+ The path of the key file to use to sign ActiveX/COM wrappers,
+ relative to the project root directory, or <see langword="null" />
+ if the wrapper assembly should not be signed using a key file.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.AssemblyKeyContainerName">
+ <summary>
+ Gets the key name to use to sign ActiveX/COM wrappers.
+ </summary>
+ <value>
+ The name of the key container to use to sign ActiveX/COM wrappers,
+ or <see langword="null" /> if the wrapper assembly should not be
+ signed using a key container.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.OutputType">
+ <summary>
+ Gets the output type of this project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.RunPostBuildEvent">
+ <summary>
+ Designates when the <see cref="P:NAnt.VSNet.ProjectSettings.PostBuildEvent"/> command line should
+ be run. Possible values are "OnBuildSuccess", "Always" or
+ "OnOutputUpdated".
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.PreBuildEvent">
+ <summary>
+ Contains commands to be run before a build takes place.
+ </summary>
+ <remarks>
+ Valid commands are those in a .bat file. For more info see MSDN.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.ProjectSettings.PostBuildEvent">
+ <summary>
+ Contains commands to be ran after a build has taken place.
+ </summary>
+ <remarks>
+ Valid commands are those in a .bat file. For more info see MSDN.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.ReferencesResolver.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for
+ this instance.
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease"/> used to control the lifetime
+ policy for this instance. This is the current lifetime service object
+ for this instance if one exists; otherwise, a new lifetime service
+ object initialized with a lease that will never time out.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.ReferencesResolver.GetAssemblyFileName(System.String)">
+ <summary>
+ Gets the file name of the assembly with the given assembly name.
+ </summary>
+ <param name="assemblyName">The assembly name of the assembly of which the file name should be returned.</param>
+ <returns>
+ The file name of the assembly with the given assembly name.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Resource.Compile(NAnt.VSNet.Configuration)">
+ <summary>
+ Compiles the resource file.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ A <see cref="T:System.IO.FileInfo"/> representing the compiled resource file.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.Resource.GetCompiledResourceFile(NAnt.VSNet.Configuration)">
+ <summary>
+ Returns a <see cref="T:System.IO.FileInfo"/> representing the compiled resource
+ file.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ A <see cref="T:System.IO.FileInfo"/> representing the compiled resource file.
+ </returns>
+ <remarks>
+ Calling this method does not force compilation of the resource file.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Resource.InputFile">
+ <summary>
+ Gets a <see cref="T:System.IO.FileInfo"/> representing the physical location
+ of the resource file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.Resource.LogicalFile">
+ <summary>
+ Gets a <see cref="T:System.IO.FileInfo"/> representing the logical location
+ of the resource file in the project.
+ </summary>
+ <remarks>
+ When the resource file is not linked, this matches the
+ <see cref="P:NAnt.VSNet.Resource.InputFile"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.Resource.IsResX">
+ <summary>
+ Gets a value indicating whether the resource is in fact a ResX file.
+ </summary>
+ <value>
+ <see langword="true" /> if the resource is a ResX file; otherwise,
+ <see langword="false" />.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.SolutionFactory">
+ <summary>
+ Factory class for VS.NET solutions.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.SolutionFactory.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.SolutionFactory"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VBProject.VerifyProjectXml(System.Xml.XmlElement)">
+ <summary>
+ Verifies whether the specified XML fragment represents a valid project
+ that is supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The XML fragment is not supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.</para>
+ <para>-or-</para>
+ <para>The XML fragment does not represent a valid project (for this <see cref="T:NAnt.VSNet.ProjectBase"/>).</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VBProject.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="docElement">The document element of the project.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ <remarks>
+ This method is called from the <see cref="T:NAnt.VSNet.ProjectBase"/> ctor, and
+ at that time we're not sure the XML that is passed in, is indeed a
+ valid Visual Basic project.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VBProject.DetermineProjectLocation(System.Xml.XmlElement)">
+ <summary>
+ Returns the project location from the specified project XML fragment.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <returns>
+ The project location of the specified project XML file.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The project location could not be determined.</para>
+ <para>-or-</para>
+ <para>The project location is invalid.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VBProject.GetProcessStartInfo(NAnt.VSNet.ConfigurationBase,System.String)">
+ <summary>
+ Returns a <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler
+ for this project.
+ </summary>
+ <param name="config">The configuration to build.</param>
+ <param name="responseFile">The response file for the compiler.</param>
+ <returns>
+ A <see cref="T:System.Diagnostics.ProcessStartInfo"/> for launching the compiler for
+ this project.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.VBProject.IsSupported(System.Xml.XmlElement)">
+ <summary>
+ Returns a value indicating whether the project represented by the
+ specified XML fragment is supported by <see cref="T:NAnt.VSNet.VBProject"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project to check.</param>
+ <returns>
+ <see langword="true"/> if <see cref="T:NAnt.VSNet.VBProject"/> supports the
+ specified project; otherwise, <see langword="false"/>.
+ </returns>
+ <remarks>
+ <para>
+ A project is identified as as Visual Basic project, if the XML
+ fragment at least has the following information:
+ </para>
+ <code>
+ <![CDATA[
+ <VisualStudioProject>
+ <VisualBasic
+ ProductVersion="..."
+ ....
+ >
+ ...
+ </VisualBasic>
+ </VisualStudioProject>
+ ]]>
+ </code>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VBProject.Type">
+ <summary>
+ Gets the type of the project.
+ </summary>
+ <value>
+ The type of the project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VBProject.FileExtension">
+ <summary>
+ Gets the default file extension of sources for this project.
+ </summary>
+ <value>
+ For VB projects, the default file extension is &quot;.vb&quot;.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.VcArgumentMap">
+ <summary>
+ A mapping from properties in the .vcproj file to command line arguments.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcArgumentMap.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VSNet.VcArgumentMap"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcArgumentMap.GetArgument(System.String,System.String,NAnt.VSNet.VcArgumentMap.ArgGroup)">
+ <summary>
+ Gets the argument string corresponding with a configuration property
+ named <paramref name="propName" /> with value <paramref name="propValue" />.
+ An ignore mask can be used to eliminate some arguments from the search.
+ </summary>
+ <param name="propName">The name of the configuration property.</param>
+ <param name="propValue">The value of the configuration property.</param>
+ <param name="useIgnoreGroup">Specify any groups that needs to be ignored.</param>
+ <returns>
+ The argument string corresponding with a configuration property
+ named <paramref name="propName" /> with value <paramref name="propValue" />,
+ or <see langword="null" /> if no corresponding argument exists.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.VcArgumentMap.CreateCLArgumentMap">
+ <summary>
+ Creates a mapping between configuration properties for the Visual
+ C++ compiler and corresponding command-line arguments.
+ </summary>
+ <returns>
+ A mapping between configuration properties for the Visual C++
+ compiler and corresponding command-line arguments.
+ </returns>
+ <remarks>
+ <para>
+ The following configuration properties are processed by
+ <see cref="T:NAnt.VSNet.VcProject"/>:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Category</term>
+ <description>Property</description>
+ </listheader>
+ <item>
+ <term>General</term>
+ <description>Addtional Include Directories (/I[path])</description>
+ </item>
+ <item>
+ <term>General</term>
+ <description>Resolve #using References (/AI[path])</description>
+ </item>
+ <item>
+ <term>Preprocessor</term>
+ <description>Preprocessor Definitions (/D[macro])</description>
+ </item>
+ <item>
+ <term>Code Generation</term>
+ <description>Enable C++ Exceptions (/EHsc)</description>
+ </item>
+ <item>
+ <term>Precompiled Headers</term>
+ <description>Create/Use Precompiled Header</description>
+ </item>
+ <item>
+ <term>Precompiled Headers</term>
+ <description>Create/Use PCH Through File</description>
+ </item>
+ <item>
+ <term>Precompiled Headers</term>
+ <description>Precompiled Header File</description>
+ </item>
+ <item>
+ <term>Output Files</term>
+ <description>Assembler Output</description>
+ </item>
+ <item>
+ <term>Output Files</term>
+ <description>ASM List Location</description>
+ </item>
+ <item>
+ <term>Browse Information</term>
+ <description>Enable Browse Information</description>
+ </item>
+ <item>
+ <term>Browse Information</term>
+ <description>Browse File</description>
+ </item>
+ <item>
+ <term>Advanced</term>
+ <description>Force Includes (/FI[name])</description>
+ </item>
+ <item>
+ <term>Advanced</term>
+ <description>Force #using (/FU[name])</description>
+ </item>
+ <item>
+ <term>Advanced</term>
+ <description>Undefine Preprocessor Definitions (/U[macro])</description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcArgumentMap.CreateLinkerArgumentMap">
+ <summary>
+ Creates a mapping between configuration properties for the Visual
+ C++ linker and corresponding command-line arguments.
+ </summary>
+ <returns>
+ A mapping between configuration properties for the Visual C++
+ linker and corresponding command-line arguments.
+ </returns>
+ <remarks>
+ <para>
+ The following configuration properties are processed by
+ <see cref="T:NAnt.VSNet.VcProject"/>:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Category</term>
+ <description>Property</description>
+ </listheader>
+ <item>
+ <term>General</term>
+ <description>Output File (/OUT:[file])</description>
+ </item>
+ <item>
+ <term>General</term>
+ <description>Additional Library Directories (/LIBPATH:[dir])</description>
+ </item>
+ <item>
+ <term>Input</term>
+ <description>Additional Dependencies</description>
+ </item>
+ <item>
+ <term>Input</term>
+ <description>Add Module to Assembly (/ASSEMBLYMODULE:file)</description>
+ </item>
+ <item>
+ <term>Input</term>
+ <description>Embed Managed Resource File (/ASSEMBLYRESOURCE:file)</description>
+ </item>
+ <item>
+ <term>Debugging</term>
+ <description>Generate Debug Info (/DEBUG)</description>
+ </item>
+ <item>
+ <term>Debugging</term>
+ <description>Generate Program Database File (/PDB:name)</description>
+ </item>
+ <item>
+ <term>Debugging</term>
+ <description>Generate Map File (/MAP)</description>
+ </item>
+ <item>
+ <term>Debugging</term>
+ <description>Map File Name (/MAP:[filename])</description>
+ </item>
+ <item>
+ <term>System</term>
+ <description>Heap Reserve Size (/HEAP:reserve)</description>
+ </item>
+ <item>
+ <term>System</term>
+ <description>Heap Commit Size (/HEAP:reserve, commit)</description>
+ </item>
+ <item>
+ <term>System</term>
+ <description>Stack Reserve Size (/STACK:reserve)</description>
+ </item>
+ <item>
+ <term>System</term>
+ <description>Stack Commit Size (/STACK:reserve, commit)</description>
+ </item>
+ </list>
+ <para>
+ The following configuration properties are ignored:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Category</term>
+ <description>Property</description>
+ </listheader>
+ <item>
+ <term>General</term>
+ <description>Show Progress (/VERBOSE, /VERBOSE:LIB)</description>
+ </item>
+ <item>
+ <term>General</term>
+ <description>Suppress Startup Banner (/NOLOGO)</description>
+ </item>
+ </list>
+ <para>
+ Support for the following configuration properties still needs to
+ be implemented:
+ </para>
+ <list type="table">
+ <listheader>
+ <term>Category</term>
+ <description>Property</description>
+ </listheader>
+ <item>
+ <term>General</term>
+ <description>Ignore Import Library</description>
+ </item>
+ <item>
+ <term>General</term>
+ <description>Register Output</description>
+ </item>
+ <item>
+ <term>Input</term>
+ <description>Delay Loaded DLLs (/DELAYLOAD:[dll_name])</description>
+ </item>
+ <item>
+ <term>Embedded IDL</term>
+ <description>MIDL Commands (/MIDL:[file])</description>
+ </item>
+ </list>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcArgumentMap.VcArgument.Name">
+ <summary>
+ Gets the name of the command-line argument.
+ </summary>
+ <value>
+ The name of the command-line argument.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.VcArgumentMap.LinkerStringArgument">
+ <summary>
+ Represents a command-line arguments of which the trailing backslashes
+ in the value should be duplicated.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.VcArgumentMap.QuotedLinkerStringArgument">
+ <summary>
+ Represents a command-line argument of which the value should be
+ quoted, and of which trailing backslahes should be duplicated.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcArgumentMap.VcBoolArgument.Match">
+ <summary>
+ Gets the string that the configuration setting should match in
+ order for the command line argument to be set.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.VcArgumentMap.ArgGroup">
+ <summary>
+ Allow us to assign an argument to a specific group.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcArgumentMap.ArgGroup.Unassigned">
+ <summary>
+ The argument is not assigned to any group.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcArgumentMap.ArgGroup.OptiIgnoreGroup">
+ <summary>
+ The argument is ignored when the optimization level is set to
+ <b>Minimum Size</b> (1) or <b>Maximum Size</b> (2).
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcAssemblyReference.ResolveAssemblyReference">
+ <summary>
+ Resolves an assembly reference.
+ </summary>
+ <returns>
+ The full path to the resolved assembly, or <see langword="null" />
+ if the assembly reference could not be resolved.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.VcAssemblyReference.EvaluateMacro(System.Text.RegularExpressions.Match)">
+ <summary>
+ Is called each time a regular expression match is found during a
+ <see cref="M:Regex.Replace(string, MatchEvaluator)"/> operation.
+ </summary>
+ <param name="m">The <see cref="T:System.Text.RegularExpressions.Match"/> resulting from a single regular expression match during a <see cref="M:Regex.Replace(string, MatchEvaluator)"/>.</param>
+ <returns>
+ The expanded <see cref="T:System.Text.RegularExpressions.Match"/>.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">The macro is not supported.</exception>
+ <exception cref="T:System.NotImplementedException">Expansion of a given macro is not yet implemented.</exception>
+ </member>
+ <member name="P:NAnt.VSNet.VcAssemblyReference.Name">
+ <summary>
+ Gets the name of the referenced assembly.
+ </summary>
+ <value>
+ The name of the referenced assembly, or <see langword="null" /> if
+ the name could not be determined.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.VcConfigurationBase">
+ <summary>
+ A single build configuration for a Visual C++ project or for a specific
+ file in the project.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcConfigurationBase.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The macro is not supported.</para>
+ <para>-or-</para>
+ <para>The macro is not implemented.</para>
+ <para>-or-</para>
+ <para>The macro cannot be expanded.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VcConfigurationBase.GetToolSetting(System.String,System.String)">
+ <summary>
+ Gets the value of a given setting for a specified tool.
+ </summary>
+ <param name="toolName">The name of the tool.</param>
+ <param name="settingName">The name of the setting.</param>
+ <returns>
+ The value of a setting for the specified tool, or <see langword="null"/>
+ if the setting is not defined for the specified tool.
+ </returns>
+ <remarks>
+ An empty setting value, which is used as a means to override the
+ project default, will be returned as a empty <see cref="T:System.String"/>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcConfigurationBase.GetToolSetting(System.String,System.String,System.String)">
+ <summary>
+ Gets the value of a given setting for a specified tool.
+ </summary>
+ <param name="toolName">The name of the tool.</param>
+ <param name="settingName">The name of the setting.</param>
+ <param name="defaultValue">The value to return if setting is not defined.</param>
+ <returns>
+ The value of a setting for the specified tool, or
+ <paramref name="defaultValue"/> if the setting is not defined for
+ the specified tool.
+ </returns>
+ <remarks>
+ An empty setting value, which is used as a means to override the
+ project default, will be returned as a empty <see cref="T:System.String"/>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.IntermediateDir">
+ <summary>
+ Gets the intermediate directory, specified relative to project
+ directory.
+ </summary>
+ <value>
+ The intermediate directory, specified relative to project directory.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.ReferencesPath">
+ <summary>
+ Gets a comma-separated list of directories to scan for assembly
+ references.
+ </summary>
+ <value>
+ A comma-separated list of directories to scan for assembly
+ references, or <see langword="null" /> if no additional directories
+ should scanned.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.FullName">
+ <summary>
+ Gets the name of the configuration, including the platform it
+ targets.
+ </summary>
+ <value>
+ Tthe name of the configuration, including the platform it targets.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.OutputDir">
+ <summary>
+ Gets the output directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.BuildPath">
+ <summary>
+ Gets the path in which the output file will be created before its
+ copied to the actual output path.
+ </summary>
+ <remarks>
+ For Visual C++ projects, the output file will be immediately
+ created in the output path.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.Name">
+ <summary>
+ Gets the name of the configuration.
+ </summary>
+ <value>
+ The name of the configuration.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcConfigurationBase.PlatformName">
+ <summary>
+ Gets the platform that the configuration targets.
+ </summary>
+ <value>
+ The platform targeted by the configuration.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.VcFileConfiguration">
+ <summary>
+ Represents the configuration of a file.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcFileConfiguration.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The macro is not supported.</para>
+ <para>-or-</para>
+ <para>The macro is not implemented.</para>
+ <para>-or-</para>
+ <para>The macro cannot be expanded.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VcFileConfiguration.GetToolSetting(System.String,System.String,System.String)">
+ <summary>
+ Gets the value of a given setting for a specified tool.
+ </summary>
+ <param name="toolName">The name of the tool.</param>
+ <param name="settingName">The name of the setting.</param>
+ <param name="projectDefault">The value to return if setting is not defined in both the file and project configuration.</param>
+ <returns>
+ The value of a setting for the specified tool, or
+ <paramref name="settingName"/> if the setting is not defined in
+ both the file and project configuration.
+ </returns>
+ <remarks>
+ <para>
+ If the setting is not defined in the file configuration, then
+ the project level setting will be used.
+ </para>
+ <para>
+ An empty setting value, which is used as a means to override the
+ project default, will be returned as a empty <see cref="T:System.String"/>.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcFileConfiguration.ExcludeFromBuild">
+ <summary>
+ Gets a value indication whether the file should be excluded from
+ the build for this configuration.
+ </summary>
+ <value>
+ <see langword="true" /> if the file should be excluded from the
+ build for this configuration; otherwise, <see langword="false" />.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcFileConfiguration.RelativePath">
+ <summary>
+ Gets the relative path of the file.
+ </summary>
+ <value>
+ The path of the file relative to the project directory.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcFileConfiguration.RelativeOutputDir">
+ <summary>
+ Get the path of the output directory relative to the project
+ directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcFileConfiguration.IntermediateDir">
+ <summary>
+ Gets the intermediate directory, specified relative to project
+ directory.
+ </summary>
+ <value>
+ The intermediate directory, specified relative to project directory.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcFileConfiguration.OutputPath">
+ <summary>
+ Gets the path for the output file.
+ </summary>
+ <value>
+ The path for the output file, or <see langword="null" /> if there's
+ no output file for this configuration.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcFileConfiguration.ReferencesPath">
+ <summary>
+ Gets a comma-separated list of directories to scan for assembly
+ references.
+ </summary>
+ <value>
+ A comma-separated list of directories to scan for assembly
+ references, or <see langword="null" /> if no additional directories
+ should scanned.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.VcProject">
+ <summary>
+ Visual C++ project.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether building the project for the specified
+ build configuration results in managed output.
+ </summary>
+ <param name="solutionConfiguration">The solution configuration that is built.</param>
+ <returns>
+ <see langword="true" /> if the project output for the specified build
+ configuration is either a Dynamic Library (dll) or an Application
+ (exe), and Managed Extensions are enabled; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.VerifyProjectXml(System.Xml.XmlElement)">
+ <summary>
+ Verifies whether the specified XML fragment represents a valid project
+ that is supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project file.</param>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The XML fragment is not supported by this <see cref="T:NAnt.VSNet.ProjectBase"/>.</para>
+ <para>-or-</para>
+ <para>The XML fragment does not represent a valid project (for this <see cref="T:NAnt.VSNet.ProjectBase"/>).</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="docElement">The document element of the project.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro or <see langword="null" /> if the macro is not
+ supported.
+ </returns>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.BuildResourceFiles(System.Collections.ArrayList,NAnt.VSNet.VcProjectConfiguration,NAnt.VSNet.VcConfigurationBase)">
+ <summary>
+ Build resource files for the given configuration.
+ </summary>
+ <param name="fileNames">The resource files to build.</param>
+ <param name="projectConfig">The project configuration.</param>
+ <param name="fileConfig">The build configuration.</param>
+ <remarks>
+ TODO: refactor this as we should always get only one element in the
+ <paramref name="fileNames" /> list. Each res file should be built
+ with its own file configuration.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.BuildIDLFiles(System.Collections.ArrayList,NAnt.VSNet.VcProjectConfiguration,NAnt.VSNet.VcConfigurationBase)">
+ <summary>
+ Build Interface Definition Language files for the given
+ configuration.
+ </summary>
+ <param name="fileNames">The IDL files to build.</param>
+ <param name="projectConfig">The project configuration.</param>
+ <param name="fileConfig">The build configuration.</param>
+ <remarks>
+ TODO: refactor this as we should always get only one element in the
+ <paramref name="fileNames" /> list. Each IDL file should be built
+ with its own file configuration.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.MergeToolSetting(NAnt.VSNet.VcProjectConfiguration,NAnt.VSNet.VcConfigurationBase,System.String,System.String)">
+ <summary>
+ Merges the specified tool setting of <paramref name="projectConfig" />
+ with <paramref name="fileConfig" />.
+ </summary>
+ <remarks>
+ The merge is suppressed when the flag $(noinherit) is defined in
+ <paramref name="fileConfig" />.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.GetObjectFile(NAnt.VSNet.VcConfigurationBase)">
+ <summary>
+ Gets the absolute path to the object file or directory.
+ </summary>
+ <param name="fileConfig">The build configuration</param>
+ <returns>
+ The absolute path to the object file or directory, or
+ </returns>
+ <remarks>
+ We use an absolute path for the object file, otherwise
+ <c>&lt;cl&gt;</c> assumes a location relative to the output
+ directory - not the project directory.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.IsSupported(System.Xml.XmlElement)">
+ <summary>
+ Returns a value indicating whether the project represented by the
+ specified XML fragment is supported by <see cref="T:NAnt.VSNet.VcProject"/>.
+ </summary>
+ <param name="docElement">XML fragment representing the project to check.</param>
+ <returns>
+ <see langword="true"/> if <see cref="T:NAnt.VSNet.VcProject"/> supports the
+ specified project; otherwise, <see langword="false"/>.
+ </returns>
+ <remarks>
+ <para>
+ A project is identified as as Visual C++ project, if the XML
+ fragment at least has the following information:
+ </para>
+ <code>
+ <![CDATA[
+ <VisualStudioProject
+ ProjectType="Visual C++"
+ Version="..."
+ ...
+ >
+ </VisualStudioProject>
+ ]]>
+ </code>
+ </remarks>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.CleanPath(System.String)">
+ <summary>
+ Removes leading and trailing quotes from the specified path.
+ </summary>
+ <param name="path">The path to clean.</param>
+ </member>
+ <member name="M:NAnt.VSNet.VcProject.GetProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Returns the Visual Studio product version of the specified project
+ XML fragment.
+ </summary>
+ <param name="docElement">XML fragment representing the project to check.</param>
+ <returns>
+ The Visual Studio product version of the specified project XML
+ fragment.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The product version could not be determined.</para>
+ <para>-or-</para>
+ <para>The product version is not supported.</para>
+ </exception>
+ </member>
+ <member name="F:NAnt.VSNet.VcProject._projectFiles">
+ <summary>
+ Holds the files included in the project.
+ </summary>
+ <remarks>
+ <para>
+ For project files with no specific file configuration, the relative
+ path is added to the list.
+ </para>
+ <para>
+ For project files that have a specific file configuration, a
+ <see cref="T:System.Collections.Hashtable"/> containing the <see cref="T:NAnt.VSNet.VcFileConfiguration"/>
+ instance representing the file configurations is added.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.Name">
+ <summary>
+ Gets the name of the Visual C++ project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.Type">
+ <summary>
+ Gets the type of the project.
+ </summary>
+ <value>
+ The type of the project.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.ProjectPath">
+ <summary>
+ Gets the path of the Visual C++ project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.ProjectDirectory">
+ <summary>
+ Gets the directory containing the VS.NET project.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.ProjectLocation">
+ <summary>
+ Get the location of the project.
+ </summary>
+ <value>
+ <see cref="T:NAnt.VSNet.ProjectLocation.Local" />.
+ </value>
+ <remarks>
+ For now, we only support local Visual C++ projects.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.ObjectDir">
+ <summary>
+ Get the directory in which intermediate build output that is not
+ specific to the build configuration will be stored.
+ </summary>
+ <remarks>
+ This is a directory relative to the project directory,
+ named <c>temp\</c>.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProject.Guid">
+ <summary>
+ Gets or sets the unique identifier of the Visual C++ project.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.VcProjectConfiguration">
+ <summary>
+ Represents a Visual C++ project configuration.
+ </summary>
+ </member>
+ <member name="M:NAnt.VSNet.VcProjectConfiguration.ExpandMacro(System.String)">
+ <summary>
+ Expands the given macro.
+ </summary>
+ <param name="macro">The macro to expand.</param>
+ <returns>
+ The expanded macro.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ <para>The macro is not supported.</para>
+ <para>-or-</para>
+ <para>The macro is not implemented.</para>
+ <para>-or-</para>
+ <para>The macro cannot be expanded.</para>
+ </exception>
+ <exception cref="T:System.NotImplementedException">
+ <para>Expansion of a given macro is not yet implemented.</para>
+ </exception>
+ </member>
+ <member name="M:NAnt.VSNet.VcProjectConfiguration.GetXmlAttributeValue(System.Xml.XmlNode,System.String)">
+ <summary>
+ Gets the value of the specified attribute from the specified node.
+ </summary>
+ <param name="xmlNode">The node of which the attribute value should be retrieved.</param>
+ <param name="attributeName">The attribute of which the value should be returned.</param>
+ <returns>
+ The value of the attribute with the specified name or <see langword="null" />
+ if the attribute does not exist or has no value.
+ </returns>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration._outputPath">
+ <summary>
+ Holds the output path for this build configuration.
+ </summary>
+ <remarks>
+ Lazy initialized by <see cref="M:NAnt.VSNet.VcProjectConfiguration.Initialize"/>.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration._objFiles">
+ <summary>
+ Holds list of files to link in the order in which they are defined
+ in the project file.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration._sourceConfigs">
+ <summary>
+ Holds the C++ sources for each build configuration.
+ </summary>
+ <remarks>
+ The key of the hashtable is a build configuration, and the
+ value is an ArrayList holding the C++ source files for that
+ build configuration.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration._rcConfigs">
+ <summary>
+ Holds the resources for each build configuration.
+ </summary>
+ <remarks>
+ The key of the hashtable is a build configuration, and the
+ value is an ArrayList holding the resources files for that
+ build configuration.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration._idlConfigs">
+ <summary>
+ Holds the IDL files for each build configuration.
+ </summary>
+ <remarks>
+ The key of the hashtable is a build configuration, and the
+ value is an ArrayList holding the IDL files for that build
+ configuration.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.CharacterSet">
+ <summary>
+ Tells the compiler which character set to use.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.ManagedExtensions">
+ <summary>
+ Gets a value indicating whether Managed Extensions for C++ are
+ enabled.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.UseOfMFC">
+ <summary>
+ Gets a value indicating how MFC is used by the configuration.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.UseOfATL">
+ <summary>
+ Gets a value indicating how ATL is used by the configuration.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.ObjFiles">
+ <summary>
+ Gets the list of files to link in the order in which they are
+ defined in the project file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.SourceConfigs">
+ <summary>
+ Holds the C++ sources for each build configuration.
+ </summary>
+ <remarks>
+ The key of the hashtable is a build configuration, and the
+ value is an ArrayList holding the C++ source files for that
+ build configuration.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.RcConfigs">
+ <summary>
+ Gets the resources for each build configuration.
+ </summary>
+ <remarks>
+ The key of the hashtable is a build configuration, and the
+ value is an ArrayList holding the resources files for that
+ build configuration.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.IdlConfigs">
+ <summary>
+ Get the IDL files for each build configuration.
+ </summary>
+ <remarks>
+ The key of the hashtable is a build configuration, and the
+ value is an ArrayList holding the IDL files for that build
+ configuration.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.TargetPath">
+ <summary>
+ Gets the target path for usage in macro expansion.
+ </summary>
+ <value>
+ The target path, or a zero-length string if there's no output file
+ for this configuration.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.ObjectDir">
+ <summary>
+ Get the directory in which intermediate build output will be stored
+ for this configuration.
+ </summary>
+ <remarks>
+ <para>
+ This is a directory relative to the project directory named
+ <c>obj\&lt;configuration name&gt;</c>.
+ </para>
+ <para>
+ <c>.resx</c> and <c>.licx</c> files will only be recompiled if the
+ compiled resource files in the <see cref="P:NAnt.VSNet.VcProjectConfiguration.ObjectDir"/> are not
+ uptodate.
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.RelativeOutputDir">
+ <summary>
+ Get the path of the output directory relative to the project
+ directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.IntermediateDir">
+ <summary>
+ Gets the intermediate directory, specified relative to project
+ directory.
+ </summary>
+ <value>
+ The intermediate directory, specified relative to project directory.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.OutputPath">
+ <summary>
+ Gets the absolute path for the output file.
+ </summary>
+ <value>
+ The absolute path for the output file, or <see langword="null" />
+ if there's no output file for this configuration.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.ReferencesPath">
+ <summary>
+ Gets a comma-separated list of directories to scan for assembly
+ references.
+ </summary>
+ <value>
+ A comma-separated list of directories to scan for assembly
+ references, or <see langword="null" /> if no additional directories
+ should scanned.
+ </value>
+ </member>
+ <member name="T:NAnt.VSNet.VcProjectConfiguration.ConfigurationType">
+ <summary>
+ The type of output for a given configuration.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration.ConfigurationType.Makefile">
+ <summary>
+ A Makefile.
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration.ConfigurationType.Application">
+ <summary>
+ Application (.exe).
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration.ConfigurationType.DynamicLibrary">
+ <summary>
+ Dynamic Library (.dll).
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration.ConfigurationType.StaticLibrary">
+ <summary>
+ Static Library (.lib).
+ </summary>
+ </member>
+ <member name="F:NAnt.VSNet.VcProjectConfiguration.ConfigurationType.Utility">
+ <summary>
+ Utility.
+ </summary>
+ </member>
+ <member name="P:NAnt.VSNet.VcProjectConfiguration.LinkerConfig.ImportLibrary">
+ <summary>
+ Gets a <see cref="T:System.IO.FileInfo"/> instance representing the
+ absolute path to the import library to generate.
+ </summary>
+ <value>
+ A <see cref="T:System.IO.FileInfo"/> representing the absolute path to the
+ import library to generate, or <see langword="null"/> if no
+ import library must be generated.
+ </value>
+ </member>
+ <member name="M:NAnt.VSNet.VcProjectReference.IsManaged(NAnt.VSNet.Configuration)">
+ <summary>
+ Gets a value indicating whether the reference is managed for the
+ specified configuration.
+ </summary>
+ <param name="config">The build configuration of the reference.</param>
+ <returns>
+ <see langword="true" /> if the reference is managed for the
+ specified configuration; otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.Name">
+ <summary>
+ Gets the name of the referenced assembly.
+ </summary>
+ <value>
+ The name of the referenced assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.WrapperTool">
+ <summary>
+ Gets the name of the tool that should be used to create the
+ <see cref="P:NAnt.VSNet.VcWrapperReference.WrapperAssembly"/>.
+ </summary>
+ <value>
+ The name of the tool that should be used to create the
+ <see cref="P:NAnt.VSNet.VcWrapperReference.WrapperAssembly"/>.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.WrapperAssembly">
+ <summary>
+ Gets the path of the wrapper assembly.
+ </summary>
+ <value>
+ The path of the wrapper assembly.
+ </value>
+ <remarks>
+ The wrapper assembly is stored in the object directory of the
+ project.
+ </remarks>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.PrimaryInteropAssembly">
+ <summary>
+ Gets the path of the Primary Interop Assembly.
+ </summary>
+ <value>
+ The path of the Primary Interop Assembly, or <see langword="null" />
+ if not available.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.TypeLibVersion">
+ <summary>
+ Gets the hex version of the type library as defined in the definition
+ of the reference.
+ </summary>
+ <value>
+ The hex version of the type library.
+ </value>
+ <exception cref="T:NAnt.Core.BuildException">The definition of the reference does not contain a "ControlVersion" attribute.</exception>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.TypeLibGuid">
+ <summary>
+ Gets the GUID of the type library as defined in the definition
+ of the reference.
+ </summary>
+ <value>
+ The GUID of the type library.
+ </value>
+ </member>
+ <member name="P:NAnt.VSNet.VcWrapperReference.TypeLibLocale">
+ <summary>
+ Gets the locale of the type library in hex notation.
+ </summary>
+ <value>
+ The locale of the type library.
+ </value>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.dll
new file mode 100755
index 0000000..4f6c39c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.xml
new file mode 100755
index 0000000..a8ab7a3
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.VisualCppTasks.xml
@@ -0,0 +1,1211 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.VisualCppTasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.VisualCpp.Tasks.ClTask">
+ <summary>
+ Compiles C/C++ programs using <c>cl.exe</c>, Microsoft's C/C++ compiler.
+ </summary>
+ <remarks>
+ <para>This task is intended for version 13.00.9466 of <c>cl.exe</c>.</para>
+ </remarks>
+ <example>
+ <para>Compiles <c>helloworld.cpp</c> for the Common Language Runtime.</para>
+ <code>
+ <![CDATA[
+ <cl outputdir="build" options="/clr">
+ <sources>
+ <include name="helloworld.cpp" />
+ </sources>
+ </cl>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Tasks.ClTask"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.ExecuteTask">
+ <summary>
+ Compiles the sources.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.NeedsCompiling">
+ <summary>
+ Determines if the sources need to be compiled.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.IsPchfileUpToDate">
+ <summary>
+ Determines whether the precompiled header file is up-to-date.
+ </summary>
+ <returns>
+ <see langword="true" /> if no precompiled header file was specified;
+ otherwise, <see langword="false" />.
+ </returns>
+ <remarks>
+ In order to determine accurately whether the precompile header file
+ is up-to-date, we'd need scan all the header files that are pulled
+ in. As this is not implemented right now, its safer to always
+ recompile.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.FindUpdatedInclude(System.String,System.DateTime)">
+ <summary>
+ Determines whether any file that are includes in the specified
+ source file has been updated after the obj was compiled.
+ </summary>
+ <param name="srcFileName">The source file to check.</param>
+ <param name="objLastWriteTime">The last write time of the compiled obj.</param>
+ <returns>
+ The full path to the include file that was modified after the obj
+ was compiled, or <see langword="null" /> if no include files were
+ modified since the obj was compiled.
+ </returns>
+ <remarks>
+ <para>
+ To determine what includes are defined in a source file, conditional
+ directives are not honored.
+ </para>
+ <para>
+ If a given include cannot be resolved to an existing file, then
+ it will be considered stable.
+ </para>
+ </remarks>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.QuoteArgumentValue(System.String)">
+ <summary>
+ Quotes an argument value and duplicates trailing backslahes.
+ </summary>
+ <param name="value">The argument value to quote.</param>
+ <returns>
+ The quotes argument value.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.ClTask.GetObjOutputFile(System.String,System.String)">
+ <summary>
+ Determines the file name of the OBJ file for the specified source
+ file.
+ </summary>
+ <param name="srcFile">The source file for which the OBJ file should be determined.</param>
+ <param name="objectPath">The path of the object file.</param>
+ <returns>
+ The file name of the OBJ file for the specified source file.
+ </returns>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.OutputDir">
+ <summary>
+ Directory where all output files are placed.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.PchFile">
+ <summary>
+ Specifies the path and/or name of the generated precompiled header
+ file - given either relative to <see cref="P:NAnt.VisualCpp.Tasks.ClTask.OutputDir"/> or as an
+ absolute path.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.PchThroughFile">
+ <summary>
+ The path of the boundary file when generating/using the
+ specified <see cref="P:NAnt.VisualCpp.Tasks.ClTask.PchFile"/>. If a precompiled header file is
+ not specified then this attribute is ignored.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.PchMode">
+ <summary>
+ The mode in which the specified <see cref="P:NAnt.VisualCpp.Tasks.ClTask.PchFile"/> (if any) is
+ used. The default is <see cref="F:NAnt.VisualCpp.Tasks.ClTask.PrecompiledHeaderMode.Use"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.ManagedExtensions">
+ <summary>
+ Specifies whether Managed Extensions for C++ should be enabled.
+ The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.CharacterSet">
+ <summary>
+ Tells the compiler to use the specified character set.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.Options">
+ <summary>
+ Options to pass to the compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.Sources">
+ <summary>
+ The list of files to compile.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.IncludeDirs">
+ <summary>
+ The list of directories in which to search for include files.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.MetaDataIncludeDirs">
+ <summary>
+ Directories that the compiler will search to resolve file references
+ passed to the <c>#using</c> directive.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.ForcedUsingFiles">
+ <summary>
+ Specifies metadata files to reference in this compilation as an
+ alternative to passing a file name to <c>#using</c> in source code.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.Defines">
+ <summary>
+ Macro definitions to pass to cl.exe.
+ Each entry will generate a /D
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.Undefines">
+ <summary>
+ Macro undefines (/U) to pass to cl.exe.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.ObjectFile">
+ <summary>
+ A name to override the default object file name; can be either a file
+ or directory name. The default is the output directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.ProgramDatabaseFile">
+ <summary>
+ A name for the compiler-generated PDB file; can be either a file or
+ directory name. The default is the output directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>The filename of the external program.</value>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.ClTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.VisualCpp.Tasks.ClTask.PrecompiledHeaderMode">
+ <summary>
+ Defines the supported modes for the use of precompiled header files.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Tasks.ClTask.PrecompiledHeaderMode.Create">
+ <summary>
+ Create a precompiled header file.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /Yc.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VisualCpp.Tasks.ClTask.PrecompiledHeaderMode.AutoCreate">
+ <summary>
+ Automatically create a precompiled header file if necessary.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /YX.
+ </remarks>
+ </member>
+ <member name="F:NAnt.VisualCpp.Tasks.ClTask.PrecompiledHeaderMode.Use">
+ <summary>
+ Use a (previously generated) precompiled header file.
+ </summary>
+ <remarks>
+ For further information on the use of this option
+ see the Microsoft documentation on the C++ compiler flag /Yu.
+ </remarks>
+ </member>
+ <member name="T:NAnt.VisualCpp.Tasks.LibTask">
+ <summary>
+ Run <c>lib.exe</c>, Microsoft's Library Manager.
+ </summary>
+ <example>
+ <para>Create a library.</para>
+ <code>
+ <![CDATA[
+ <lib output="library.lib">
+ <sources>
+ <include name="library.obj" />
+ </sources>
+ </lib>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.LibTask.ExecuteTask">
+ <summary>
+ Creates the library.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.LibTask.NeedsCompiling">
+ <summary>
+ Determines if the sources need to be linked.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.Options">
+ <summary>
+ Options to pass to the compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.OutputFile">
+ <summary>
+ The output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.ModuleDefinitionFile">
+ <summary>
+ The module definition file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.Sources">
+ <summary>
+ The list of files to combine into the output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.Symbols">
+ <summary>
+ Symbols to add to the symbol table.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.IgnoreLibraries">
+ <summary>
+ Names of default libraries to ignore.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.LibDirs">
+ <summary>
+ The list of additional library directories to search.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>The filename of the external program.</value>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LibTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.VisualCpp.Tasks.LinkTask">
+ <summary>
+ Links files using <c>link.exe</c>, Microsoft's Incremental Linker.
+ </summary>
+ <remarks>
+ <para>This task is intended for version 7.00.9466 of <c>link.exe</c>.</para>
+ </remarks>
+ <example>
+ <para>
+ Combine all object files in the current directory into <c>helloworld.exe</c>.
+ </para>
+ <code>
+ <![CDATA[
+ <link output="helloworld.exe">
+ <sources>
+ <include name="*.obj" />
+ </sources>
+ </link>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.LinkTask.ExecuteTask">
+ <summary>
+ Links the sources.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.LinkTask.NeedsLinking">
+ <summary>
+ Determines if the output needs linking.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.LinkTask.QuoteArgumentValue(System.String)">
+ <summary>
+ Quotes an argument value and duplicates trailing backslahes.
+ </summary>
+ <param name="value">The argument value to quote.</param>
+ <returns>
+ The quotes argument value.
+ </returns>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.Options">
+ <summary>
+ Options to pass to the compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.Debug">
+ <summary>
+ Create debugging information for the .exe file or DLL. The default is
+ <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.OutputFile">
+ <summary>
+ The output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.ProgramDatabaseFile">
+ <summary>
+ A user-specified name for the program database (PDB) that the linker
+ creates. The default file name for the PDB has the base name of the
+ <see cref="P:NAnt.VisualCpp.Tasks.LinkTask.OutputFile"/> and the extension .pdb.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.ModuleDefinition">
+ <summary>
+ The name of a module-definition file (.def) to be passed to the
+ linker.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.DelayLoadedDlls">
+ <summary>
+ Specified DLLs for delay loading.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.Sources">
+ <summary>
+ The list of files to combine into the output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.LibDirs">
+ <summary>
+ The list of additional library directories to search.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.Modules">
+ <summary>
+ Link the specified modules into this assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.EmbeddedResources">
+ <summary>
+ Embed the specified resources into this assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.Symbols">
+ <summary>
+ Symbols to add to the symbol table.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.IgnoreLibraries">
+ <summary>
+ Names of libraries that you want the linker to ignore when it
+ resolves external references.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>The filename of the external program.</value>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.LinkTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.VisualCpp.Tasks.McTask">
+ <summary>
+ Compiles messages using mc.exe, Microsoft's Win32 message compiler.
+ </summary>
+ <example>
+ <para>
+ Compile <c>text.mc</c> using the default options.
+ </para>
+ <code>
+ <![CDATA[
+ <mc mcfile="text.mc"/>
+ ]]>
+ </code>
+ <para>
+ Compile <c>text.mc</c>, passing a path to store the header, the rc
+ file and some additonal options.
+ </para>
+ <code>
+ <![CDATA[
+ <mc mcfile="text.mc" headerpath=".\build" rcpath=".\build" options="-v -c -u"/>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.McTask.ExecuteTask">
+ <summary>
+ Compiles the sources.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.McTask.NeedsCompiling(System.String)">
+ <summary>
+ Determine if source files need re-building.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.McTask.Options">
+ <summary>
+ Options to pass to the compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.McTask.HeaderPath">
+ <summary>
+ Path to store header file. The default is the project base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.McTask.RCPath">
+ <summary>
+ Path to store RC file. The default is the project base directory.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.McTask.McFile">
+ <summary>
+ Input filename.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.McTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>
+ The filename of the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.McTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.VisualCpp.Tasks.MidlTask">
+ <summary>
+ This tasks allows you to run MIDL.exe.
+ </summary>
+ <remarks>
+ <para>
+ This task only supports a small subset of the MIDL.EXE command line
+ switches, but you can use the options element to specify any other
+ unsupported commands you want to specify.
+ </para>
+ </remarks>
+ <example>
+ <code>
+ <![CDATA[
+ <midl
+ env="win32"
+ Oi="cf"
+ tlb="${outputdir}\TempAtl.tlb"
+ header="${outputdir}\TempAtl.h"
+ iid="${outputdir}\TempAtl_i.c"
+ proxy="${outputdir}\TempAtl_p.c"
+ filename="TempAtl.idl"
+ >
+ <defines>
+ <define name="_DEBUG"/>
+ <define name="WIN32" value="1"/>
+ </defines>
+ <options>
+ <option name="/mktyplib203"/>
+ <option name="/error" value="allocation"/>
+ </options>
+ </midl>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.MidlTask.ExecuteTask">
+ <summary>
+ This is where the work is done.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.MidlTask.NeedsCompiling">
+ <summary>
+ Check output files to see if we need rebuilding.
+ </summary>
+ <see langword="true" /> if a rebuild is needed; otherwise,
+ <see langword="false" />.
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.MidlTask.NeedsCompiling(System.IO.FileInfo)">
+ <summary>
+ Check output files to see if we need rebuilding.
+ </summary>
+ <returns>
+ <see langword="true" /> if a rebuild is needed; otherwise,
+ <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.MidlTask.WriteResponseFile(System.IO.TextWriter)">
+ <summary>
+ Writes the response file for <c>midl.exe</c>.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Acf">
+ <summary>
+ The /acf switch allows the user to supply an
+ explicit ACF file name. The switch also
+ allows the use of different interface names in
+ the IDL and ACF files.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Align">
+ <summary>
+ The /align switch is functionally the same as the
+ MIDL /Zp option and is recognized by the MIDL compiler
+ solely for backward compatibility with MkTypLib.
+ </summary>
+ <remarks>The alignment value can be 1, 2, 4, or 8.</remarks>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.AppConfig">
+ <summary>
+ The /app_config switch selects application-configuration
+ mode, which allows you to use some ACF keywords in the
+ IDL file. With this MIDL compiler switch, you can omit
+ the ACF and specify an interface in a single IDL file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Char">
+ <summary>
+ The /char switch helps to ensure that the MIDL compiler
+ and C compiler operate together correctly for all char
+ and small types.
+ </summary>
+ <remarks>Can be one of signed | unsigned | ascii7 </remarks>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Client">
+ <summary>
+ The /client switch directs the MIDL compiler to generate
+ client-side C source files for an RPC interface
+ </summary>
+ <remarks>can be one of stub | none</remarks>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.CStub">
+ <summary>
+ The /cstub switch specifies the name of the client
+ stub file for an RPC interface.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.DllData">
+ <summary>
+ Specifies the file name for the generated dlldata file for a proxy
+ DLL. The default file name Dlldata.c is used if
+ <see cref="P:NAnt.VisualCpp.Tasks.MidlTask.DllData"/> is not specified.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Env">
+ <summary>
+ The /env switch selects the
+ environment in which the application runs.
+ </summary>
+ <remarks>It can take the values win32 and win64</remarks>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Oi">
+ <summary>
+ The /Oi switch directs the MIDL compiler to
+ use a fully-interpreted marshaling method.
+ The /Oic and /Oicf switches provide additional
+ performance enhancements.
+ </summary>
+ <remarks>
+ If you specify the Oi attribute, you must set it to
+ one of the values:
+ - Oi=""
+ - Oi="c"
+ - Oi="f"
+ - Oi="cf"
+ </remarks>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Tlb">
+ <summary>
+ Specifies a file name for the type library generated by the MIDL
+ compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Header">
+ <summary>
+ Specifies the name of the header file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Iid">
+ <summary>
+ Specifies the name of the interface identifier file for a COM
+ interface, overriding the default name obtained by adding _i.c
+ to the IDL file name.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Proxy">
+ <summary>
+ Specifies the name of the interface proxy file for a COM interface.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Filename">
+ <summary>
+ Name of .IDL file to process.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Options">
+ <summary>
+ Additional options to pass to midl.exe.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Defines">
+ <summary>
+ Macro definitions to pass to mdil.exe.
+ Each entry will generate a /D
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.Undefines">
+ <summary>
+ Macro undefines (/U) to pass to mdil.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.IncludeDirs">
+ <summary>
+ The list of directories in which to search for include files.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.ProgramFileName">
+ <summary>
+ Filename of program to execute
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.MidlTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.VisualCpp.Tasks.RcTask">
+ <summary>
+ Compiles resources using <c>rc.exe</c>, Microsoft's Win32 resource
+ compiler.
+ </summary>
+ <example>
+ <para>
+ Compile <c>text.rc</c> to <c>text.res</c> using the default options.
+ </para>
+ <code>
+ <![CDATA[
+ <rc rcfile="text.rc" output="text.res" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Compile <c>text.rc</c>, passing an additional option.
+ </para>
+ <code>
+ <![CDATA[
+ <rc rcfile="text.rc" options="/r"/>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.RcTask.ExecuteTask">
+ <summary>
+ Compile the resource file
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.RcTask.NeedsCompiling">
+ <summary>
+ Determines if the resource need compiling.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Tasks.RcTask.CheckResourceTimeStamp(System.String)">
+ <summary>
+ Check if a resource file has been updated.
+ </summary>
+ <param name="filePath"></param>
+ <returns></returns>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.Options">
+ <summary>
+ Options to pass to the compiler.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.OutputFile">
+ <summary>
+ Output file.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.RcFile">
+ <summary>
+ The resource file to compile.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.LangId">
+ <summary>
+ Default language ID.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.IncludeDirs">
+ <summary>
+ The list of directories in which to search for include files.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.Defines">
+ <summary>
+ Macro definitions to pass to rc.exe.
+ Each entry will generate a /d
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.ProgramFileName">
+ <summary>
+ Filename of program to execute
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Tasks.RcTask.ProgramArguments">
+ <summary>
+ Arguments of program to execute
+ </summary>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.CharacterSet">
+ <summary>
+ Defines the character sets that can be used by the C++ compiler.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Types.CharacterSet.NotSet">
+ <summary>
+ Have the compiler determine the character set.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Types.CharacterSet.Unicode">
+ <summary>
+ Unicode character set.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Types.CharacterSet.MultiByte">
+ <summary>
+ Multi-byte character set.
+ </summary>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.Library">
+ <summary>
+ Represents a library.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.Library.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.Library"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.Library.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.Library"/> class with
+ the specified name.
+ </summary>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.Library.LibraryName">
+ <summary>
+ The name of the library.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.Library.IfDefined">
+ <summary>
+ If <see langword="true" /> then the element will be processed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.Library.UnlessDefined">
+ <summary>
+ If <see langword="true" /> then the element will be skipped;
+ otherwise, processed. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.LibraryCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.VisualCpp.Types.Library"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.#ctor(NAnt.VisualCpp.Types.LibraryCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/> class
+ with the specified <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.#ctor(NAnt.VisualCpp.Types.Library[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/> class
+ with the specified array of <see cref="T:NAnt.VisualCpp.Types.Library"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.Add(NAnt.VisualCpp.Types.Library)">
+ <summary>
+ Adds a <see cref="T:NAnt.VisualCpp.Types.Library"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Library"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.AddRange(NAnt.VisualCpp.Types.Library[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VisualCpp.Types.Library"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.VisualCpp.Types.Library"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.AddRange(NAnt.VisualCpp.Types.LibraryCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.Contains(NAnt.VisualCpp.Types.Library)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VisualCpp.Types.Library"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Library"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.CopyTo(NAnt.VisualCpp.Types.Library[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.IndexOf(NAnt.VisualCpp.Types.Library)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.VisualCpp.Types.Library"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Library"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.VisualCpp.Types.Library"/>. If the <see cref="T:NAnt.VisualCpp.Types.Library"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.Insert(System.Int32,NAnt.VisualCpp.Types.Library)">
+ <summary>
+ Inserts a <see cref="T:NAnt.VisualCpp.Types.Library"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Library"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.VisualCpp.Types.LibraryEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryCollection.Remove(NAnt.VisualCpp.Types.Library)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Library"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.LibraryCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.LibraryEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.VisualCpp.Types.Library"/> elements of a <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryEnumerator.#ctor(NAnt.VisualCpp.Types.LibraryCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.LibraryEnumerator"/> class
+ with the specified <see cref="T:NAnt.VisualCpp.Types.LibraryCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.LibraryEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.LibraryEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.Symbol">
+ <summary>
+ Represents a symbol.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.Symbol.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.Symbol"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.Symbol.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.Symbol"/> class with
+ the specified name.
+ </summary>
+ <exception cref="T:System.ArgumentNullException"><paramref name="name"/> is <see langword="null"/>.</exception>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.Symbol.SymbolName">
+ <summary>
+ The name of the symbol.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.Symbol.IfDefined">
+ <summary>
+ If <see langword="true" /> then the element will be processed;
+ otherwise, skipped. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.Symbol.UnlessDefined">
+ <summary>
+ If <see langword="true" /> then the element will be skipped;
+ otherwise, processed. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.SymbolCollection">
+ <summary>
+ Contains a collection of <see cref="T:NAnt.VisualCpp.Types.Symbol"/> elements.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/> class.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.#ctor(NAnt.VisualCpp.Types.SymbolCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/> class
+ with the specified <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/> instance.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.#ctor(NAnt.VisualCpp.Types.Symbol[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/> class
+ with the specified array of <see cref="T:NAnt.VisualCpp.Types.Symbol"/> instances.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.Add(NAnt.VisualCpp.Types.Symbol)">
+ <summary>
+ Adds a <see cref="T:NAnt.VisualCpp.Types.Symbol"/> to the end of the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Symbol"/> to be added to the end of the collection.</param>
+ <returns>The position into which the new element was inserted.</returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.AddRange(NAnt.VisualCpp.Types.Symbol[])">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VisualCpp.Types.Symbol"/> array to the end of the collection.
+ </summary>
+ <param name="items">The array of <see cref="T:NAnt.VisualCpp.Types.Symbol"/> elements to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.AddRange(NAnt.VisualCpp.Types.SymbolCollection)">
+ <summary>
+ Adds the elements of a <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/> to the end of the collection.
+ </summary>
+ <param name="items">The <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/> to be added to the end of the collection.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.Contains(NAnt.VisualCpp.Types.Symbol)">
+ <summary>
+ Determines whether a <see cref="T:NAnt.VisualCpp.Types.Symbol"/> is in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Symbol"/> to locate in the collection.</param>
+ <returns>
+ <see langword="true"/> if <paramref name="item"/> is found in the
+ collection; otherwise, <see langword="false"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.CopyTo(NAnt.VisualCpp.Types.Symbol[],System.Int32)">
+ <summary>
+ Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array.
+ </summary>
+ <param name="array">The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing.</param>
+ <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.IndexOf(NAnt.VisualCpp.Types.Symbol)">
+ <summary>
+ Retrieves the index of a specified <see cref="T:NAnt.VisualCpp.Types.Symbol"/> object in the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Symbol"/> object for which the index is returned.</param>
+ <returns>
+ The index of the specified <see cref="T:NAnt.VisualCpp.Types.Symbol"/>. If the <see cref="T:NAnt.VisualCpp.Types.Symbol"/> is not currently a member of the collection, it returns -1.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.Insert(System.Int32,NAnt.VisualCpp.Types.Symbol)">
+ <summary>
+ Inserts a <see cref="T:NAnt.VisualCpp.Types.Symbol"/> into the collection at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Symbol"/> to insert.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that can iterate through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:NAnt.VisualCpp.Types.SymbolEnumerator"/> for the entire collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolCollection.Remove(NAnt.VisualCpp.Types.Symbol)">
+ <summary>
+ Removes a member from the collection.
+ </summary>
+ <param name="item">The <see cref="T:NAnt.VisualCpp.Types.Symbol"/> to remove from the collection.</param>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.SymbolCollection.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the element to get or set.</param>
+ </member>
+ <member name="T:NAnt.VisualCpp.Types.SymbolEnumerator">
+ <summary>
+ Enumerates the <see cref="T:NAnt.VisualCpp.Types.Symbol"/> elements of a <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/>.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolEnumerator.#ctor(NAnt.VisualCpp.Types.SymbolCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.VisualCpp.Types.SymbolEnumerator"/> class
+ with the specified <see cref="T:NAnt.VisualCpp.Types.SymbolCollection"/>.
+ </summary>
+ <param name="arguments">The collection that should be enumerated.</param>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolEnumerator.MoveNext">
+ <summary>
+ Advances the enumerator to the next element of the collection.
+ </summary>
+ <returns>
+ <see langword="true" /> if the enumerator was successfully advanced
+ to the next element; <see langword="false" /> if the enumerator has
+ passed the end of the collection.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Types.SymbolEnumerator.Reset">
+ <summary>
+ Sets the enumerator to its initial position, which is before the
+ first element in the collection.
+ </summary>
+ </member>
+ <member name="P:NAnt.VisualCpp.Types.SymbolEnumerator.Current">
+ <summary>
+ Gets the current element in the collection.
+ </summary>
+ <returns>
+ The current element in the collection.
+ </returns>
+ </member>
+ <member name="T:NAnt.VisualCpp.Util.BackslashProcessingMethod">
+ <summary>
+ Defines how to deal with backslashes in values of command line
+ arguments.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Util.BackslashProcessingMethod.None">
+ <summary>
+ Does not perform any processing on backslashes.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Util.BackslashProcessingMethod.Duplicate">
+ <summary>
+ Duplicates the trailing backslash.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Util.BackslashProcessingMethod.Fix">
+ <summary>
+ Fixes the trailing backslash by replaces trailing double backslashes
+ with only one backslash and removing single trailing backslashes.
+ </summary>
+ </member>
+ <member name="F:NAnt.VisualCpp.Util.BackslashProcessingMethod.Clean">
+ <summary>
+ Removes all the trailing backslashes.
+ </summary>
+ </member>
+ <member name="T:NAnt.VisualCpp.Util.ArgumentUtils">
+ <summary>
+ Groups a set of useful <see cref="T:System.String"/> manipulation methods for
+ command-line arguments.
+ </summary>
+ </member>
+ <member name="M:NAnt.VisualCpp.Util.ArgumentUtils.ProcessTrailingBackslash(System.String,NAnt.VisualCpp.Util.BackslashProcessingMethod)">
+ <summary>
+ Performs backslash processing on the specified value using a given
+ method.
+ </summary>
+ <param name="value">The <see cref="T:System.String"/> to process.</param>
+ <param name="processingMethod">The <see cref="T:NAnt.VisualCpp.Util.BackslashProcessingMethod"/> to use.</param>
+ <returns>
+ <paramref name="value"/> with backslashes processed using the given
+ <see cref="T:NAnt.VisualCpp.Util.BackslashProcessingMethod"/>.
+ </returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Util.ArgumentUtils.DuplicateTrailingBackslash(System.String)">
+ <summary>
+ Duplicates the trailing backslash.
+ </summary>
+ <param name="value">The input string to check and duplicate the trailing backslash if necessary.</param>
+ <returns>The result string after being processed.</returns>
+ <remarks>
+ Also duplicates trailing backslash in quoted value.
+ </remarks>
+ </member>
+ <member name="M:NAnt.VisualCpp.Util.ArgumentUtils.FixTrailingBackslash(System.String)">
+ <summary>
+ Fixes the trailing backslash. This function replaces the trailing double backslashes with
+ only one backslash. It also, removes the single trailing backslash.
+ </summary>
+ <param name="value">The input string.</param>
+ <returns>The result string after being processed.</returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Util.ArgumentUtils.CleanTrailingBackslash(System.String)">
+ <summary>
+ Removes all the trailing backslashes from the input.
+ </summary>
+ <param name="value">The input string.</param>
+ <returns>The result string without trailing backslashes.</returns>
+ </member>
+ <member name="M:NAnt.VisualCpp.Util.ArgumentUtils.QuoteArgumentValue(System.String,NAnt.VisualCpp.Util.BackslashProcessingMethod)">
+ <summary>
+ Quotes an argument value and processes backslashes using a given
+ <see cref="T:NAnt.VisualCpp.Util.BackslashProcessingMethod"/>.
+ </summary>
+ <param name="value">The argument value to quote.</param>
+ <param name="processingMethod">The <see cref="T:NAnt.VisualCpp.Util.BackslashProcessingMethod"/> to use.</param>
+ <returns>
+ The quoted argument value.
+ </returns>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.dll b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.dll
new file mode 100755
index 0000000..80ec5c1
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.xml
new file mode 100755
index 0000000..60d2848
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.Win32Tasks.xml
@@ -0,0 +1,800 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.Win32Tasks</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.Win32.Functions.CygpathFunctions">
+ <summary>
+ Groups a set of functions that convert Windows native filenames to
+ Cygwin POSIX-style pathnames and vice versa.
+ </summary>
+ <remarks>
+ It can be used when a Cygwin program needs to pass a file name to a
+ native Windows program, or expects to get a file name from a native
+ Windows program.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Win32.Functions.CygpathFunctions.#ctor(NAnt.Core.Project,NAnt.Core.PropertyDictionary)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Win32.Functions.CygpathFunctions"/>
+ class with the specified <see cref="T:NAnt.Core.Project"/> and properties.
+ </summary>
+ <param name="project">The <see cref="T:NAnt.Core.Project"/> in which the class is used.</param>
+ <param name="properties">The set of properties to use for macro expansion.</param>
+ </member>
+ <member name="M:NAnt.Win32.Functions.CygpathFunctions.GetDosPath(System.String)">
+ <summary>
+ Gets the DOS (short) form of the specified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>
+ The DOS (short) form of the specified path.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>cygpath</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> could not be converted to a short form.</exception>
+ </member>
+ <member name="M:NAnt.Win32.Functions.CygpathFunctions.GetUnixPath(System.String)">
+ <summary>
+ Gets the Unix form of the specified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>
+ The Unix form of the specified path.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>cygpath</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> could not be converted to a Unix form.</exception>
+ </member>
+ <member name="M:NAnt.Win32.Functions.CygpathFunctions.GetWindowsPath(System.String)">
+ <summary>
+ Gets the Windows form of the specified path.
+ </summary>
+ <param name="path">The path to convert.</param>
+ <returns>
+ The Windows form of the specified path.
+ </returns>
+ <exception cref="T:System.ComponentModel.Win32Exception"><c>cygpath</c> could not be started.</exception>
+ <exception cref="T:System.ArgumentException"><paramref name="path"/> could not be converted to a Windows form.</exception>
+ </member>
+ <member name="M:NAnt.Win32.Functions.CygpathFunctions.RunCygpathString(NAnt.Core.Types.Argument[])">
+ <summary>
+ Runs cygpath with the specified arguments and returns the result
+ as a <see cref="T:System.String"/>.
+ </summary>
+ <param name="args">The arguments to pass to cygpath.</param>
+ <returns>
+ The result of running cygpath with the specified arguments.
+ </returns>
+ </member>
+ <member name="M:NAnt.Win32.Functions.CygpathFunctions.GetTask(System.IO.Stream)">
+ <summary>
+ Factory method to return a new instance of ExecTask
+ </summary>
+ <param name="stream"></param>
+ <returns></returns>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.AxImpTask">
+ <summary>
+ Generates a Windows Forms Control that wraps ActiveX Controls defined
+ in an OCX.
+ </summary>
+ <example>
+ <code>
+ <![CDATA[
+ <aximp ocx="MyControl.ocx" output="MyFormsControl.dll" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.AxImpTask.ExecuteTask">
+ <summary>
+ Import the ActiveX control.
+ </summary>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.AxImpTask.NeedsCompiling">
+ <summary>
+ Determines whether the assembly needs to be created again.
+ </summary>
+ <returns>
+ <see langword="true" /> if the assembly needs to be created again;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.OcxFile">
+ <summary>
+ Filename of the .ocx file.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.OutputFile">
+ <summary>
+ Filename of the generated assembly.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.PublicKeyFile">
+ <summary>
+ Specifies the file containing the public key to use to sign the
+ resulting assembly.
+ </summary>
+ <value>
+ The file containing the public key to use to sign the resulting
+ assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.KeyFile">
+ <summary>
+ Specifies the publisher's official public/private key pair with which
+ the resulting assembly should be signed with a strong name.
+ </summary>
+ <value>
+ The keyfile to use to sign the resulting assembly with a strong name.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.KeyContainer">
+ <summary>
+ Specifies the key container in which the public/private key pair
+ should be found that should be used to sign the resulting assembly
+ with a strong name.
+ </summary>
+ <value>
+ The key container containing a public/private key pair that should
+ be used to sign the resulting assembly.
+ </value>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.DelaySign">
+ <summary>
+ Specifies to sign the resulting control using delayed signing.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.GenerateSource">
+ <summary>
+ Determines whether C# source code for the Windows Form wrapper should
+ be generated. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.RcwFile">
+ <summary>
+ Assembly to use for Runtime Callable Wrapper rather than generating
+ new one [.NET 1.1 or higher].
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.SupportsRcw">
+ <summary>
+ Indicates whether <c>aximp</c> supports using an existing Runtime
+ Callable Wrapper for a given target framework. The default is
+ <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.AxImpTask.ProgramArguments">
+ <summary>
+ Gets the command-line arguments for the external program.
+ </summary>
+ <value>
+ The command-line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.LocateSdkTask">
+ <summary>
+ Reads the most recent Windows SDK InstallationFolder key into a NAnt property
+ </summary>
+ <example>
+ <code>
+ <![CDATA[
+ <locatesdk property="dotNetFX" minsdk="v6.0" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.LocateSdkTask.ExecuteTask">
+ <summary>
+ locate the most recent WinSDK installed
+ </summary>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.LocateSdkTask.StringToVersion(System.String)">
+ <summary>
+ Converts a version expressed as a string into a Version object
+ </summary>
+ <param name="sdkVersion">
+ A <see cref="T:System.String"/> containing the version to convert.
+ </param>
+ <returns>
+ A <see cref="T:System.Version"/> object representing the version string.
+ </returns>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.LocateSdkTask.PropertyName">
+ <summary>
+ <para>
+ The property to set to the value stored in the InstalledFolder key of the located WinSDK version.
+ </para>
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.LocateSdkTask.MinWinSdkVersion">
+ <summary>
+ <para>
+ The minimum acceptable Windows SDK version.
+ </para>
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.LocateSdkTask.MaxWinSdkVersion">
+ <summary>
+ <para>
+ The maximum acceptable Windows SDK version.
+ </para>
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.LocateSdkTask.MinNetFxVersion">
+ <summary>
+ <para>
+ The minimum acceptable .NET sdk version.
+ </para>
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.LocateSdkTask.MaxNetFxVersion">
+ <summary>
+ <para>
+ The maximum acceptable .NET sdk version.
+ </para>
+ </summary>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.MonoRegistryTask">
+ <summary>
+ Reads the mono registry path into a NAnt property.
+ </summary>
+ <remarks>
+ The mono registry keyes can exist in one of two places depending on the platform. This
+ task will check to see which registry path that Mono is using.
+ </remarks>
+ <example>
+ <code>
+ <![CDATA[
+ <monoregistry property="mono.reg" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="F:NAnt.Win32.Tasks.MonoRegistryTask._defaultRegKey">
+ <summary>
+ The Mono reg key to default to if none of the keys in _regKeys are found
+ in the running machine.
+ </summary>
+ </member>
+ <member name="F:NAnt.Win32.Tasks.MonoRegistryTask._propName">
+ <summary>
+ Private property name to assign the Mono registry path to.
+ </summary>
+ </member>
+ <member name="F:NAnt.Win32.Tasks.MonoRegistryTask._regKeys">
+ <summary>
+ Private array of Mono registry paths to test in order.
+ </summary>
+ <remarks>
+ If new registry paths are used by the Mono team, add them to this array.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.MonoRegistryTask.ExecuteTask">
+ <summary>
+ Locates the appropriate Mono registry path to use.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.MonoRegistryTask.PropertyName">
+ <summary>
+ <para>
+ The property to set to the Mono registry path.
+ </para>
+ </summary>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.ReadRegistryTask">
+ <summary>
+ Reads a value or set of values from the Windows Registry into one or
+ more NAnt properties.
+ </summary>
+ <example>
+ <para>Read a single value from the registry.</para>
+ <code>
+ <![CDATA[
+ <readregistry property="sdkRoot" key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot" hive="LocalMachine" />
+ ]]>
+ </code>
+ <para>Read all the registry values in a key.</para>
+ <code>
+ <![CDATA[
+ <readregistry prefix="dotNetFX" key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot" hive="LocalMachine" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.ReadRegistryTask.ExecuteTask">
+ <summary>
+ read the specified registry value
+ </summary>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.ReadRegistryTask.LookupRegKey(System.String,Microsoft.Win32.RegistryHive[])">
+ <summary>
+ Returns the hive for a given key.
+ </summary>
+ <param name="key"></param>
+ <param name="registries"></param>
+ <returns>
+ The hive for a given key.
+ </returns>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.ReadRegistryTask.GetHiveKey(Microsoft.Win32.RegistryHive)">
+ <summary>
+ Returns the key for a given registry hive.
+ </summary>
+ <param name="hive">The registry hive to return the key for.</param>
+ <returns>
+ The key for a given registry hive.
+ </returns>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.ReadRegistryTask.PropertyName">
+ <summary>
+ <para>The property to set to the specified registry key value.</para>
+ <para>If this attribute is used then a single value will be read.</para>
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.ReadRegistryTask.PropertyPrefix">
+ <summary>
+ <para>The prefix to use for the specified registry key values.</para>
+ <para>If this attribute is used then all registry values will be read and stored as properties with this prefix.</para>
+ </summary>
+ <example>
+ <para>Registry values a, b, c will be turned into prefixa, prefixb, prefixc named properties</para>
+ </example>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.ReadRegistryTask.RegistryKey">
+ <summary>
+ The registry key to read, including the path.
+ </summary>
+ <example>
+ SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot
+ </example>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.ReadRegistryTask.RegistryHiveName">
+ <summary>
+ Space separated list of registry hives to search for <see cref="P:NAnt.Win32.Tasks.ReadRegistryTask.RegistryKey"/>.
+ For a list of possible values, see <see cref="T:Microsoft.Win32.RegistryHive"/>. The
+ default is <see cref="F:Microsoft.Win32.RegistryHive.LocalMachine"/>.
+ </summary>
+ <remarks>
+ <seealso cref="T:Microsoft.Win32.RegistryHive"/>
+ </remarks>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.RegAsmTask">
+ <summary>
+ Registers an assembly, or set of assemblies for use from COM clients.
+ </summary>
+ <remarks>
+ <para>
+ Refer to the <see href="ms-help://MS.VSCC/MS.MSDNVS/cptools/html/cpgrfassemblyregistrationtoolregasmexe.htm">Regasm</see>
+ documentation for more information on the regasm tool.
+ </para>
+ </remarks>
+ <example>
+ <para>
+ Register types in a single assembly.
+ </para>
+ <code>
+ <![CDATA[
+ <regasm assembly="myAssembly.dll" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Register types of an assembly and generate a type library containing
+ definitions of accessible types defined within the assembly.
+ </para>
+ <code>
+ <![CDATA[
+ <regasm assembly="myAssembly.dll" typelib="myAssembly.tlb" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Register types of set of assemblies at once, while specifying a set
+ of reference assemblies.
+ </para>
+ <code>
+ <![CDATA[
+ <regasm codebase="true">
+ <assemblies>
+ <include name="OutlookAddin.dll" />
+ <include name="OfficeCoreAddin.dll" />
+ </assemblies>
+ <references>
+ <include name="CommonTypes.dll" />
+ </references>
+ </regasm>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.RegAsmTask.PrepareProcess(System.Diagnostics.Process)">
+ <summary>
+ Updates the <see cref="T:System.Diagnostics.ProcessStartInfo"/> of the specified
+ <see cref="T:System.Diagnostics.Process"/>.
+ </summary>
+ <param name="process">The <see cref="T:System.Diagnostics.Process"/> of which the <see cref="T:System.Diagnostics.ProcessStartInfo"/> should be updated.</param>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.RegAsmTask.ExecuteTask">
+ <summary>
+ Registers or unregisters a single assembly, or a group of assemblies.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.AssemblyFile">
+ <summary>
+ The name of the file to register. This is provided as an alternate
+ to using the task's <see cref="P:NAnt.Win32.Tasks.RegAsmTask.Assemblies"/>.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.RegistryFile">
+ <summary>
+ Registry file to export to instead of entering the types directly
+ into the registry.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.CodeBase">
+ <summary>
+ Set the code base registry setting.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.Registered">
+ <summary>
+ Only refer to already registered type libraries.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.TypeLib">
+ <summary>
+ Export the assemblies to the specified type library and register it.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.Unregister">
+ <summary>
+ Unregister the assembly. The default is <see langword="false" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.Assemblies">
+ <summary>
+ The set of assemblies to register, or unregister.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.References">
+ <summary>
+ The set of assembly references.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.BaseDirectory">
+ <summary>
+ Gets the working directory for the application.
+ </summary>
+ <value>
+ The working directory for the application.
+ </value>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.ProgramArguments">
+ <summary>
+ Gets the command line arguments for the external program.
+ </summary>
+ <value>
+ The command line arguments for the external program.
+ </value>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.RegAsmTask.ProgramFileName">
+ <summary>
+ Gets the filename of the external program to start.
+ </summary>
+ <value>
+ The filename of the external program.
+ </value>
+ <remarks>
+ Override in derived classes to explicitly set the location of the
+ external tool.
+ </remarks>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.TlbExpTask">
+ <summary>
+ Exports a .NET assembly to a type library that can be used from unmanaged
+ code (wraps Microsoft's <c>tlbexp.exe</c>).
+ </summary>
+ <remarks>
+ <para>
+ <see href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryexportertlbexpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</see>
+ </para>
+ </remarks>
+ <example>
+ <para>Export <c>DotNetAssembly.dll</c> to <c>LegacyCOM.dll</c>.</para>
+ <code>
+ <![CDATA[
+ <tlbexp assembly="DotNetAssembly.dll" output="LegacyCOM.dll" />
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.TlbExpTask.ExecuteTask">
+ <summary>
+ Exports the type library.
+ </summary>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.TlbExpTask.NeedsCompiling">
+ <summary>
+ Determines whether the assembly needs to be exported to a type
+ library again.
+ </summary>
+ <returns>
+ <see langword="true" /> if the assembly needs to be exported to a
+ type library; otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbExpTask.AssemblyFile">
+ <summary>
+ Specifies the assembly for which to export a type library.
+ </summary>
+ <value>
+ The assembly for which to export a type library.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryexportertlbexpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbExpTask.OutputFile">
+ <summary>
+ Specifies the name of the type library file to generate.
+ </summary>
+ <value>
+ The name of the type library file to generate.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryexportertlbexpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbExpTask.NamesFile">
+ <summary>
+ Specifies the file used to determine capitalization of names in a
+ type library.
+ </summary>
+ <value>
+ The file used to determine capitalization of names in a type library.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryexportertlbexpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbExpTask.ProgramArguments">
+ <summary>
+ Gets the command line arguments for the external program.
+ </summary>
+ <value>
+ The command line arguments for the external program.
+ </value>
+ </member>
+ <member name="T:NAnt.Win32.Tasks.TlbImpTask">
+ <summary>
+ Imports a type library to a .NET assembly (wraps Microsoft's <c>tlbimp.exe</c>).
+ </summary>
+ <remarks>
+ <para>
+ This task lets you easily create interop assemblies. By default, it will
+ not reimport if the underlying COM TypeLib or reference has not changed.
+ </para>
+ <para>
+ <see href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</see>
+ </para>
+ </remarks>
+ <example>
+ <para>Import <c>LegacyCOM.dll</c> to <c>DotNetAssembly.dll</c>.</para>
+ <code>
+ <![CDATA[
+ <tlbimp typelib="LegacyCOM.dll" output="DotNetAssembly.dll" />
+ ]]>
+ </code>
+ </example>
+ <example>
+ <para>
+ Generate an assembly named &quot;Interop.MSVidCtlLib.dll&quot; for the
+ MS Video Control 1.0 Type Library, transforming any [out, retval]
+ parameters of methods on dispinterfaces in the type library into
+ return values in the managed library.
+ </para>
+ <code>
+ <![CDATA[
+ <tlbimp typelib="msvidctl.dll" output="Interop.MSVidCtlLib.dll" transform="dispret">
+ <references basedir="Interop">
+ <include name="Interop.TunerLib.dll" />
+ </references>
+ </tlbimp>
+ ]]>
+ </code>
+ </example>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.TlbImpTask.ExecuteTask">
+ <summary>
+ Imports the type library to a .NET assembly.
+ </summary>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.TlbImpTask.ExtractTypeLibPath(System.String)">
+ <summary>
+ Returns the path of the type library, removing the identifier of
+ the type library from the specified string.
+ </summary>
+ <param name="path">The path from which to extract the path of the type library.</param>
+ <returns>
+ The path of the type library without the type library identifier.
+ </returns>
+ <remarks>
+ An example of a path which includes the identifier of the type
+ library (in this case &quot;2&quot;) is
+ <c>C:\WINDOWS\system32\msvidctl.dll\2</c>.
+ </remarks>
+ </member>
+ <member name="M:NAnt.Win32.Tasks.TlbImpTask.NeedsCompiling">
+ <summary>
+ Determines whether the type library needs to be imported again.
+ </summary>
+ <returns>
+ <see langword="true" /> if the type library needs to be imported;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.OutputFile">
+ <summary>
+ Specifies the name of the output file.
+ </summary>
+ <value>
+ The name of the output file.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.Namespace">
+ <summary>
+ Specifies the namespace in which to produce the assembly.
+ </summary>
+ <value>
+ The namespace in which to produce the assembly.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.AsmVersion">
+ <summary>
+ Specifies the version number of the assembly to produce.
+ </summary>
+ <remarks>
+ <value>
+ The version number of the assembly to produce.
+ </value>
+ <para>
+ The version number should be in the format major.minor.build.revision.
+ </para>
+ <para>
+ <a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a>
+ </para>
+ </remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.DelaySign">
+ <summary>
+ Specifies whether the resulting assembly should be signed with a
+ strong name using delayed signing. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if the resulting assembly should be signed
+ with a strong name using delayed signing; otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.Primary">
+ <summary>
+ Specifies whether a primary interop assembly should be produced for
+ the specified type library. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if a primary interop assembly should be
+ produced; otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.PublicKeyFile">
+ <summary>
+ Specifies the file containing the public key to use to sign the
+ resulting assembly.
+ </summary>
+ <value>
+ The file containing the public key to use to sign the resulting
+ assembly.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.KeyFile">
+ <summary>
+ Specifies the publisher's official public/private key pair with which
+ the resulting assembly should be signed with a strong name.
+ </summary>
+ <value>
+ The keyfile to use to sign the resulting assembly with a strong name.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.KeyContainer">
+ <summary>
+ Specifies the key container in which the public/private key pair
+ should be found that should be used to sign the resulting assembly
+ with a strong name.
+ </summary>
+ <value>
+ The key container containing a public/private key pair that should
+ be used to sign the resulting assembly.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.References">
+ <summary>
+ Specifies the assembly files to use to resolve references to types
+ defined outside the current type library.
+ </summary>
+ <value>
+ The assembly files to use to resolve references to types defined
+ outside the current type library.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.StrictRef">
+ <summary>
+ Specifies whether a type library should not be imported if all
+ references within the current assembly or the reference assemblies
+ cannot be resolved. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if a type library should not be imported if
+ all references cannot be resolved; otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.SysArray">
+ <summary>
+ Specifies whether to import a COM style SafeArray as a managed
+ <see cref="T:System.Array" /> class type. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if a COM style SafeArray should be imported
+ as a managed <see cref="T:System.Array" /> class type; otherwise,
+ <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.Transform">
+ <summary>
+ Specifies how to transform the metadata [.NET 1.1 or higher].
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.TypeLib">
+ <summary>
+ Specifies the source type library that gets passed to the type
+ library importer.
+ </summary>
+ <value>
+ The source type library that gets passed to the type library
+ importer.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.Unsafe">
+ <summary>
+ Specifies whether interfaces should be produced without .NET Framework
+ security checks. The default is <see langword="false" />.
+ </summary>
+ <value>
+ <see langword="true" /> if interfaces without .NET Framework security
+ checks should be produced; otherwise, <see langword="false" />.
+ </value>
+ <remarks><a href="ms-help://MS.NETFrameworkSDK/cptools/html/cpgrftypelibraryimportertlbimpexe.htm">See the Microsoft.NET Framework SDK documentation for details.</a></remarks>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.SupportsTransform">
+ <summary>
+ Indicates whether <c>tlbimp</c> supports transforming metadata for
+ a given target framework. The default is <see langword="true" />.
+ </summary>
+ </member>
+ <member name="P:NAnt.Win32.Tasks.TlbImpTask.ProgramArguments">
+ <summary>
+ Gets the command line arguments for the external program.
+ </summary>
+ <value>
+ The command line arguments for the external program.
+ </value>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.exe b/NUnitLite-0.9.0/tools/nant/bin/NAnt.exe
new file mode 100755
index 0000000..55f9e29
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.exe
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.exe.config b/NUnitLite-0.9.0/tools/nant/bin/NAnt.exe.config
new file mode 100755
index 0000000..47629aa
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.exe.config
@@ -0,0 +1,3343 @@
+<?xml version="1.0"?>
+<configuration>
+ <!-- Leave this alone. Sets up configsectionhandler section -->
+ <configSections>
+ <section name="nant" type="NAnt.Core.ConfigurationSection, NAnt.Core" />
+ <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
+ </configSections>
+ <appSettings>
+ <!-- Used to indicate the location of the cache folder for shadow files -->
+ <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
+ <!-- Used to indicate that NAnt should shadow copy files in a cache folder near the executable -->
+ <add key="nant.shadowfiles" value="False" />
+ <!-- Used to indicate if cached files should be deleted when done running-->
+ <add key="nant.shadowfiles.cleanup" value="False" />
+ <!-- To enable internal log4net logging, uncomment the next line -->
+ <!-- <add key="log4net.Internal.Debug" value="true"/> -->
+ </appSettings>
+ <!-- nant config settings -->
+ <nant>
+ <frameworks>
+ <platform name="win32" default="auto">
+ <task-assemblies>
+ <!-- include NAnt task assemblies -->
+ <include name="*Tasks.dll" />
+ <!-- include NAnt test assemblies -->
+ <include name="*Tests.dll" />
+ <!-- include framework-neutral assemblies -->
+ <include name="extensions/common/neutral/**/*.dll" />
+ <!-- exclude Microsoft.NET specific task assembly -->
+ <exclude name="NAnt.MSNetTasks.dll" />
+ <!-- exclude Microsoft.NET specific test assembly -->
+ <exclude name="NAnt.MSNet.Tests.dll" />
+ </task-assemblies>
+ <framework
+ name="net-1.0"
+ family="net"
+ version="1.0"
+ description="Microsoft .NET Framework 1.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v1.0.3705')}"
+ frameworkassemblydirectory="${path::combine(installRoot, 'v1.0.3705')}"
+ clrversion="1.0.3705"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/net/1.0" />
+ <directory name="lib/net/neutral" />
+ <directory name="lib/common/1.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v1.0.3705" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(installRoot, 'v1.0.3705')}">
+ <include name="Accessibility.dll" />
+ <include name="cscompmgd.dll" />
+ <include name="mscorlib.dll" />
+ <include name="Microsoft.Vsa.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="System.Configuration.Install.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.XML.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 1.0 specific assemblies -->
+ <include name="extensions/net/1.0/**/*.dll" />
+ <!-- include Microsoft.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include Microsoft.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 1.0 specific assemblies -->
+ <include name="extensions/common/1.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v1.0.3705')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot"
+ hive="LocalMachine"
+ failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ </task>
+ <task name="aximp">
+ <attribute name="supportsrcw">false</attribute>
+ </task>
+ <task name="tlbimp">
+ <attribute name="supportstransform">false</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="net-1.1"
+ family="net"
+ version="1.1"
+ description="Microsoft .NET Framework 1.1"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}"
+ frameworkassemblydirectory="${path::combine(installRoot, 'v1.1.4322')}"
+ clrversion="1.1.4322"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/net/1.1" />
+ <directory name="lib/net/neutral" />
+ <directory name="lib/common/1.1" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v1.1.4322" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(installRoot, 'v1.1.4322')}">
+ <include name="Accessibility.dll" />
+ <include name="cscompmgd.dll" />
+ <include name="mscorlib.dll" />
+ <include name="Microsoft.Vsa.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="System.Configuration.Install.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.XML.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 1.1 specific assemblies -->
+ <include name="extensions/net/1.1/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 1.1 specific assemblies -->
+ <include name="extensions/common/1.1/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v1.1.4322')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
+ hive="LocalMachine"
+ failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="net-2.0"
+ family="net"
+ version="2.0"
+ description="Microsoft .NET Framework 2.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
+ frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
+ clrversion="2.0.50727"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/net/2.0" />
+ <directory name="lib/net/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(installRoot, 'v2.0.50727')}">
+ <include name="Accessibility.dll" />
+ <include name="cscompmgd.dll" />
+ <include name="mscorlib.dll" />
+ <include name="Microsoft.Build.Engine.dll" />
+ <include name="Microsoft.Build.Framework.dll" />
+ <include name="Microsoft.Build.Utilities.dll" />
+ <include name="Microsoft.Vsa.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="System.Configuration.dll" />
+ <include name="System.Configuration.Install.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Data.SqlXml.dll" />
+ <include name="System.Deployment.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Transactions.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.XML.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 2.0 specific assemblies -->
+ <include name="extensions/net/2.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
+ hive="LocalMachine"
+ failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="net-3.5"
+ family="net"
+ version="3.5"
+ description="Microsoft .NET Framework 3.5"
+ sdkdirectory="${sdkInstallRoot}"
+ frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
+ frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
+ clrversion="2.0.50727"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/net/2.0" />
+ <directory name="lib/net/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(installRoot, 'v2.0.50727')}">
+ <include name="Accessibility.dll" />
+ <include name="cscompmgd.dll" />
+ <include name="mscorlib.dll" />
+ <include name="Microsoft.Build.Utilities.dll" />
+ <include name="Microsoft.Vsa.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="System.Configuration.dll" />
+ <include name="System.Configuration.Install.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Data.SqlXml.dll" />
+ <include name="System.Deployment.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Transactions.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.XML.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/v3.5">
+ <include name="Microsoft.Build.Engine.dll" />
+ <include name="Microsoft.Build.Framework.dll" />
+ <include name="System.AddIn.Contract.dll" />
+ <include name="System.AddIn.dll" />
+ <include name="System.ComponentModel.DataAnnotations.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.Data.DataSetExtensions.dll" />
+ <include name="System.Data.Entity.Design.dll" />
+ <include name="System.Data.Entity.dll" />
+ <include name="System.Data.Linq.dll" />
+ <include name="System.Data.Services.Client.dll" />
+ <include name="System.Data.Services.Design.dll" />
+ <include name="System.Data.Services.dll" />
+ <include name="System.DirectoryServices.AccountManagement.dll" />
+ <include name="System.Management.Instrumentation.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.Web.Abstractions.dll" />
+ <include name="System.Web.DynamicData.Design.dll" />
+ <include name="System.Web.DynamicData.dll" />
+ <include name="System.Web.Entitly.Design.dll" />
+ <include name="System.Web.Entitly.dll" />
+ <include name="System.Web.Extensions.Design.dll" />
+ <include name="System.Web.Extensions.dll" />
+ <include name="System.Web.Routing.dll" />
+ <include name="System.Windows.Presentation.dll" />
+ <include name="System.WorkflowServices.dll" />
+ <include name="System.Xml.Linq.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/v3.0">
+ <include name="PresentationBuildTasks.dll" />
+ <include name="PresentationCore.dll" />
+ <include name="PresentationFramework.Aero.dll" />
+ <include name="PresentationFramework.Classic.dll" />
+ <include name="PresentationFramework.dll" />
+ <include name="PresentationFramework.Luna.dll" />
+ <include name="PresentationFramework.Royale.dll" />
+ <include name="ReachFramework.dll" />
+ <include name="System.IdentityModel.dll" />
+ <include name="System.IdentityModel.Selectors.dll" />
+ <include name="System.IO.Log.dll" />
+ <include name="System.Printing.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.Speech.dll" />
+ <include name="System.Workflow.Activities.dll" />
+ <include name="System.Workflow.ComponentModel.dll" />
+ <include name="System.Workflow.Runtime.dll" />
+ <include name="UIAutomationClient.dll" />
+ <include name="UIAutomationClientsideProviders.dll" />
+ <include name="UIAutomationProvider.dll" />
+ <include name="UIAutomationTypes.dll" />
+ <include name="WindowsBase.dll" />
+ <include name="WindowsFormsIntegration.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 2.0 specific assemblies -->
+ <include name="extensions/net/2.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${sdkInstallRoot}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v3.5')}" />
+ <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="net-4.0"
+ family="net"
+ version="4.0"
+ description="Microsoft .NET Framework 4.0"
+ sdkdirectory="${sdkInstallRoot}"
+ frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
+ frameworkassemblydirectory="${path::combine(installRoot, 'v4.0.30319')}"
+ clrversion="4.0.30319"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v4.0.30319" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}">
+ <include name="Accessibility.dll" />
+ <include name="Microsoft.Build.Conversion.v4.0.dll" />
+ <include name="Microsoft.Build.dll" />
+ <include name="Microsoft.Build.Engine.dll" />
+ <include name="Microsoft.Build.Framework.dll" />
+ <include name="Microsoft.Build.Tasks.v4.0.dll" />
+ <include name="Microsoft.Build.Utilities.v4.0.dll" />
+ <include name="Microsoft.CSharp.dll" />
+ <include name="Microsoft.Data.Entity.Build.Tasks.dll" />
+ <include name="Microsoft.JScript.dll" />
+ <include name="Microsoft.Transactions.Bridge.dll" />
+ <include name="Microsoft.Transactions.Bridge.Dtc.dll" />
+ <include name="Microsoft.VisualBasic.Activities.Compiler.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualC.dll" />
+ <include name="Microsoft.VisualC.STLCLR.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Activities.Core.Presentation.dll" />
+ <include name="System.Activities.dll" />
+ <include name="System.Activities.DurableInstancing.dll" />
+ <include name="System.Activities.Presentation.dll" />
+ <include name="System.AddIn.Contract" />
+ <include name="System.AddIn.dll" />
+ <include name="System.ComponentModel.Composition.dll" />
+ <include name="System.ComponentModel.DataAnnotations.dll" />
+ <include name="System.Configuration.dll" />
+ <include name="System.Configuration.Install.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.Data.DataSetExtensions.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.Entity.Design.dll" />
+ <include name="System.Data.Entity.dll" />
+ <include name="System.Data.Linq.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Data.Services.Client.dll" />
+ <include name="System.Data.Services.Design.dll" />
+ <include name="System.Data.Services.dll" />
+ <include name="System.Data.SqlXml.dll" />
+ <include name="System.Deployment.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.Device.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.DirectoryServices.Protocols.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.Dynamic.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.EnterpriseServices.Thunk.dll" />
+ <include name="System.EnterpriseServices.Wrapper.dll" />
+ <include name="System.IdentityModel.dll" />
+ <include name="System.IdentityModel.Selectors.dll" />
+ <include name="System.IO.Log.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Management.Instrumentation.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Numerics.dll" />
+ <include name="System.Runtime.Caching.dll" />
+ <include name="System.Runtime.DurableInstancing.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceModel.Activation.dll" />
+ <include name="System.ServiceModel.Activities.dll" />
+ <include name="System.ServiceModel.Channels.dll" />
+ <include name="System.ServiceModel.Discovery.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Routing.dll" />
+ <include name="System.ServiceModel.ServiceMoniker40.dll" />
+ <include name="System.ServiceModel.WasHosting.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Transactions.dll" />
+ <include name="System.Web.Abstractions.dll" />
+ <include name="System.Web.ApplicationServices.dll" />
+ <include name="System.Web.DataVisualization.Design.dll" />
+ <include name="System.Web.DataVisualization.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.DynamicData.Design.dll" />
+ <include name="System.Web.DynamicData.dll" />
+ <include name="System.Web.Entity.Design.dll" />
+ <include name="System.Web.Entity.dll" />
+ <include name="System.Web.Extensions.Design.dll" />
+ <include name="System.Web.Extensions.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Routing.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.DataVisualization.Design.dll" />
+ <include name="System.Windows.Forms.DataVisualization.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.Workflow.Activities.dll" />
+ <include name="System.Workflow.ComponentModel.dll" />
+ <include name="System.Workflow.Runtime.dll" />
+ <include name="System.WorkflowServices.dll" />
+ <include name="System.Xaml.dll" />
+ <include name="System.Xaml.Hosting.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Xml.Linq.dll" />
+ </reference-assemblies>
+ <!-- WPF Assemblies -->
+ <reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}/WPF">
+ <include name="NaturalLanguage6.dll" />
+ <include name="NlsData0009.dll" />
+ <include name="NlsLexicons0009.dll" />
+ <include name="PenIMC.dll" />
+ <include name="PresentationCore.dll" />
+ <include name="PresentationFramework.Aero.dll" />
+ <include name="PresentationFramework.Classic.dll" />
+ <include name="PresentationFramework.dll" />
+ <include name="PresentationFramework.Luna.dll" />
+ <include name="PresentationFramework.Royale.dll" />
+ <include name="PresentationHost_v0400.dll" />
+ <include name="PresentationNative_v0400.dll" />
+ <include name="PresentationUI.dll" />
+ <include name="ReachFramework.dll" />
+ <include name="System.Printing.dll" />
+ <include name="System.Speech.dll" />
+ <include name="System.Windows.Input.Manipulations.dll" />
+ <include name="System.Windows.Presentation.dll" />
+ <include name="UIAutomationClient.dll" />
+ <include name="UIAutomationClientsideProviders.dll" />
+ <include name="UIAutomationProvider.dll" />
+ <include name="UIAutomationTypes.dll" />
+ <include name="WindowsBase.dll" />
+ <include name="WindowsFormsIntegration.dll" />
+ <include name="wpfgfx_v0400.dll" />
+ <include name="wpftxt_v0400.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.0">
+ <include name="Microsoft.Build.Conversion.v4.0.dll" />
+ <include name="Microsoft.Build.dll" />
+ <include name="Microsoft.Build.Engine.dll" />
+ <include name="Microsoft.Build.Framework.dll" />
+ <include name="Microsoft.Build.Tasks.v4.0.dll" />
+ <include name="Microsoft.Build.Utilities.v4.0.dll" />
+ <include name="Microsoft.CSharp.dll" />
+ <include name="Microsoft.JScript.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="Microsoft.VisualBasic.Comptatibility.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualC.dll" />
+ <include name="Microsoft.VisualC.STLCLR.dll" />
+ <include name="mscorlib.dll" />
+ <include name="PresentationBuildTasks.dll" />
+ <include name="PresentationCore.dll" />
+ <include name="WindowsBase.dll" />
+ <include name="PresentationFramework.dll" />
+ <include name="PresentationFramework.Aero.dll" />
+ <include name="PresentationFramework.Classic.dll" />
+ <include name="PresentationFramework.Luna.dll" />
+ <include name="PresentationFramework.Royale.dll" />
+ <include name="ReachFramework.dll" />
+ <include name="System.Activities.Core.Presentation.dll" />
+ <include name="System.Activities.dll" />
+ <include name="System.Activities.DurableInstancing.dll" />
+ <include name="System.Activities.Presentation.dll" />
+ <include name="System.AddIn.Contract.dll" />
+ <include name="System.AddIn.dll" />
+ <include name="System.ComponentModel.Composition.dll" />
+ <include name="System.ComponentModel.DataAnnotations.dll" />
+ <include name="System.Configuration.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.Data.DataSetExtension.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.Entity.Design.dll" />
+ <include name="System.Data.Entity.dll" />
+ <include name="System.Data.Linq.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Data.Services.Client.dll" />
+ <include name="System.Data.Services.Design.dll" />
+ <include name="System.Data.Services.dll" />
+ <include name="System.Data.SqlXml.dll" />
+ <include name="System.Deployment.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.Device.dll" />
+ <include name="System.DirectoryServices.AccountManagement.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.DirectoryServices.Protocols.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.EnterpriseServices.Thunk.dll" />
+ <include name="System.EnterpriseServices.Wrapper.dll" />
+ <include name="System.IdentityModel.dll" />
+ <include name="System.IdentityModel.Selectors.dll" />
+ <include name="System.IO.Log.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Management.Instrumentation.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Numerics.dll" />
+ <include name="System.Printing.dll" />
+ <include name="System.Runtime.Caching.dll" />
+ <include name="System.Runtime.DurableInstancing.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceModel.Activation.dll" />
+ <include name="System.ServiceModel.Activities.dll" />
+ <include name="System.ServiceModel.Channels.dll" />
+ <include name="System.ServiceModel.Discovery.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Routing.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Speech.dll" />
+ <include name="System.Transactions.dll" />
+ <include name="System.Web.Abstractions.dll" />
+ <include name="System.Web.ApplicationServices.dll" />
+ <include name="System.Web.DataVisualization.Design.dll" />
+ <include name="System.Web.DataVisualization.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.DynamicData.Design.dll" />
+ <include name="System.Web.DynamicData.dll" />
+ <include name="System.Web.Entity.Design.dll" />
+ <include name="System.Web.Entity.dll" />
+ <include name="System.Web.Extensions.Design.dll" />
+ <include name="System.Web.Extensions.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Routing.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.DataVisualization.Design.dll" />
+ <include name="System.Windows.Forms.DataVisualization.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.Windows.Input.Manipulations.dll" />
+ <include name="System.Windows.Presentation.dll" />
+ <include name="System.Workflow.Activities.dll" />
+ <include name="System.Workflow.ComponentModel.dll" />
+ <include name="System.Workflow.Runtime.dll" />
+ <include name="System.WorkflowServices.dll" />
+ <include name="System.Xaml.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Xml.Linq.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 4.0 specific assemblies -->
+ <include name="extensions/net/4.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 4.0 specific assemblies -->
+ <include name="extensions/common/4.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${sdkInstallRoot}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="net-4.5"
+ family="net"
+ version="4.5"
+ description="Microsoft .NET Framework 4.5"
+ sdkdirectory="${sdkInstallRoot}"
+ frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
+ frameworkassemblydirectory="${path::combine(installRoot, 'v4.0.30319')}"
+ clrversion="4.0.30319"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v4.0.30319" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}">
+ <include name="Accessibility.dll" />
+ <include name="Microsoft.Build.Conversion.v4.0.dll" />
+ <include name="Microsoft.Build.dll" />
+ <include name="Microsoft.Build.Engine.dll" />
+ <include name="Microsoft.Build.Framework.dll" />
+ <include name="Microsoft.Build.Tasks.v4.0.dll" />
+ <include name="Microsoft.Build.Utilities.v4.0.dll" />
+ <include name="Microsoft.CSharp.dll" />
+ <include name="Microsoft.Data.Entity.Build.Tasks.dll" />
+ <include name="Microsoft.JScript.dll" />
+ <include name="Microsoft.Transactions.Bridge.dll" />
+ <include name="Microsoft.Transactions.Bridge.Dtc.dll" />
+ <include name="Microsoft.VisualBasic.Activities.Compiler.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualC.dll" />
+ <include name="Microsoft.VisualC.STLCLR.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Activities.Core.Presentation.dll" />
+ <include name="System.Activities.dll" />
+ <include name="System.Activities.DurableInstancing.dll" />
+ <include name="System.Activities.Presentation.dll" />
+ <include name="System.AddIn.Contract" />
+ <include name="System.AddIn.dll" />
+ <include name="System.ComponentModel.Composition.dll" />
+ <include name="System.ComponentModel.DataAnnotations.dll" />
+ <include name="System.Configuration.dll" />
+ <include name="System.Configuration.Install.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.Data.DataSetExtensions.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.Entity.Design.dll" />
+ <include name="System.Data.Entity.dll" />
+ <include name="System.Data.Linq.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Data.Services.Client.dll" />
+ <include name="System.Data.Services.Design.dll" />
+ <include name="System.Data.Services.dll" />
+ <include name="System.Data.SqlXml.dll" />
+ <include name="System.Deployment.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.Device.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.DirectoryServices.Protocols.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.Dynamic.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.EnterpriseServices.Thunk.dll" />
+ <include name="System.EnterpriseServices.Wrapper.dll" />
+ <include name="System.IdentityModel.dll" />
+ <include name="System.IdentityModel.Selectors.dll" />
+ <include name="System.IO.Log.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Management.Instrumentation.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Numerics.dll" />
+ <include name="System.Runtime.Caching.dll" />
+ <include name="System.Runtime.DurableInstancing.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceModel.Activation.dll" />
+ <include name="System.ServiceModel.Activities.dll" />
+ <include name="System.ServiceModel.Channels.dll" />
+ <include name="System.ServiceModel.Discovery.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Routing.dll" />
+ <include name="System.ServiceModel.ServiceMoniker40.dll" />
+ <include name="System.ServiceModel.WasHosting.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Transactions.dll" />
+ <include name="System.Web.Abstractions.dll" />
+ <include name="System.Web.ApplicationServices.dll" />
+ <include name="System.Web.DataVisualization.Design.dll" />
+ <include name="System.Web.DataVisualization.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.DynamicData.Design.dll" />
+ <include name="System.Web.DynamicData.dll" />
+ <include name="System.Web.Entity.Design.dll" />
+ <include name="System.Web.Entity.dll" />
+ <include name="System.Web.Extensions.Design.dll" />
+ <include name="System.Web.Extensions.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Routing.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.DataVisualization.Design.dll" />
+ <include name="System.Windows.Forms.DataVisualization.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.Workflow.Activities.dll" />
+ <include name="System.Workflow.ComponentModel.dll" />
+ <include name="System.Workflow.Runtime.dll" />
+ <include name="System.WorkflowServices.dll" />
+ <include name="System.Xaml.dll" />
+ <include name="System.Xaml.Hosting.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Xml.Linq.dll" />
+ </reference-assemblies>
+ <!-- WPF Assemblies -->
+ <reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}/WPF">
+ <include name="NaturalLanguage6.dll" />
+ <include name="NlsData0009.dll" />
+ <include name="NlsLexicons0009.dll" />
+ <include name="PenIMC.dll" />
+ <include name="PresentationCore.dll" />
+ <include name="PresentationFramework.Aero.dll" />
+ <include name="PresentationFramework.Classic.dll" />
+ <include name="PresentationFramework.dll" />
+ <include name="PresentationFramework.Luna.dll" />
+ <include name="PresentationFramework.Royale.dll" />
+ <include name="PresentationHost_v0400.dll" />
+ <include name="PresentationNative_v0400.dll" />
+ <include name="PresentationUI.dll" />
+ <include name="ReachFramework.dll" />
+ <include name="System.Printing.dll" />
+ <include name="System.Speech.dll" />
+ <include name="System.Windows.Input.Manipulations.dll" />
+ <include name="System.Windows.Presentation.dll" />
+ <include name="UIAutomationClient.dll" />
+ <include name="UIAutomationClientsideProviders.dll" />
+ <include name="UIAutomationProvider.dll" />
+ <include name="UIAutomationTypes.dll" />
+ <include name="WindowsBase.dll" />
+ <include name="WindowsFormsIntegration.dll" />
+ <include name="wpfgfx_v0400.dll" />
+ <include name="wpftxt_v0400.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5">
+ <include name="Microsoft.Build.Conversion.v4.0.dll" />
+ <include name="Microsoft.Build.dll" />
+ <include name="Microsoft.Build.Engine.dll" />
+ <include name="Microsoft.Build.Framework.dll" />
+ <include name="Microsoft.Build.Tasks.v4.0.dll" />
+ <include name="Microsoft.Build.Utilities.v4.0.dll" />
+ <include name="Microsoft.CSharp.dll" />
+ <include name="Microsoft.JScript.dll" />
+ <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+ <include name="Microsoft.VisualBasic.Comptatibility.dll" />
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="Microsoft.VisualC.dll" />
+ <include name="Microsoft.VisualC.STLCLR.dll" />
+ <include name="mscorlib.dll" />
+ <include name="PresentationBuildTasks.dll" />
+ <include name="PresentationCore.dll" />
+ <include name="WindowsBase.dll" />
+ <include name="PresentationFramework.dll" />
+ <include name="PresentationFramework.Aero.dll" />
+ <include name="PresentationFramework.Classic.dll" />
+ <include name="PresentationFramework.Luna.dll" />
+ <include name="PresentationFramework.Royale.dll" />
+ <include name="ReachFramework.dll" />
+ <include name="System.Activities.Core.Presentation.dll" />
+ <include name="System.Activities.dll" />
+ <include name="System.Activities.DurableInstancing.dll" />
+ <include name="System.Activities.Presentation.dll" />
+ <include name="System.AddIn.Contract.dll" />
+ <include name="System.AddIn.dll" />
+ <include name="System.ComponentModel.Composition.dll" />
+ <include name="System.ComponentModel.DataAnnotations.dll" />
+ <include name="System.Configuration.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.Data.DataSetExtension.dll" />
+ <include name="System.Data.dll" />
+ <include name="System.Data.Entity.Design.dll" />
+ <include name="System.Data.Entity.dll" />
+ <include name="System.Data.Linq.dll" />
+ <include name="System.Data.OracleClient.dll" />
+ <include name="System.Data.Services.Client.dll" />
+ <include name="System.Data.Services.Design.dll" />
+ <include name="System.Data.Services.dll" />
+ <include name="System.Data.SqlXml.dll" />
+ <include name="System.Deployment.dll" />
+ <include name="System.Design.dll" />
+ <include name="System.Device.dll" />
+ <include name="System.DirectoryServices.AccountManagement.dll" />
+ <include name="System.DirectoryServices.dll" />
+ <include name="System.DirectoryServices.Protocols.dll" />
+ <include name="System.dll" />
+ <include name="System.Drawing.Design.dll" />
+ <include name="System.Drawing.dll" />
+ <include name="System.EnterpriseServices.dll" />
+ <include name="System.EnterpriseServices.Thunk.dll" />
+ <include name="System.EnterpriseServices.Wrapper.dll" />
+ <include name="System.IdentityModel.dll" />
+ <include name="System.IdentityModel.Selectors.dll" />
+ <include name="System.IO.Log.dll" />
+ <include name="System.Management.dll" />
+ <include name="System.Management.Instrumentation.dll" />
+ <include name="System.Messaging.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Numerics.dll" />
+ <include name="System.Printing.dll" />
+ <include name="System.Runtime.Caching.dll" />
+ <include name="System.Runtime.DurableInstancing.dll" />
+ <include name="System.Runtime.Remoting.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+ <include name="System.Security.dll" />
+ <include name="System.ServiceModel.Activation.dll" />
+ <include name="System.ServiceModel.Activities.dll" />
+ <include name="System.ServiceModel.Channels.dll" />
+ <include name="System.ServiceModel.Discovery.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Routing.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.ServiceProcess.dll" />
+ <include name="System.Speech.dll" />
+ <include name="System.Transactions.dll" />
+ <include name="System.Web.Abstractions.dll" />
+ <include name="System.Web.ApplicationServices.dll" />
+ <include name="System.Web.DataVisualization.Design.dll" />
+ <include name="System.Web.DataVisualization.dll" />
+ <include name="System.Web.dll" />
+ <include name="System.Web.DynamicData.Design.dll" />
+ <include name="System.Web.DynamicData.dll" />
+ <include name="System.Web.Entity.Design.dll" />
+ <include name="System.Web.Entity.dll" />
+ <include name="System.Web.Extensions.Design.dll" />
+ <include name="System.Web.Extensions.dll" />
+ <include name="System.Web.Mobile.dll" />
+ <include name="System.Web.RegularExpressions.dll" />
+ <include name="System.Web.Routing.dll" />
+ <include name="System.Web.Services.dll" />
+ <include name="System.Windows.Forms.DataVisualization.Design.dll" />
+ <include name="System.Windows.Forms.DataVisualization.dll" />
+ <include name="System.Windows.Forms.dll" />
+ <include name="System.Windows.Input.Manipulations.dll" />
+ <include name="System.Windows.Presentation.dll" />
+ <include name="System.Workflow.Activities.dll" />
+ <include name="System.Workflow.ComponentModel.dll" />
+ <include name="System.Workflow.Runtime.dll" />
+ <include name="System.WorkflowServices.dll" />
+ <include name="System.Xaml.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Xml.Linq.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 4.0 specific assemblies -->
+ <include name="extensions/net/4.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 4.0 specific assemblies -->
+ <include name="extensions/common/4.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${sdkInstallRoot}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="netcf-1.0"
+ family="netcf"
+ version="1.0"
+ description="Microsoft .NET Compact Framework 1.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}"
+ frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}"
+ clrversion="1.1.4322"
+ clrtype="Compact"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v1.1.4322" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- this is not a supported runtime framework -->
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}" />
+ <directory name="${path::combine(installRoot, 'v1.1.4322')}" />
+ <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot"
+ key="SOFTWARE\Microsoft\.NETCompactFramework\sdkInstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot.DesktopFramework"
+ key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
+ hive="LocalMachine" />
+ <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 1.1 SDK is not installed.</fail>
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="exename">cfresgen</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="netcf-2.0"
+ family="netcf"
+ version="2.0"
+ description="Microsoft .NET Compact Framework 2.0"
+ sdkdirectory="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
+ frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'WindowsCE')}"
+ clrversion="2.0.0"
+ clrtype="Compact"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'WindowsCE')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- this is not a supported runtime framework -->
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot"
+ key="SOFTWARE\Microsoft\.NETCompactFramework\v2.0.0.0\InstallRoot\"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot.DesktopFramework"
+ key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
+ hive="LocalMachine" />
+ <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 2.0 SDK is not installed.</fail>
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="netcf-3.5"
+ family="netcf"
+ version="3.5"
+ description="Microsoft .NET Compact Framework 3.5"
+ sdkdirectory="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
+ frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'WindowsCE')}"
+ clrversion="2.0.0"
+ vendor="Microsoft">
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'WindowsCE')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- this is not a supported runtime framework -->
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
+ </tool-paths>
+ <project>
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot"
+ key="SOFTWARE\Microsoft\.NETCompactFramework\v3.5.0.0\InstallRoot\"
+ hive="LocalMachine" />
+ <readregistry
+ property="sdkInstallRoot.DesktopFramework"
+ key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A\WinSDKNetFxTools\InstallationFolder"
+ hive="LocalMachine"
+ failonerror="false" />
+ <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 3.5 SDK is not installed.</fail>
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="silverlight-2.0"
+ family="silverlight"
+ version="2.0"
+ description="Microsoft Silverlight 2.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
+ frameworkassemblydirectory="${SL2RefAssemblyBaseDir}"
+ clrversion="2.0.50727"
+ clrtype="Browser"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${SL2RefAssemblyBaseDir}">
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.Windows.Browser.dll" />
+ <include name="System.Windows.dll" />
+ <include name="System.Xml.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 2.0 specific assemblies -->
+ <include name="extensions/net/2.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${SL2RefAssemblyBaseDir}" />
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v3.5')}" />
+ <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
+ </tool-paths>
+ <project>
+ <readregistry property="SL2RefAssemblyBaseDir"
+ key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v2.0\ReferenceAssemblies\SLRuntimeInstallPath"
+ hive="LocalMachine" />
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="silverlight-3.0"
+ family="silverlight"
+ version="3.0"
+ description="Microsoft Silverlight 3.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
+ frameworkassemblydirectory="${SL3RefAssemblyBaseDir}"
+ clrversion="2.0.50727"
+ clrtype="Browser"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${SL3RefAssemblyBaseDir}">
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Windows.dll" />
+ <include name="System.Windows.Browser.dll" />
+ <!-- Remaining libraries found in the Reference Assembly directory -->
+ <include name="agcore.debug.dll" />
+ <include name="agcore.dll" />
+ <include name="coreclr.dll" />
+ <include name="mscorrc.debug.dll" />
+ <include name="mscorrc.dll" />
+ <include name="npctrl.dll" />
+ <include name="npctrlui.dll" />
+ <include name="Silverlight.ConfigurationUI.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 2.0 specific assemblies -->
+ <include name="extensions/net/2.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${SL3RefAssemblyBaseDir}" />
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v3.5')}" />
+ </tool-paths>
+ <project>
+ <readregistry property="SL3RefAssemblyBaseDir"
+ key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v3.0\ReferenceAssemblies\SLRuntimeInstallPath"
+ hive="LocalMachine" />
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="silverlight-4.0"
+ family="silverlight"
+ version="4.0"
+ description="Microsoft Silverlight 4.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
+ frameworkassemblydirectory="${SL4RefAssemblyBaseDir}"
+ clrversion="4.0.30319"
+ clrtype="Browser"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v4.0.30319" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${SL4RefAssemblyBaseDir}">
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Core.dll" />
+ <include name="system.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Windows.dll" />
+ <include name="System.Windows.Browser.dll" />
+ <!-- Remaining libraries found in the Reference Assembly directory -->
+ <include name="agcore.debug.dll" />
+ <include name="agcore.dll" />
+ <include name="coreclr.dll" />
+ <include name="mscorrc.debug.dll" />
+ <include name="mscorrc.dll" />
+ <include name="npctrl.dll" />
+ <include name="npctrlui.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 4.0 specific assemblies -->
+ <include name="extensions/net/4.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 4.0 specific assemblies -->
+ <include name="extensions/common/4.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${SL4RefAssemblyBaseDir}" />
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
+ </tool-paths>
+ <project>
+ <readregistry property="SL4RefAssemblyBaseDir"
+ key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v4.0\ReferenceAssemblies\SLRuntimeInstallPath"
+ hive="LocalMachine" />
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="silverlight-5.0"
+ family="silverlight"
+ version="5.0"
+ description="Microsoft Silverlight 5.0"
+ sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+ frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
+ frameworkassemblydirectory="${SL5RefAssemblyBaseDir}"
+ clrversion="4.0.30319"
+ clrtype="Browser"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <strict>
+ <environment>
+ <variable name="COMPLUS_VERSION" value="v4.0.30319" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${SL5RefAssemblyBaseDir}">
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Core.dll" />
+ <include name="system.dll" />
+ <include name="System.Xml.dll" />
+ <include name="System.Windows.dll" />
+ <include name="System.Windows.Browser.dll" />
+ <!-- Remaining libraries found in the Reference Assembly directory -->
+ <include name="agcore.debug.dll" />
+ <include name="agcore.dll" />
+ <include name="coreclr.dll" />
+ <include name="mscorrc.debug.dll" />
+ <include name="mscorrc.dll" />
+ <include name="npctrl.dll" />
+ <include name="npctrlui.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <!-- Remaining libraries are specific to XNA programming -->
+ <include name="Microsoft.Xna.Framework.dll" />
+ <include name="Microsoft.Xna.Framework.Graphics.dll" />
+ <include name="Microsoft.Xna.Framework.Graphics.Shaders.dll" />
+ <include name="System.Windows.Xna.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 4.0 specific assemblies -->
+ <include name="extensions/net/4.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 4.0 specific assemblies -->
+ <include name="extensions/common/4.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${SL5RefAssemblyBaseDir}" />
+ <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+ if="${property::exists('sdkInstallRoot')}" />
+ <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
+ </tool-paths>
+ <project>
+ <readregistry property="SL5RefAssemblyBaseDir"
+ key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v5.0\ReferenceAssemblies\SLRuntimeInstallPath"
+ hive="LocalMachine" />
+ <readregistry
+ property="installRoot"
+ key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+ hive="LocalMachine" />
+ <locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="noconfig">true</attribute>
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="nostdlib">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportsnostdlib">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportsplatform">true</attribute>
+ <attribute name="supportswarnaserrorlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="supportsplatform">true</attribute>
+ </task>
+ <task name="vjc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="exename">lc</attribute>
+ <attribute name="supportsassemblyreferences">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-1.0"
+ family="mono"
+ version="1.0"
+ description="Mono 1.0 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}"
+ clrversion="1.1.4322"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/1.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/1.1" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${runtimeEngine}" />
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </auto>
+ <strict>
+ <engine program="${runtimeEngine}">
+ <arg value="--runtime=v1.1.4322" />
+ </engine>
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 1.0 specific assemblies -->
+ <include name="extensions/mono/1.0/**/*.dll" />
+ <!-- include .NET 1.1 specific assemblies -->
+ <include name="extensions/common/1.1/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <!-- unmanaged tools -->
+ <directory name="${sdkInstallRoot}/bin" />
+ </tool-paths>
+ <project>
+ <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+ <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+ <if test="${pkgconfig.available}">
+ <if test="${pkg-config::exists('mono')}">
+ <call target="configure-from-pkg-config" />
+ </if>
+ <if test="${not pkg-config::exists('mono')}">
+ <call target="configure-from-registry" />
+ </if>
+ </if>
+ <if test="${not pkgconfig.available}">
+ <call target="configure-from-registry" />
+ </if>
+
+ <!-- determine if we're dealing with a Mono 1.0.x release -->
+ <if test="${version::parse(mono.version) &lt; version::parse('1.1')}">
+ <!--
+ in Mono 1.0.x, the framework tools are located
+ in the <install root>\lib directory
+ -->
+ <property name="toolDirectory" value="${frameworkAssemblyDirectory}" />
+ <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+ <property name="resgen.tool" value="monoresgen" />
+ <!-- in Mono 1.0.x, only mcs and mbas are located in <install root>\lib\mono\<profile> -->
+ <property name="csc.tool" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mcs.exe')}" />
+ <property name="mbas.tool" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mbas.exe')}" />
+ <!-- /doc is not supported in Mono 1.0.x -->
+ <property name="csc.supportsdocgeneration" value="false" />
+
+ <!--
+ Mono 1.0.1 installer incorrectly adds '\mono' to
+ "MonoConfigDir" registry value
+ -->
+ <if test="${string::ends-with(configDir, 'etc\mono')}">
+ <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
+ </if>
+ </if>
+
+ <!-- determine if we're dealing with a Mono 1.1.x release or higher -->
+ <if test="${version::parse(mono.version) >= version::parse('1.1')}">
+ <!--
+ in Mono 1.1.x (and higher ?), the framework tools
+ are located in the <install root>\lib\mono\<profile>
+ directory
+ -->
+ <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+ <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+ <!-- starting from Mono 1.1.9.2, mono.exe is located in the bin directory -->
+ <if test="${not file::exists(runtimeEngine)}">
+ <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+ </if>
+ <property name="resgen.tool" value="resgen" />
+ <property name="csc.tool" value="mcs" />
+ <property name="csc.supportsdocgeneration" value="true" />
+ <property name="mbas.tool" value="mbas" />
+ </if>
+
+ <target name="configure-from-pkg-config">
+ <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+ <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+ <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+ <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+ </target>
+
+ <target name="configure-from-registry">
+ <monoregistry property="mono.reg" failonerror="false" />
+ <readregistry
+ property="mono.version"
+ key="${mono.reg}\DefaultCLR"
+ hive="LocalMachine"
+ />
+ <property name="monokey" value="${mono.reg}\${mono.version}" />
+
+ <readregistry
+ property="sdkInstallRoot"
+ key="${monokey}\SdkInstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="frameworkAssemblyDirectory"
+ key="${monokey}\FrameworkAssemblyDirectory"
+ hive="LocalMachine" />
+ <readregistry
+ property="configDir"
+ key="${monokey}\MonoConfigDir"
+ hive="LocalMachine" />
+ </target>
+ </project>
+ <properties>
+ </properties>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">${csc.tool}</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">${mbas.tool}</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="exename">${resgen.tool}</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-2.0"
+ family="mono"
+ version="2.0"
+ description="Mono 2.0 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
+ clrversion="2.0.50727"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/2.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${runtimeEngine}" />
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </auto>
+ <strict>
+ <engine program="${runtimeEngine}">
+ <arg value="--runtime=v2.0.50727" />
+ </engine>
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 2.0 specific assemblies -->
+ <include name="extensions/mono/2.0/**/*.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+ <!-- for compatibility with Mono 1.0.x -->
+ <directory name="${frameworkAssemblyDirectory}" />
+ <!-- unmanaged tools -->
+ <directory name="${sdkInstallRoot}/bin" />
+ </tool-paths>
+ <project>
+ <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+ <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+ <if test="${pkgconfig.available}">
+ <if test="${pkg-config::exists('mono')}">
+ <call target="configure-from-pkg-config" />
+ </if>
+ <if test="${not pkg-config::exists('mono')}">
+ <call target="configure-from-registry" />
+ </if>
+ </if>
+ <if test="${not pkgconfig.available}">
+ <call target="configure-from-registry" />
+ </if>
+
+ <property name="resgen.supportsexternalfilereferences" value="false" />
+
+ <!-- determine if we're dealing with a Mono 1.0.x release -->
+ <if test="${version::parse(mono.version) &lt; version::parse('1.1')}">
+ <!--
+ in Mono 1.0.x, the framework tools are located
+ in the <install root>\lib directory, except for
+ mbas and mcs
+ -->
+ <property name="toolDirectory" value="${frameworkAssemblyDirectory}" />
+ <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+ <property name="resgen.tool" value="monoresgen" />
+ <property name="csc.supportsdocgeneration" value="false" />
+
+ <!--
+ Mono 1.0.1 installer incorrectly adds '\mono' to
+ "MonoConfigDir" registry value
+ -->
+ <if test="${string::ends-with(configDir, 'etc\mono')}">
+ <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
+ </if>
+ </if>
+
+ <!-- determine if we're dealing with a Mono 1.1.x release or higher -->
+ <if test="${version::parse(mono.version) >= version::parse('1.1')}">
+ <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+ <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+ <!-- starting from Mono 1.1.9.2, mono.exe is located in the bin directory -->
+ <if test="${not file::exists(runtimeEngine)}">
+ <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+ </if>
+ <property name="csc.supportsdocgeneration" value="true" />
+ </if>
+ <!-- as from Mono 1.2.3.50, resgen supports the /usesourcepath option -->
+ <if test="${version::parse(mono.version) >= version::parse('1.2.3.50')}">
+ <property name="resgen.supportsexternalfilereferences" value="true" />
+ </if>
+
+ <target name="configure-from-pkg-config">
+ <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+ <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+ <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+ <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+ </target>
+
+ <target name="configure-from-registry">
+ <monoregistry property="mono.reg" failonerror="false" />
+ <readregistry
+ property="mono.version"
+ key="${mono.reg}\DefaultCLR"
+ hive="LocalMachine"
+ />
+ <property name="monokey" value="${mono.reg}\${mono.version}" />
+
+ <readregistry
+ property="sdkInstallRoot"
+ key="${monokey}\SdkInstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="frameworkAssemblyDirectory"
+ key="${monokey}\FrameworkAssemblyDirectory"
+ hive="LocalMachine" />
+ <readregistry
+ property="configDir"
+ key="${monokey}\MonoConfigDir"
+ hive="LocalMachine" />
+ </target>
+ </project>
+ <properties>
+ </properties>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">gmcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">strict</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">vbnc</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="exename">${resgen.tool}</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportsexternalfilereferences">${resgen.supportsexternalfilereferences}</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-3.5"
+ family="mono"
+ version="3.5"
+ description="Mono 3.5 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
+ clrversion="2.0.50727"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/2.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${runtimeEngine}" />
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </auto>
+ <strict>
+ <engine program="${runtimeEngine}">
+ <arg value="--runtime=v2.0.50727" />
+ </engine>
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 2.0 specific assemblies -->
+ <include name="extensions/mono/2.0/**/*.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${sdkInstallRoot}/bin" />
+ </tool-paths>
+ <project>
+ <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+ <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+ <if test="${pkgconfig.available}">
+ <if test="${pkg-config::exists('mono')}">
+ <call target="configure-from-pkg-config" />
+ </if>
+ <if test="${not pkg-config::exists('mono')}">
+ <call target="configure-from-registry" />
+ </if>
+ </if>
+ <if test="${not pkgconfig.available}">
+ <call target="configure-from-registry" />
+ </if>
+
+ <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
+ <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+
+ <target name="configure-from-pkg-config">
+ <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+ <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+ <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+ <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+ </target>
+
+ <target name="configure-from-registry">
+ <monoregistry property="mono.reg" failonerror="false" />
+ <readregistry
+ property="mono.version"
+ key="${mono.reg}\DefaultCLR"
+ hive="LocalMachine"
+ />
+ <property name="monokey" value="${mono.reg}\${mono.version}" />
+
+ <readregistry
+ property="sdkInstallRoot"
+ key="${monokey}\SdkInstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="frameworkAssemblyDirectory"
+ key="${monokey}\FrameworkAssemblyDirectory"
+ hive="LocalMachine" />
+ <readregistry
+ property="configDir"
+ key="${monokey}\MonoConfigDir"
+ hive="LocalMachine" />
+ </target>
+ </project>
+ <properties>
+ </properties>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">gmcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="langversion">linq</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">strict</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">vbnc</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="managed">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-4.0"
+ family="mono"
+ version="4.0"
+ description="Mono 4.0 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}"
+ clrversion="4.0.30319"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/2.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${runtimeEngine}" />
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </auto>
+ <strict>
+ <engine program="${runtimeEngine}">
+ <arg value="--runtime=v4.0.30319" />
+ </engine>
+ <environment>
+ <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+ <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+ </environment>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 2.0 specific assemblies -->
+ <include name="extensions/mono/2.0/**/*.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${sdkInstallRoot}/bin" />
+ </tool-paths>
+ <project>
+ <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+ <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+ <if test="${pkgconfig.available}">
+ <if test="${pkg-config::exists('mono')}">
+ <call target="configure-from-pkg-config" />
+ </if>
+ <if test="${not pkg-config::exists('mono')}">
+ <call target="configure-from-registry" />
+ </if>
+ </if>
+ <if test="${not pkgconfig.available}">
+ <call target="configure-from-registry" />
+ </if>
+
+ <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}" />
+ <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+
+ <target name="configure-from-pkg-config">
+ <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+ <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+ <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+ <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+ </target>
+
+ <target name="configure-from-registry">
+ <monoregistry property="mono.reg" failonerror="false" />
+ <readregistry
+ property="mono.version"
+ key="${mono.reg}\DefaultCLR"
+ hive="LocalMachine"
+ />
+ <property name="monokey" value="${mono.reg}\${mono.version}" />
+
+ <readregistry
+ property="sdkInstallRoot"
+ key="${monokey}\SdkInstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="frameworkAssemblyDirectory"
+ key="${monokey}\FrameworkAssemblyDirectory"
+ hive="LocalMachine" />
+ <readregistry
+ property="configDir"
+ key="${monokey}\MonoConfigDir"
+ hive="LocalMachine" />
+ </target>
+ </project>
+ <properties>
+ </properties>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">dmcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="langversion">linq</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">strict</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">vbnc</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="managed">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="moonlight-2.0"
+ family="moonlight"
+ version="2.0"
+ description="Moonlight 2.0"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${toolDirectory}"
+ clrversion="2.0.50727"
+ clrtype="Browser"
+ vendor="Mono"
+ >
+ <runtime>
+ <modes>
+ <auto>
+ <engine program="${runtimeEngine}">
+ <arg value="--runtime=moonlight" />
+ <arg value="--security=temporary-smcs-hack" />
+ </engine>
+ </auto>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'lib/mono/2.1')}">
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.Windows.Browser.dll" />
+ <include name="System.Windows.dll" />
+ <include name="System.Xml.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 2.0 specific assemblies -->
+ <include name="extensions/net/2.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+ <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${sdkInstallRoot}/bin" />
+ </tool-paths>
+ <project>
+ <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+ <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+ <if test="${pkgconfig.available}">
+ <if test="${pkg-config::exists('mono')}">
+ <call target="configure-from-pkg-config" />
+ </if>
+ <if test="${not pkg-config::exists('mono')}">
+ <call target="configure-from-registry" />
+ </if>
+ </if>
+ <if test="${not pkgconfig.available}">
+ <call target="configure-from-registry" />
+ </if>
+
+ <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.1')}" />
+ <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+
+ <target name="configure-from-pkg-config">
+ <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+ <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+ <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+ <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+ </target>
+
+ <target name="configure-from-registry">
+ <monoregistry property="mono.reg" failonerror="false" />
+ <readregistry
+ property="mono.version"
+ key="${mono.reg}\DefaultCLR"
+ hive="LocalMachine"
+ />
+ <property name="monokey" value="${mono.reg}\${mono.version}" />
+
+ <readregistry
+ property="sdkInstallRoot"
+ key="${monokey}\SdkInstallRoot"
+ hive="LocalMachine" />
+ <readregistry
+ property="frameworkAssemblyDirectory"
+ key="${monokey}\FrameworkAssemblyDirectory"
+ hive="LocalMachine" />
+ <readregistry
+ property="configDir"
+ key="${monokey}\MonoConfigDir"
+ hive="LocalMachine" />
+ </target>
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="exename">smcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="sscli-1.0"
+ family="sscli"
+ version="1.0"
+ description="Microsoft Shared Source CLI 1.0"
+ sdkdirectory="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin"
+ frameworkdirectory="C:\sscli\build\v1.x86fstchk.rotor"
+ frameworkassemblydirectory="C:\sscli\build\v1.x86fstchk.rotor"
+ clrversion="1.0.3"
+ clrtype="Desktop"
+ vendor="Microsoft"
+ >
+ <runtime>
+ <modes>
+ <auto>
+ <engine program="C:\sscli\build\v1.x86fstchk.rotor\clix.exe" />
+ </auto>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="C:\sscli\build\v1.x86fstchk.rotor">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- this is not a supported runtime framework -->
+ </task-assemblies>
+ <tool-paths>
+ <directory name="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin" />
+ <directory name="C:\sscli\build\v1.x86fstchk.rotor" />
+ </tool-paths>
+ <project />
+ <tasks>
+ <task name="csc">
+ <attribute name="supportsnowarnlist">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="ildasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ </platform>
+ <platform name="unix" default="auto">
+ <task-assemblies>
+ <!-- include NAnt task assemblies -->
+ <include name="*Tasks.dll" />
+ <!-- include NAnt test assemblies -->
+ <include name="*Tests.dll" />
+ <!-- include framework-neutral assemblies -->
+ <include name="extensions/common/neutral/**/*.dll" />
+ <!-- exclude Microsoft.NET specific task assembly -->
+ <exclude name="NAnt.MSNetTasks.dll" />
+ <!-- exclude Microsoft.NET specific test assembly -->
+ <exclude name="NAnt.MSNet.Tests.dll" />
+ <!-- exclude win32 specific task assembly -->
+ <exclude name="NAnt.Win32Tasks.dll" />
+ <!-- exclude win32 specific test assembly -->
+ <exclude name="NAnt.Win32.Tests.dll" />
+ </task-assemblies>
+ <framework
+ name="mono-1.0"
+ family="mono"
+ version="1.0"
+ description="Mono 1.0 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/1.0')}"
+ clrversion="1.1.4322"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/1.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/1.1" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${path::combine(prefix, 'bin/mono')}" />
+ </auto>
+ <strict>
+ <engine program="${path::combine(prefix, 'bin/mono')}">
+ <arg value="--runtime=v1.1.4322" />
+ </engine>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/1.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 1.0 specific assemblies -->
+ <include name="extensions/mono/1.0/**/*.dll" />
+ <!-- include .NET 1.1 specific assemblies -->
+ <include name="extensions/common/1.1/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <!-- unmanaged tools -->
+ <directory name="${prefix}/bin" />
+ </tool-paths>
+ <project>
+ <if test="${not pkg-config::exists('mono')}">
+ <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+ </if>
+ <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+ <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
+ <property name="toolDirectory" value="${path::combine(prefix, 'bin')}" />
+ <property name="resgen.tool" value="monoresgen" />
+ <property name="csc.supportsdocgeneration" value="false" />
+ </if>
+ <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
+ <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/1.0')}" />
+ <property name="resgen.tool" value="resgen" />
+ <property name="csc.supportsdocgeneration" value="true" />
+ </if>
+ </project>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mcs.exe')}</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mbas.exe')}</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="exename">${resgen.tool}</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-2.0"
+ family="mono"
+ version="2.0"
+ description="Mono 2.0 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
+ clrversion="2.0.50727"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/2.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${path::combine(prefix, 'bin/mono')}" />
+ </auto>
+ <strict>
+ <engine program="${path::combine(prefix, 'bin/mono')}">
+ <arg value="--runtime=v2.0.50727" />
+ </engine>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 2.0 specific assemblies -->
+ <include name="extensions/mono/2.0/**/*.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${prefix}/bin" />
+ </tool-paths>
+ <project>
+ <if test="${not pkg-config::exists('mono')}">
+ <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+ </if>
+ <property name="resgen.supportsexternalfilereferences" value="false" />
+ <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+ <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
+ <property name="toolDirectory" value="${path::combine(prefix, 'bin')}" />
+ <property name="resgen.tool" value="monoresgen" />
+ <property name="csc.supportsdocgeneration" value="false" />
+ </if>
+ <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
+ <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/2.0')}" />
+ <property name="resgen.tool" value="resgen" />
+ <property name="csc.supportsdocgeneration" value="true" />
+ </if>
+ <!-- as from Mono 1.2.3.50, resgen supports the /usesourcepath option -->
+ <if test="${pkg-config::is-atleast-version('mono', '1.2.3.50')}">
+ <property name="resgen.supportsexternalfilereferences" value="true" />
+ </if>
+ </project>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">gmcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">strict</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">vbnc</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="exename">${resgen.tool}</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportsexternalfilereferences">${resgen.supportsexternalfilereferences}</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-3.5"
+ family="mono"
+ version="3.5"
+ description="Mono 3.5 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
+ clrversion="2.0.50727"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/2.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${path::combine(prefix, 'bin/mono')}" />
+ </auto>
+ <strict>
+ <engine program="${path::combine(prefix, 'bin/mono')}">
+ <arg value="--runtime=v2.0.50727" />
+ </engine>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.5')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 2.0 specific assemblies -->
+ <include name="extensions/mono/2.0/**/*.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
+ <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${prefix}/bin" />
+ </tool-paths>
+ <project>
+ <if test="${not pkg-config::exists('mono')}">
+ <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+ </if>
+ <property name="resgen.supportsexternalfilereferences" value="false" />
+ <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+ <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/3.5')}" />
+ </project>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">gmcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="langversion">linq</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">strict</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">vbnc</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="managed">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="mono-4.0"
+ family="mono"
+ version="4.0"
+ description="Mono 4.0 Profile"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/4.0')}"
+ clrversion="4.0.30319"
+ clrtype="Desktop"
+ vendor="Mono"
+ >
+ <runtime>
+ <probing-paths>
+ <directory name="lib/mono/2.0" />
+ <directory name="lib/mono/neutral" />
+ <directory name="lib/common/2.0" />
+ <directory name="lib/common/neutral" />
+ </probing-paths>
+ <modes>
+ <auto>
+ <engine program="${path::combine(prefix, 'bin/mono')}" />
+ </auto>
+ <strict>
+ <engine program="${path::combine(prefix, 'bin/mono')}">
+ <arg value="--runtime=v4.0.30319" />
+ </engine>
+ </strict>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/4.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.5')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
+ <include name="*.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include Mono version-neutral assemblies -->
+ <include name="extensions/mono/neutral/**/*.dll" />
+ <!-- include Mono 2.0 specific assemblies -->
+ <include name="extensions/mono/2.0/**/*.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <directory name="${path::combine(prefix, 'lib/mono/3.5')}" />
+ <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
+ <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${prefix}/bin" />
+ </tool-paths>
+ <project>
+ <if test="${not pkg-config::exists('mono')}">
+ <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+ </if>
+ <property name="resgen.supportsexternalfilereferences" value="false" />
+ <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+ <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/4.0')}" />
+ </project>
+ <tasks>
+ <task name="al">
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="csc">
+ <attribute name="exename">dmcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="langversion">linq</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="jsc">
+ <attribute name="exename">mjs</attribute>
+ <attribute name="managed">strict</attribute>
+ </task>
+ <task name="vbc">
+ <attribute name="exename">vbnc</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="managed">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ <attribute name="managed">true</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ <task name="ilasm">
+ <attribute name="managed">true</attribute>
+ </task>
+ </tasks>
+ </framework>
+ <framework
+ name="moonlight-2.0"
+ family="moonlight"
+ version="2.0"
+ description="Moonlight 2.0"
+ sdkdirectory="${toolDirectory}"
+ frameworkdirectory="${toolDirectory}"
+ frameworkassemblydirectory="${toolDirectory}"
+ clrversion="2.0.50727"
+ clrtype="Browser"
+ vendor="Mono"
+ >
+ <runtime>
+ <modes>
+ <auto>
+ <engine program="${path::combine(prefix, 'bin/mono')}">
+ <arg value="--runtime=moonlight" />
+ <arg value="--security=temporary-smcs-hack" />
+ </engine>
+ </auto>
+ </modes>
+ </runtime>
+ <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.1')}">
+ <include name="Microsoft.VisualBasic.dll" />
+ <include name="mscorlib.dll" />
+ <include name="System.Core.dll" />
+ <include name="System.dll" />
+ <include name="System.Net.dll" />
+ <include name="System.Runtime.Serialization.dll" />
+ <include name="System.ServiceModel.dll" />
+ <include name="System.ServiceModel.Web.dll" />
+ <include name="System.Windows.Browser.dll" />
+ <include name="System.Windows.dll" />
+ <include name="System.Xml.dll" />
+ </reference-assemblies>
+ <task-assemblies>
+ <!-- include MS.NET version-neutral assemblies -->
+ <include name="extensions/net/neutral/**/*.dll" />
+ <!-- include MS.NET 2.0 specific assemblies -->
+ <include name="extensions/net/2.0/**/*.dll" />
+ <!-- include MS.NET specific task assembly -->
+ <include name="NAnt.MSNetTasks.dll" />
+ <!-- include MS.NET specific test assembly -->
+ <include name="NAnt.MSNet.Tests.dll" />
+ <!-- include .NET 2.0 specific assemblies -->
+ <include name="extensions/common/2.0/**/*.dll" />
+ </task-assemblies>
+ <tool-paths>
+ <directory name="${toolDirectory}" />
+ <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
+ <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+ <!-- unmanaged tools -->
+ <directory name="${prefix}/bin" />
+ </tool-paths>
+ <project>
+ <if test="${not pkg-config::exists('mono')}">
+ <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+ </if>
+ <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+ <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/2.1')}" />
+ </project>
+ <tasks>
+ <task name="csc">
+ <attribute name="exename">smcs</attribute>
+ <attribute name="managed">true</attribute>
+ <attribute name="supportspackagereferences">true</attribute>
+ <attribute name="supportsnowarnlist">true</attribute>
+ <attribute name="supportsdocgeneration">true</attribute>
+ <attribute name="supportskeycontainer">true</attribute>
+ <attribute name="supportskeyfile">true</attribute>
+ <attribute name="supportsdelaysign">true</attribute>
+ <attribute name="supportslangversion">true</attribute>
+ </task>
+ <task name="resgen">
+ <attribute name="supportsassemblyreferences">true</attribute>
+ <attribute name="supportsexternalfilereferences">true</attribute>
+ </task>
+ <task name="delay-sign">
+ <attribute name="exename">sn</attribute>
+ </task>
+ <task name="license">
+ <attribute name="hascommandlinecompiler">false</attribute>
+ </task>
+ </tasks>
+ </framework>
+ </platform>
+ </frameworks>
+ <properties>
+ <!-- properties defined here are accessible to all build files -->
+ <!-- <property name="foo" value = "bar" readonly="false" /> -->
+ </properties>
+ </nant>
+ <!--
+ This section contains the log4net configuration settings.
+
+ By default, no messages will be logged to the log4net logging infrastructure.
+
+ To enable the internal logging, set the threshold attribute on the log4net element
+ to "ALL".
+
+ When internal logging is enabled, internal messages will be written to the
+ console.
+ -->
+ <log4net threshold="OFF">
+ <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
+ <layout type="log4net.Layout.PatternLayout">
+ <param name="ConversionPattern" value="[%c{2}:%m - [%x] &lt;%X{auth}&gt;]%n" />
+ </layout>
+ </appender>
+ <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
+ <param name="File" value="${APPDATA}\\NAnt\\NAnt.log" />
+ <param name="AppendToFile" value="true" />
+ <param name="MaxSizeRollBackups" value="2" />
+ <param name="MaximumFileSize" value="500KB" />
+ <param name="RollingStyle" value="Size" />
+ <param name="StaticLogFileName" value="true" />
+ <layout type="log4net.Layout.PatternLayout">
+ <param name="ConversionPattern" value="[%c{2}:%m - [%x] &lt;%X{auth}&gt;]%n" />
+ </layout>
+ </appender>
+ <!-- Setup the root category, add the appenders and set the default level -->
+ <root>
+ <!-- Only log messages with severity ERROR (or higher) -->
+ <level value="ERROR" />
+ <!-- Log messages to the console -->
+ <appender-ref ref="ConsoleAppender" />
+ <!-- Uncomment the next line to enable logging messages to the NAnt.log file -->
+ <!-- <appender-ref ref="RollingLogFileAppender" /> -->
+ </root>
+ <!-- Specify the priority for some specific categories -->
+ <!--
+ <logger name="NAnt.Core.TaskBuilderCollection">
+ <level value="DEBUG" />
+ </logger>
+ <logger name="NAnt">
+ <level value="INFO" />
+ </logger>
+ -->
+ </log4net>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <probing privatePath="lib" />
+ </assemblyBinding>
+ <NetFx40_LegacySecurityPolicy enabled="true"/>
+ </runtime>
+ <startup>
+ <!-- .NET Framework 4.0 -->
+ <supportedRuntime version="v4.0.30319" />
+ <!-- .NET Framework 2.0 -->
+ <supportedRuntime version="v2.0.50727" />
+ </startup>
+</configuration>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NAnt.xml b/NUnitLite-0.9.0/tools/nant/bin/NAnt.xml
new file mode 100755
index 0000000..05605b6
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NAnt.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.Console.ConsoleStub">
+ <summary>
+ Stub used to created <see cref="T:System.AppDomain"/> and launch real <c>ConsoleDriver</c>
+ class in Core assembly.
+ </summary>
+ </member>
+ <member name="M:NAnt.Console.ConsoleStub.Main(System.String[])">
+ <summary>
+ Entry point for executable
+ </summary>
+ <param name="args">Command Line arguments</param>
+ <returns>The result of the real execution</returns>
+ </member>
+ <member name="M:NAnt.Console.ConsoleStub.ConstructPrivateBinPath(NAnt.Console.ConsoleStub.Framework,System.String)">
+ <summary>
+ Constructs the privatebinpath.
+ </summary>
+ <remarks>
+ <para>
+ For the common version dir, we do not use the framework version
+ as defined in the NAnt configuration file but the CLR version
+ since the assemblies in that directory are not specific to a
+ certain family and the framwork version might differ between
+ families (eg. mono 1.0 == .NET 1.1).
+ </para>
+ </remarks>
+ <param name="runtimeFramework">The runtime framework.</param>
+ <param name="baseDir">The base directory of the domain.</param>
+ <returns>
+ The privatebinpath.
+ </returns>
+ </member>
+ <member name="M:NAnt.Console.ConsoleStub.GetRelativePath(System.String,System.String)">
+ <summary>
+ Given an absolute directory and an absolute file name, returns a
+ relative file name.
+ </summary>
+ <param name="basePath">An absolute directory.</param>
+ <param name="absolutePath">An absolute file name.</param>
+ <returns>
+ A relative file name for the given absolute file name.
+ </returns>
+ </member>
+ <member name="T:NAnt.Console.ConsoleStub.HelperArguments">
+ <summary>
+ Helper class for invoking the application entry point in NAnt.Core
+ and passing the command-line arguments.
+ </summary>
+ </member>
+ <member name="M:NAnt.Console.ConsoleStub.HelperArguments.#ctor(System.String[],System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NAnt.Console.ConsoleStub.HelperArguments"/>
+ class with the specified command-line arguments.
+ </summary>
+ <param name="args">The commandline arguments passed to NAnt.exe.</param>
+ <param name="probePaths">Directories relative to the base directory of the AppDomain to probe for missing assembly references.</param>
+ </member>
+ <member name="M:NAnt.Console.ConsoleStub.HelperArguments.CallConsoleRunner">
+ <summary>
+ Invokes the application entry point in NAnt.Core.
+ </summary>
+ </member>
+ <member name="P:NAnt.Console.ConsoleStub.HelperArguments.ExitCode">
+ <summary>
+ Gets the status that the build process returned when it exited.
+ </summary>
+ <value>
+ The code that the build process specified when it terminated.
+ </value>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.dll b/NUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.dll
new file mode 100755
index 0000000..e646883
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.xml b/NUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.xml
new file mode 100755
index 0000000..83da5d7
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/NDoc.Documenter.NAnt.xml
@@ -0,0 +1,373 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NDoc.Documenter.NAnt</name>
+ </assembly>
+ <members>
+ <member name="T:NDoc.Documenter.NAnt.NAntDocumenter">
+ <summary>
+ NDoc Documenter for building custom NAnt User documentation.
+ </summary>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntDocumenter.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NDoc.Documenter.NAnt.NAntDocumenter"/> class.
+ </summary>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntDocumenter.Clear">
+ <summary>
+ Resets the documenter to a clean state.
+ </summary>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntDocumenter.Build(NDoc.Core.Project)">
+ <summary>
+ Builds the documentation.
+ </summary>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenter.OutputDirectory">
+ <summary>
+ Gets the documenter's output directory.
+ </summary>
+ <value>
+ The documenter's output directory.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenter.NamespaceFilter">
+ <summary>
+ Gets or sets the root namespace to document.
+ </summary>
+ <value>
+ The root namespace to document, or a empty <see cref="T:System.String"/>
+ if no restriction should be set on the namespace to document.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenter.ProductName">
+ <summary>
+ Gets the name of the product for which documentation should be
+ generated.
+ </summary>
+ <value>
+ The name of the product for which documentation should be
+ generated.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenter.ProductVersion">
+ <summary>
+ Gets the version of the product for which documentation should be
+ generated.
+ </summary>
+ <value>
+ The version of the product for which documentation should be
+ generated.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenter.ProductUrl">
+ <summary>
+ Gets the URL of the website of the product for which documentation
+ should be generated.
+ </summary>
+ <value>
+ The URL of the website of the product for which documentation should
+ be generated.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenter.MainOutputFile">
+ <summary>
+ Gets the documenter's main output file.
+ </summary>
+ <value>
+ The documenter's main output file.
+ </value>
+ </member>
+ <member name="T:NDoc.Documenter.NAnt.NAntDocumenterConfig">
+ <summary>
+ NDoc configuration class for <see cref="T:NDoc.Documenter.NAnt.NAntDocumenter"/>.
+ </summary>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntDocumenterConfig.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:NDoc.Documenter.NAnt.NAntDocumenterConfig"/>
+ class.
+ </summary>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.OutputDirectory">
+ <summary>
+ Gets or sets the output directory.
+ </summary>
+ <value>
+ The output directory.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.SdkLinksOnWeb">
+ <summary>
+ Gets or sets a value indicating whether .NET Framework SDK links
+ should point to the online MSDN library.
+ </summary>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.ProductName">
+ <summary>
+ Gets or sets the name of the product for which documentation
+ should be generated.
+ </summary>
+ <value>
+ The name of the product for which documentation should be
+ generated. The default is "NAnt".
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.ProductVersion">
+ <summary>
+ Gets or sets the version of the product for which documentation
+ should be generated.
+ </summary>
+ <value>
+ The version of the product for which documentation should be
+ generated.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.ProductUrl">
+ <summary>
+ Gets or sets the URL of product website.
+ </summary>
+ <value>
+ The URL of the website of the product for which documentation should
+ be generated.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.NAntBaseUri">
+ <summary>
+ Gets or sets the base URI for linking to NAnt docs.
+ </summary>
+ <value>
+ The base URI for linking to NAnt docs.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntDocumenterConfig.NamespaceFilter">
+ <summary>
+ Gets or sets the root namespace to document.
+ </summary>
+ <value>
+ The root namespace to document, or a empty <see cref="T:System.String"/>
+ if no restriction should be set on the namespace to document.
+ </value>
+ </member>
+ <member name="T:NDoc.Documenter.NAnt.NAntXsltUtilities">
+ <summary>
+ Provides an extension object for the XSLT transformations.
+ </summary>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.#ctor(System.Xml.XmlDocument,NDoc.Documenter.NAnt.NAntDocumenterConfig)">
+ <summary>
+ Initializes a new instance of the <see cref="T:NDoc.Documenter.NAnt.NAntXsltUtilities"/>
+ class.
+ </summary>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetNamespaceFilter">
+ <summary>
+ Gets the root namespace to document.
+ </summary>
+ <returns>
+ The root namespace to document, or a empty <see cref="T:System.String"/>
+ if no restriction should be set on the namespace to document.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetClassNode(System.String)">
+ <summary>
+ Searches the document for the <c>&lt;class&gt;</c> node with the
+ given id.
+ </summary>
+ <param name="type">Type.FullName of class to return</param>
+ <returns>
+ The <c>&lt;class&gt;</c> node with the given id, or <see langword="null" />
+ if the node does not exist.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetHRef(System.String)">
+ <summary>
+ Returns an href for a cref.
+ </summary>
+ <param name="cref">The cref for which the href will be looked up.</param>
+ <returns>
+ The href for the specified cref.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetName(System.String)">
+ <summary>
+ Returns the name for a given cref.
+ </summary>
+ <param name="cref">The cref for which the name will be looked up.</param>
+ <returns>
+ The name for the specified cref.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetTaskName(System.String)">
+ <summary>
+ Returns the NAnt task name for a given cref.
+ </summary>
+ <param name="cref">The cref for the task name will be looked up.</param>
+ <returns>
+ The NAnt task name for the specified cref.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetElementName(System.String)">
+ <summary>
+ Returns the NAnt element name for a given cref.
+ </summary>
+ <param name="cref">The cref for the element name will be looked up.</param>
+ <returns>
+ The NAnt element name for the specified cref.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetElementDocType(System.Xml.XmlNode)">
+ <summary>
+ Determines the <see cref="T:NDoc.Documenter.NAnt.ElementDocType"/> of the given type node.
+ </summary>
+ <param name="typeNode">The type node for which to determine the <see cref="T:NDoc.Documenter.NAnt.ElementDocType"/>.</param>
+ <returns>
+ The <see cref="T:NDoc.Documenter.NAnt.ElementDocType"/> of the given type node.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetElementDocTypeByID(System.String)">
+ <summary>
+ Determines the <see cref="T:NDoc.Documenter.NAnt.ElementDocType"/> of the type to which
+ the given cref points.
+ </summary>
+ <param name="cref">The cref for which to determine the <see cref="T:NDoc.Documenter.NAnt.ElementDocType"/>.</param>
+ <returns>
+ The <see cref="T:NDoc.Documenter.NAnt.ElementDocType"/> of the type to which the given
+ cref points.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.IsDataType(System.String)">
+ <summary>
+ Determines whether the given cref points to a <c>datatype</c>.
+ </summary>
+ <param name="cref">The cref to check.</param>
+ <returns>
+ <see langword="true" /> if the given cref points to a <c>datatype</c>;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.IsElement(System.String)">
+ <summary>
+ Determines whether the given cref points to an <c>element</c>.
+ </summary>
+ <param name="cref">The cref to check.</param>
+ <returns>
+ <see langword="true"/> if the given cref points to an <c>element</c>;
+ otherwise, <see langword="false"/>.
+ </returns>
+ <remarks>
+ When the cref points to a <see cref="T:NAnt.Core.Task"/> or <see cref="T:NAnt.Core.DataTypeBase"/>
+ this method returns <see langword="false"/>.
+ </remarks>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.IsFilter(System.String)">
+ <summary>
+ Determines whether the given cref points to a <c>datatype</c>.
+ </summary>
+ <param name="cref">The cref to check.</param>
+ <returns>
+ <see langword="true" /> if the given cref points to a <c>datatype</c>;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.IsTask(System.String)">
+ <summary>
+ Determines whether the given cref points to a <c>task</c>.
+ </summary>
+ <param name="cref">The cref to check.</param>
+ <returns>
+ <see langword="true" /> if the given cref points to a <c>task</c>;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.IsFunctionSet(System.String)">
+ <summary>
+ Determines whether the given cref points to a <c>functionset</c>.
+ </summary>
+ <param name="cref">The cref to check.</param>
+ <returns>
+ <see langword="true" /> if the given cref points to a <c>functionset</c>;
+ otherwise, <see langword="false" />.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.UrlEncode(System.String)">
+ <summary>
+ Encodes a URL string using <see cref="P:System.Text.Encoding.UTF8"/> for reliable
+ HTTP transmission from the Web server to a client.
+ </summary>
+ <param name="value">The text to encode.</param>
+ <returns>
+ The encoded string.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetElementNameForProperty(System.Xml.XmlNode)">
+ <summary>
+ Gets the BuildElementAttribute name for the "class/property" XmlNode
+ </summary>
+ <param name="propertyNode">The XmlNode to look for a name.</param>
+ <returns>The BuildElementAttrbute.Name if the attribute exists for the node.</returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetFileNameForFunction(System.Xml.XmlNode,System.Boolean)">
+ <summary>
+ Returns the filename to use for the given function XmlElement
+ </summary>
+ <param name="typeNode">The "method" element to find the filename for.</param>
+ <param name="urlEncode">Specified whether to URLencode the filename.</param>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetFileNameForType(System.Xml.XmlNode,System.Boolean)">
+ <summary>
+ Returns the filename to use for the given class XmlNode
+ </summary>
+ <param name="typeNode">The "Class" element to find the filename for.</param>
+ <returns>
+ The relative path and filename where this type is stored in the
+ documentation.
+ </returns>
+ <remarks>
+ For a type that is neither a task, enum, global type, filter or
+ functionset, the returned filename will point to the SDK docs for
+ that type.
+ </remarks>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetTaskNameForType(System.Xml.XmlNode)">
+ <summary>
+ Gets the TaskNameAttrbute name for the "class" XmlNode
+ </summary>
+ <param name="propertyNode">The XmlNode to look for a name.</param>
+ <returns>The <see cref="!:TaskNameAttribute.Name"/> if the attribute exists for the node.</returns>
+ <remarks>
+ The class is also checked to make sure it is derived from <see cref="T:NAnt.Core.Task"/>
+ </remarks>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetElementNameForMethod(System.Xml.XmlNode)">
+ <summary>
+ Gets the function name for methods that represent a NAtn function.
+ </summary>
+ <param name="methodNode">The XmlNode to look for a name.</param>
+ <returns>
+ The function name if <paramref name="methodNode" /> represent a
+ NAnt function.
+ </returns>
+ </member>
+ <member name="M:NDoc.Documenter.NAnt.NAntXsltUtilities.GetHRefForFunctionSet(System.Xml.XmlNode)">
+ <summary>
+ Returns a partial URL to link to the functionset in the function index.
+ </summary>
+ <param name="typeNode">The "Class" element to find the filename for.</param>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntXsltUtilities.SdkDocBaseUrl">
+ <summary>
+ Gets the base url for links to system types.
+ </summary>
+ <value>
+ The base url for links to system types.
+ </value>
+ </member>
+ <member name="P:NDoc.Documenter.NAnt.NAntXsltUtilities.SdkDocExt">
+ <summary>
+ Gets the page file extension for links to system types.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll
new file mode 100755
index 0000000..43a627c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml
new file mode 100755
index 0000000..70166d3
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.MSBuild</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.MSBuild.Functions.MSBuildFunctions">
+ <summary>
+ Functions to return information for MSBuild system.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSBuild.Functions.MSBuildFunctions.#ctor(NAnt.Core.Project,NAnt.Core.PropertyDictionary)">
+ <exclude/>
+ </member>
+ <member name="M:NAnt.MSBuild.Functions.MSBuildFunctions.IsMsbuildProject(System.String)">
+ <summary>
+ Test whether project is VS2005 project and could be built using &lt;msbuild&gt;
+ </summary>
+ <param name="project">The name or path of the project file (csproj, vbproj, ...).</param>
+ <returns>
+ True, if it is msbuild project, False otherwise.
+ </returns>
+ </member>
+ <member name="T:NAnt.VSNet.WhidbeySolution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2005 (Whidbey) solution files.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.OrcasSolution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2008 (Orcas) solution files.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.RosarioSolution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2010 (Rosario) solution files.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSBuild.MSBuildProject.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Determines the version of the target msbuild file.
+ </summary>
+ <remarks>
+ <para>
+ This method identifies the msbuild version by reviewing the following tags in order:
+ </para>
+ <list type="number">
+ <item>
+ <description>&lt;ProductVersion&gt;</description>
+ </item>
+ <item>
+ <description>&lt;TargetFrameworkVersion&gt;</description>
+ </item>
+ <item>
+ <description>ToolsVersion attribute</description>
+ </item>
+ </list>
+ </remarks>
+ <param name="docElement">
+ A <see cref="T:System.Xml.XmlElement"/> representing the msbuild project file.
+ </param>
+ <returns>
+ A <see cref="T:NAnt.VSNet.ProductVersion"/> enum value indicating the msbuild project
+ file version.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ version string found in the tags listed above is not recognized.
+ </exception>
+ </member>
+ <member name="T:NAnt.MSBuild.NAntLoggerVerbosity">
+ <summary>
+ Enum indicating the level of verbosity for the NAnt logger.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Quiet">
+ <summary>Indicates no output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Minimal">
+ <summary>Indicates little output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Normal">
+ <summary>Indicates normal output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Detailed">
+ <summary>Indicates detailed output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Diagnostic">
+ <summary>Indicates all output</summary>
+ </member>
+ <member name="T:NAnt.MSBuild.NAntLogger">
+ <summary>
+ Logger classed used for MSBuild tasks in NAnt.
+ </summary>
+ </member>
+ <member name="T:NAnt.MSBuild.NAntLogger.DummyTask">
+ <summary>Sample task used for testing.</summary>
+ </member>
+ <member name="M:NAnt.MSBuild.NAntLogger.DummyTask.#ctor(NAnt.Core.Project,System.String)">
+ <summary>
+ Sample task constructor.
+ </summary>
+ <param name="p">Project to assign task to.</param>
+ <param name="name">Sample name property.</param>
+ </member>
+ <member name="M:NAnt.MSBuild.NAntLogger.DummyTask.ExecuteTask">
+ <summary>Test method.</summary>
+ </member>
+ <member name="P:NAnt.MSBuild.NAntLogger.DummyTask.Name">
+ <summary>Gets sample name for task.</summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.dll b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.dll
new file mode 100755
index 0000000..43a627c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.xml b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.xml
new file mode 100755
index 0000000..70166d3
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/extensions/common/4.0/NAnt.MSBuild.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>NAnt.MSBuild</name>
+ </assembly>
+ <members>
+ <member name="T:NAnt.MSBuild.Functions.MSBuildFunctions">
+ <summary>
+ Functions to return information for MSBuild system.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSBuild.Functions.MSBuildFunctions.#ctor(NAnt.Core.Project,NAnt.Core.PropertyDictionary)">
+ <exclude/>
+ </member>
+ <member name="M:NAnt.MSBuild.Functions.MSBuildFunctions.IsMsbuildProject(System.String)">
+ <summary>
+ Test whether project is VS2005 project and could be built using &lt;msbuild&gt;
+ </summary>
+ <param name="project">The name or path of the project file (csproj, vbproj, ...).</param>
+ <returns>
+ True, if it is msbuild project, False otherwise.
+ </returns>
+ </member>
+ <member name="T:NAnt.VSNet.WhidbeySolution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2005 (Whidbey) solution files.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.OrcasSolution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2008 (Orcas) solution files.
+ </summary>
+ </member>
+ <member name="T:NAnt.VSNet.RosarioSolution">
+ <summary>
+ Analyses Microsoft Visual Studio .NET 2010 (Rosario) solution files.
+ </summary>
+ </member>
+ <member name="M:NAnt.MSBuild.MSBuildProject.DetermineProductVersion(System.Xml.XmlElement)">
+ <summary>
+ Determines the version of the target msbuild file.
+ </summary>
+ <remarks>
+ <para>
+ This method identifies the msbuild version by reviewing the following tags in order:
+ </para>
+ <list type="number">
+ <item>
+ <description>&lt;ProductVersion&gt;</description>
+ </item>
+ <item>
+ <description>&lt;TargetFrameworkVersion&gt;</description>
+ </item>
+ <item>
+ <description>ToolsVersion attribute</description>
+ </item>
+ </list>
+ </remarks>
+ <param name="docElement">
+ A <see cref="T:System.Xml.XmlElement"/> representing the msbuild project file.
+ </param>
+ <returns>
+ A <see cref="T:NAnt.VSNet.ProductVersion"/> enum value indicating the msbuild project
+ file version.
+ </returns>
+ <exception cref="T:NAnt.Core.BuildException">
+ version string found in the tags listed above is not recognized.
+ </exception>
+ </member>
+ <member name="T:NAnt.MSBuild.NAntLoggerVerbosity">
+ <summary>
+ Enum indicating the level of verbosity for the NAnt logger.
+ </summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Quiet">
+ <summary>Indicates no output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Minimal">
+ <summary>Indicates little output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Normal">
+ <summary>Indicates normal output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Detailed">
+ <summary>Indicates detailed output</summary>
+ </member>
+ <member name="F:NAnt.MSBuild.NAntLoggerVerbosity.Diagnostic">
+ <summary>Indicates all output</summary>
+ </member>
+ <member name="T:NAnt.MSBuild.NAntLogger">
+ <summary>
+ Logger classed used for MSBuild tasks in NAnt.
+ </summary>
+ </member>
+ <member name="T:NAnt.MSBuild.NAntLogger.DummyTask">
+ <summary>Sample task used for testing.</summary>
+ </member>
+ <member name="M:NAnt.MSBuild.NAntLogger.DummyTask.#ctor(NAnt.Core.Project,System.String)">
+ <summary>
+ Sample task constructor.
+ </summary>
+ <param name="p">Project to assign task to.</param>
+ <param name="name">Sample name property.</param>
+ </member>
+ <member name="M:NAnt.MSBuild.NAntLogger.DummyTask.ExecuteTask">
+ <summary>Test method.</summary>
+ </member>
+ <member name="P:NAnt.MSBuild.NAntLogger.DummyTask.Name">
+ <summary>Gets sample name for task.</summary>
+ </member>
+ </members>
+</doc>
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console-runner.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console-runner.dll
new file mode 100755
index 0000000..b0e611a
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console-runner.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe
new file mode 100755
index 0000000..0735eef
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe.config b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe.config
new file mode 100755
index 0000000..8a6a2a6
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit-console.exe.config
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <!--
+ The .NET 2.0 build of the console runner only
+ runs under .NET 2.0 or higher. The setting
+ useLegacyV2RuntimeActivationPolicy only applies
+ under .NET 4.0 and permits use of mixed mode
+ assemblies, which would otherwise not load
+ correctly.
+ -->
+ <startup useLegacyV2RuntimeActivationPolicy="true">
+ <!-- Comment out the next line to force use of .NET 4.0 -->
+ <supportedRuntime version="v2.0.50727" />
+ <supportedRuntime version="v4.0.30319" />
+ </startup>
+
+ <runtime>
+ <!-- Ensure that test exceptions don't crash NUnit -->
+ <legacyUnhandledExceptionPolicy enabled="1" />
+
+ <!-- Run partial trust V2 assemblies in full trust under .NET 4.0 -->
+ <loadFromRemoteSources enabled="true" />
+
+ <!-- Look for addins in the addins directory for now -->
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <probing privatePath="lib;addins"/>
+ </assemblyBinding>
+
+ </runtime>
+
+</configuration> \ No newline at end of file
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.dll
new file mode 100755
index 0000000..5f748be
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.interfaces.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.interfaces.dll
new file mode 100755
index 0000000..72b9486
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.core.interfaces.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.framework.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.framework.dll
new file mode 100755
index 0000000..eaea9ee
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.framework.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.util.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.util.dll
new file mode 100755
index 0000000..28d603c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/2.0/nunit.util.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll
new file mode 100755
index 0000000..a64360b
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dll
new file mode 100755
index 0000000..e2a71cb
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dll
new file mode 100755
index 0000000..60ef0c9
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Core.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Core.dll
new file mode 100755
index 0000000..07fbbe8
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Core.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dll
new file mode 100755
index 0000000..986998c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dll
new file mode 100755
index 0000000..bc3d5a4
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NUnitCore.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NUnitCore.dll
new file mode 100755
index 0000000..0f1873c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/NUnitCore.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/netDumbster.dll b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/netDumbster.dll
new file mode 100755
index 0000000..49d7191
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/lib/common/neutral/netDumbster.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/log4net.dll b/NUnitLite-0.9.0/tools/nant/bin/log4net.dll
new file mode 100755
index 0000000..20a2e1c
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/log4net.dll
Binary files differ
diff --git a/NUnitLite-0.9.0/tools/nant/bin/scvs.exe b/NUnitLite-0.9.0/tools/nant/bin/scvs.exe
new file mode 100755
index 0000000..093d36e
--- /dev/null
+++ b/NUnitLite-0.9.0/tools/nant/bin/scvs.exe
Binary files differ