From 46f90255bf6d9148d0e9f3c096d6b0e8f95fe1e9 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Tue, 5 Jul 2011 23:16:37 -0700 Subject: [PATCH] Updated fluent assertion, unignored qulity equality tests. --- Libraries/FluentAssertions.dll | Bin 95232 -> 106496 bytes Libraries/FluentAssertions.xml | 2675 +++++++++++++++++++++-------- NzbDrone.Core.Test/QualityTest.cs | 14 +- 3 files changed, 1956 insertions(+), 733 deletions(-) diff --git a/Libraries/FluentAssertions.dll b/Libraries/FluentAssertions.dll index cd2ffbf5af4cb63e37d763c7f90816e6bcd8a1fb..0e091fd15835182470fd2406fc33908dcb597149 100644 GIT binary patch literal 106496 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 x!~Gt?y}yq}3N+$>pR}=};|A#Q}e*s?h$6f#c diff --git a/Libraries/FluentAssertions.xml b/Libraries/FluentAssertions.xml index 76cc4d4bb..0ff33172f 100644 --- a/Libraries/FluentAssertions.xml +++ b/Libraries/FluentAssertions.xml @@ -4,60 +4,223 @@ FluentAssertions - + - Provides a fluent API for verifying an arbitrary condition. + Initializes a new instance of the class. - + - Initializes a new instance of the class. + Contains extension methods for custom assertions in unit tests. - + - Gets the name or identifier of the current subject, or a default value if the subject is not known. + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. - + - Indicates that every argument passed into is displayed on a separate line. + Provides methods for asserting the execution time of a method or property. + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + - + - Gets or sets the name of the subject for the next verification. + Provides methods for asserting the execution time of a method or property. + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + - + - The amount of time that a should exceed compared to another . + Asserts that the throws an exception. + + The type of the exception it should throw. + + + Returns an object that allows asserting additional members of the thrown exception. + - + - The amount of time that a should be equal or exceed compared to another . + Asserts that the throws an exception. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + - + - The amount of time that a should differ exactly compared to another . + Asserts that the does not throw a particular exception. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + - + - The maximum amount of time that a should differ compared to another . + Asserts that the does not throw a particular exception. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + - + - The amount of time that a should be within another . + Asserts that the does not throw any exception at all. - + - Gets the object which value is being asserted. + Asserts that the does not throw any exception at all. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Asserts that the properties of an object matches those of another object. + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is false. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + + + + Asserts that the value is equal to the specified value. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + @@ -77,7 +240,7 @@ The type to which the object should be assignable. The reason why the object should be assignable to the type. - The parameters used when formatting the . + The parameters used when formatting the . An which can be used to chain assertions. @@ -93,7 +256,7 @@ The predicate which must be statisfied by the . The reason why the predicate should be satisfied. - The parameters used when formatting the . + The parameters used when formatting the . An which can be used to chain assertions. @@ -109,7 +272,7 @@ The predicate which must be statisfied by the . The reason why the predicate should be satisfied. - The parameters used when formatting the . + The parameters used when formatting the . An which can be used to chain assertions. @@ -119,346 +282,421 @@ - Asserts that the number of items in the collection matches the supplied amount. + Asserts that the number of items in the collection matches the supplied amount. - Asserts that the number of items in the collection matches the supplied amount. + Asserts that the number of items in the collection matches the supplied amount. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the number of items in the collection matches a condition stated by a predicate. + Asserts that the number of items in the collection matches a condition stated by the . - Asserts that the number of items in the collection matches a condition stated by a predicate. + Asserts that the number of items in the collection matches a condition stated by the . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the collection does not contain any items. + Asserts that the collection does not contain any items. - Asserts that the collection does not contain any items. + Asserts that the collection does not contain any items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the collection contains at least 1 item. + Asserts that the collection contains at least 1 item. - Asserts that the collection contains at least 1 item. + Asserts that the collection contains at least 1 item. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the collection does not contain any duplicate items. + Asserts that the collection does not contain any duplicate items. - Asserts that the collection does not contain any duplicate items. + Asserts that the collection does not contain any duplicate items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the collection does not contain any null items. + Asserts that the collection does not contain any null items. - Asserts that the collection does not contain any null items. + Asserts that the collection does not contain any null items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . - + - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the current collection only contains items that are assignable to the type . + Asserts that the current collection only contains items that are assignable to the type . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the collection is a subset of the . + Asserts that the collection is a subset of the . - Asserts that the collection is a subset of the . + Asserts that the collection is a subset of the . - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. - Zero or more objects to format using the placeholders in . + Zero or more objects to format using the placeholders in . - Asserts that the collection is not a subset of the . + Asserts that the collection is not a subset of the . - Asserts that the collection is not a subset of the . + Asserts that the collection is not a subset of the . - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. - Zero or more objects to format using the placeholders in . + Zero or more objects to format using the placeholders in . - Assert that the current collection has the same number of elements as . + Assert that the current collection has the same number of elements as . - Assert that the current collection has the same number of elements as . + Assert that the current collection has the same number of elements as . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the current collection has not been initialized yet with an actual collection. + Asserts that the current collection has not been initialized yet with an actual collection. - Asserts that the current collection has not been initialized yet with an actual collection. + Asserts that the current collection has not been initialized yet with an actual collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the current collection has been initialized with an actual collection. + Asserts that the current collection has been initialized with an actual collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the current collection has been initialized with an actual collection. + Asserts that the current collection has been initialized with an actual collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the current collection has the supplied at the supplied . + Asserts that the current collection has the supplied at the + supplied . - Asserts that the current collection has the supplied at the supplied . + Asserts that the current collection has the supplied at the + supplied . + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - Asserts that the current collection only contains items that are assignable to the type . + Asserts that the current collection only contains items that are assignable to the type . - Asserts that the current collection does not contain the supplied item. + Asserts that the current collection does not contain the supplied item. - Asserts that the current collection does not contain the supplied item. - - - - - Asserts that the collection contains the specified item. - - - - - Asserts that the collection contains the specified item. + Asserts that the current collection does not contain the supplied item. - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. - - Zero or more values to use for filling in any compatible placeholders. + + Zero or more objects to format using the placeholders in . - - - Asserts that the collection contains some extra items in addition to the original items. - - - - - Asserts that the collection contains at least one item that matches the predicate. - - - + - Asserts that the collection contains at least one item that matches the predicate. + Asserts that the subject is considered equal to another object according to the implementation of . - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. + + The object to pass to the subject's method. - - - Asserts that the collection only contains items that match a predicate. - - - + - Asserts that the collection only contains items that match a predicate. + Asserts that the subject is considered equal to another object according to the implementation of . - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. + + The object to pass to the subject's method. - - - - Asserts that the collection does not contain any items that match the predicate. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. - - Zero or more values to use for filling in any compatible placeholders. + + Zero or more objects to format using the placeholders in . - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - - + - Returns a human-readable representation of a particular object that starts on a new line. + Asserts that the subject is not equal to another object according to its implementation of . + + The object to pass to the subject's method. + - + - Asserts a floating point value approximates another value as close as possible. + Asserts that the subject is not equal to another object according to its implementation of . - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. + + The object to pass to the subject's method. A formatted phrase as is supported by explaining why the assertion @@ -468,15 +706,12 @@ Zero or more objects to format using the placeholders in . - + - Asserts a floating point value approximates another value as close as possible. + Asserts that the subject is less than another object according to its implementation of . - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. + + The object to pass to the subject's method. A formatted phrase as is supported by explaining why the assertion @@ -486,15 +721,12 @@ Zero or more objects to format using the placeholders in . - + - Asserts a floating point value approximates another value as close as possible. + Asserts that the subject is less than another object according to its implementation of . - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. + + The object to pass to the subject's method. A formatted phrase as is supported by explaining why the assertion @@ -504,15 +736,20 @@ Zero or more objects to format using the placeholders in . - + - Asserts a floating point value approximates another value as close as possible. + Asserts that the subject is less than or equal to another object according to its implementation of . - - The expected value to compare the actual value with. + + The object to pass to the subject's method. - - The maximum amount of which the two values may differ. + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. A formatted phrase as is supported by explaining why the assertion @@ -522,15 +759,20 @@ Zero or more objects to format using the placeholders in . - + - Asserts a floating point value approximates another value as close as possible. + Asserts that the subject is greater than another object according to its implementation of . - - The expected value to compare the actual value with. + + The object to pass to the subject's method. - - The maximum amount of which the two values may differ. + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. A formatted phrase as is supported by explaining why the assertion @@ -540,15 +782,20 @@ Zero or more objects to format using the placeholders in . - + - Asserts a floating point value approximates another value as close as possible. + Asserts that the subject is greater than or equal to another object according to its implementation of . - - The expected value to compare the actual value with. + + The object to pass to the subject's method. - - The maximum amount of which the two values may differ. + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. A formatted phrase as is supported by explaining why the assertion @@ -558,33 +805,32 @@ Zero or more objects to format using the placeholders in . - + - Asserts a floating point value approximates another value as close as possible. + Asserts that a value is within a range. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. - - Zero or more objects to format using the placeholders in . + + The maximum valid value of the range. - + - Asserts a floating point value approximates another value as close as possible. + Asserts that a value is within a range. - - The expected value to compare the actual value with. + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. - - The maximum amount of which the two values may differ. + + The maximum valid value of the range. A formatted phrase as is supported by explaining why the assertion @@ -594,222 +840,1150 @@ Zero or more objects to format using the placeholders in . - + - Records activity for a single event. + Asserts that a nullable numeric value is not null. - + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must contain the expected message. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Asserts that the current is exactly equal to the value. + + + + + Asserts that the current is exactly equal to the value. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + + + + Asserts that the current is before the specified value. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + + + + Asserts that the current is either on, or before the specified value. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + + + + Asserts that the current is after the specified value. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + + + + Asserts that the current is either on, or after the specified value. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + + + + Asserts that the current has the year. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + + + + Asserts that the current has the month. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + + + + Asserts that the current has the day. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + + + + Asserts that the current has the hour. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + + + + Asserts that the current has the minute. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + + + + Asserts that the current has the second. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Asserts that the thrown exception has a message that exactly matches the + + + The expected message of the exception. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + An which can be used to chain assertions. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + An which can be used to chain assertions. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Provides methods for asserting that the execution time of an satifies certain conditions. + + + + + Asserts that the execution time of the operation does not exceed a specified amount of time. + + + The maximum allowed duration. + + + + + Asserts that the execution time of the operation does not exceed a specified amount of time. + + + The maximum allowed duration. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides methods for asserting that the execution time of an object member satifies certain conditions. + + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + + + + Asserts that the collection contains the specified item. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + + + + Asserts that the collection contains at least one item that matches the predicate. + + + + + Asserts that the collection contains at least one item that matches the predicate. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + + + + Asserts that the collection only contains items that match a predicate. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + + + + Asserts that the collection does not contain any items that match the predicate. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the current dictionary has not been initialized yet with an actual dictionary. + + + + + Asserts that the current dictionary has not been initialized yet with an actual dictionary. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary has been initialized with an actual dictionary. + + + + + Asserts that the current dictionary has been initialized with an actual dictionary. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + + The expected amount. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + + The expected amount. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + + The predicate which must be statisfied by the amount of items + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + + The predicate which must be statisfied by the amount of items + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + - Records raised events for one event on one object + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + - + - Store information about a raised event + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. - Parameters the event was raised with + + The expected dictionary + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - The object events are recorded from + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + - + - The name of the event that's recorded + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. - The object events are recorded from - The name of the event that's recorded + + The expected key + - + - Enumerate raised events + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Enumerate raised events + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. - + + The expected keys + - + - Called by the auto-generated IL, to record information about a raised event. + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - The object events are recorded from + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + - + - The name of the event that's recorded + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + - + - Asserts that the supplied is met. + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. - The condition to assert. - - The message that will be used in the exception. This should describe what was expected and why. This message - can contain the following three placeholders:
- - {0} = the expected value - {1} = the actual value - {2} = a reason explaining the expectations -
- Any additional placeholders are allowed and will be satisfied using the . + + The expected value - - The expected value, or null if there is no explicit expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. - The actual value, or null if there is no explicit actual value. - Should describe the reason for the expectation. - Optional args for formatting placeholders in the . - - Optional arguments to satisfy any additional placeholders in the + + Zero or more objects to format using the placeholders in .
- + - Asserts that the supplied is met. + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. - The condition to assert. - - The message that will be used in the exception. This should describe what was expected and why. This message - can contain the following three placeholders:
- - {0} = the expected value - {1} = the actual value - {2} = a reason explaining the expectations -
- Any additional placeholders are allowed and will be satisfied using the . + + The expected values - - The expected value, or null if there is no explicit expected value. +
+ + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + + The expected values - The actual value, or null if there is no explicit actual value. - Should describe the reason for the expectation. - Optional args for formatting placeholders in the . - - Optional arguments to satisfy any additional placeholders in the + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . - + - Handles an assertion failure. + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. - - The message that will be used in the exception. This should describe what was expected and why. This message - can contain the following three placeholders:
- - {0} = the expected value - {1} = the actual value - {2} = a reason explaining the expectations -
- Any additional placeholders are allowed and will be satisfied using the . + + The unexpected value - - The expected value, or null if there is no explicit expected value. +
+ + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + + The unexpected value - The actual value, or null if there is no explicit actual value. - Should describe the reason for the expectation. - Optional args for formatting placeholders in the . - - Optional arguments to satisfy any additional placeholders in the + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . - + - Gets an object that wraps and executes a conditional or unconditional verification. + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The to look for + - + - Gets the object which value is being asserted. + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The to look for + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Is responsible for validating the equality of one or more properties of a subject with another object. + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + + + The value to validate + - + - Returns a based on a number of seconds. + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + + + The value to validate + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Returns a based on a number of seconds. + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The to look for + - + - Returns a based on a number of minutes. + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The to look for + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Returns a based on a number of hours. + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + + + The value to validate + - + - Returns a based on a number of days. + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + + + The value to validate + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Initializes a new instance of the class. + Gets the object which value is being asserted. - + - Static methods that aid in generic event subscription + Asserts that a value is within a range. + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + - + - Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder - when invoked. + Asserts that a value is within a range. + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Finds the Return Type of a Delegate. + Asserts that a nullable numeric value is not null. - + - Returns an Array of Types that make up a delegate's parameter signature. + Asserts that a nullable numeric value is not null. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Returns an array of types appended with an EventRecorder reference at the beginning. + Asserts that a nullable numeric value is null. - + - Returns T/F Dependent on a Type Being a Delegate. + Asserts that a nullable numeric value is null. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + - + - Returns the MethodInfo for the Delegate's "Invoke" Method. + Gets the object which value is being asserted. @@ -842,7 +2016,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -859,7 +2033,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -876,7 +2050,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -918,83 +2092,6 @@ Zero or more objects to format using the placeholders in . - - - Asserts that the thrown exception has a message matching the . - - The expected message of the exception. - - - - Asserts that the thrown exception has a message matching the . - - The expected message of the exception. - - The reason why the message of the exception should match the . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - An which can be used to chain assertions. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - An which can be used to chain assertions. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - Provides methods for selecting one or properties of an object and comparing them with another object. @@ -1019,207 +2116,52 @@ - Includes all properties of when comparing the subject with another object using , - except those specified using a property expression. - - - - - Includes only those properties of when comparing the subject with another object using - that were specified using a property expression. - - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Provides methods for asserting the execution time of a method or property. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Provides methods for asserting the execution time of a method or property. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Asserts that the throws an exception. - - - The type of the exception it should throw. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the throws an exception. - - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - - - Asserts that the does not throw a particular exception. - - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - - - - Asserts that the does not throw any exception at all. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. + Includes all properties of when comparing the subject with another object using , + except those specified using a property expression. - + - Asserts that the properties of an object matches those of another object. + Includes only those properties of when comparing the subject with another object using + that were specified using a property expression. - + - Safely casts the specified object to the type specified through . + Asserts that the previously selected properties of have the same value as the equally named + properties of . - Has been introduced to allow casting objects without breaking the fluent API. + Property values are considered equal if, after converting them to the requested type, calling + returns true. - - - - Provides methods for asserting that the execution time of an satifies certain conditions. - - - + - Asserts that the execution time of the operation does not exceed a specified amount of time. + Asserts that the previously selected properties of have the same value as the equally named + properties of . - - The maximum allowed duration. - + + Property values are considered equal if, after converting them to the requested type, calling + returns true. + - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. - - Zero or more values to use for filling in any compatible placeholders. + + Zero or more objects to format using the placeholders in . - + - Asserts that the execution time of the operation does not exceed a specified amount of time. + Gets the object which value is being asserted. - - The maximum allowed duration. - - + - Provides methods for asserting that the execution time of an object member satifies certain conditions. + Is responsible for validating the equality of one or more properties of a subject with another object. - @@ -1251,15 +2193,112 @@ - Case insensitive comparison + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + The string that the subject is expected to be equivalent to. + - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. - The expected string. + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. A formatted phrase as is supported by explaining why the assertion @@ -1328,7 +2367,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1345,7 +2384,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1362,7 +2401,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1379,7 +2418,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1388,128 +2427,158 @@ Gets the object which value is being asserted. - + - Asserts that a value is within a range. + Dedicated class for comparing two strings and generating consistent error messages. - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Provides methods for asserting that two objects differ in certain ways. + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. - - The maximum valid value of the range. + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. - + - Asserts that a value is within a range. + Asserts that a occurs a specified amount of time after another . - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. + + The to compare the subject with. - - The maximum valid value of the range. + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. - Zero or more objects to format using the placeholders in . + Zero or more values to use for filling in any compatible placeholders. - + - Determines whether this instance can handle the specified value. + Provides the logic and the display text for a . - The value. - - true if this instance can handle the specified value; otherwise, false. - - + - Returns a that represents this instance. + Returns a based on a number of milliseconds. - The value. - - A that represents this instance. - - + - This class is used to store data about an intercepted event + Returns a based on a number of seconds. - + - Default constructor stores the parameters the event was raised with + Returns a based on a number of minutes. - + - Parameters for the event + Returns a based on a number of hours. - + - Provides methods for asserting that two objects differ in certain ways. + Returns a based on a number of days. - + - Asserts that a occurs a specified amount of time before another . + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Static methods that aid in generic event subscription + + + + + Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder + when invoked. + + + + + Finds the Return Type of a Delegate. - - The to compare the subject with. - - + - Asserts that a occurs a specified amount of time before another . + Returns an Array of Types that make up a delegate's parameter signature. - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - + - Asserts that a occurs a specified amount of time after another . + Returns an array of types appended with an EventRecorder reference at the beginning. - - The to compare the subject with. - - + - Asserts that a occurs a specified amount of time after another . + Returns T/F Dependent on a Type Being a Delegate. - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - + - Provides the logic and the display text for a . + Returns the MethodInfo for the Delegate's "Invoke" Method. @@ -1546,7 +2615,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1577,7 +2646,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1602,7 +2671,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1627,7 +2696,7 @@ A formatted phrase explaining why the assertion should be satisfied. If the phrase does not start with the word because, it is prepended to the message. - + Zero or more values to use for filling in any compatible placeholders. @@ -1645,14 +2714,62 @@ Asserts that at least one occurrence of the event had an object matching a predicate. - + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + - Dedicated class for comparing two strings and generating consistent error messages. + The object events are recorded from - + - Gets or sets a value indicating whether the comparison is case sensitive. + The name of the event that's recorded @@ -1661,61 +2778,171 @@ This should ensure the Garbage Collector can still clean-up the event source object. - + - Finds the first index at which the does not match the - string anymore, including the exact casing. + This class is used to store data about an intercepted event - + - Finds the first index at which the does not match the - string anymore, accounting for the specified . + Default constructor stores the parameters the event was raised with - + - Gets the quoted three characters at the specified index of a string, including the index itself. + Parameters for the event - + - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - + - Asserts that a nullable numeric value is not null. + Asserts that the supplied is met. + + The condition to assert. + + The message that will be used in the exception. This should describe what was expected and why. This message + can contain the following three placeholders:
+ + {0} = the expected value + {1} = the actual value + {2} = a reason explaining the expectations +
+ + + The expected value, or null if there is no explicit expected value. + + The actual value, or null if there is no explicit actual value. + Should describe the reason for the expectation. + Optional args for formatting placeholders in the . +
+ + + Asserts that the supplied is met. + The condition to assert. + + The message that will be used in the exception. This should describe what was expected and why. This message + can contain the following three placeholders:
+ + {0} = the expected value + {1} = the actual value + {2} = a reason explaining the expectations +
+ + + The expected value, or null if there is no explicit expected value. + + The actual value, or null if there is no explicit actual value. + Should describe the reason for the expectation. + Optional args for formatting placeholders in the .
- + - Asserts that a nullable numeric value is not null. + Handles an assertion failure. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. + + The message that will be used in the exception. This should describe what was expected and why. This message + can contain the following three placeholders:
+ + {0} = the expected value + {1} = the actual value + {2} = a reason explaining the expectations +
+ Any additional placeholders are allowed and will be satisfied using the . + + + The expected value, or null if there is no explicit expected value. + + The actual value, or null if there is no explicit actual value. + Should describe the reason for the expectation. + Optional args for formatting placeholders in the . + + Optional arguments to satisfy any additional placeholders in the - - Zero or more objects to format using the placeholders in . -
- + - Asserts that a nullable numeric value is null. + Gets an object that wraps and executes a conditional or unconditional verification. - + - Asserts that a nullable numeric value is null. + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value. + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + + + + Returns a human-readable representation of a particular object that starts on a new line. + + + + + Provides a fluent API for verifying an arbitrary condition. + + + + + Initializes a new instance of the class. + + + + + Gets the name or identifier of the current subject, or a default value if the subject is not known. + + + + + Define the failure message for the verification. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Gets or sets the name of the subject for the next verification. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . -
diff --git a/NzbDrone.Core.Test/QualityTest.cs b/NzbDrone.Core.Test/QualityTest.cs index 42743d1c1..03c2f9af0 100644 --- a/NzbDrone.Core.Test/QualityTest.cs +++ b/NzbDrone.Core.Test/QualityTest.cs @@ -11,43 +11,39 @@ namespace NzbDrone.Core.Test public class QualityTest : TestBase { [Test] - [Ignore("No supported asserts are available")] public void Icomparer_greater_test() { var first = new Quality(QualityTypes.DVD, true); var second = new Quality(QualityTypes.Bluray1080p, true); - //Assert.GreaterThan(second, first); + second.Should().BeGreaterThan(first); } [Test] - [Ignore("No supported asserts are available")] public void Icomparer_greater_proper() { var first = new Quality(QualityTypes.Bluray1080p, false); var second = new Quality(QualityTypes.Bluray1080p, true); - //Assert.GreaterThan(second, first); + second.Should().BeGreaterThan(first); } [Test] - [Ignore("No supported asserts are available")] public void Icomparer_lesser() { var first = new Quality(QualityTypes.DVD, true); var second = new Quality(QualityTypes.Bluray1080p, true); - //Assert.LessThan(first, second); + first.Should().BeLessThan(second); } [Test] - [Ignore("No supported asserts are available")] public void Icomparer_lesser_proper() { var first = new Quality(QualityTypes.DVD, false); var second = new Quality(QualityTypes.DVD, true); - //Assert.LessThan(first, second); + first.Should().BeLessThan(second); } [Test] @@ -86,7 +82,7 @@ namespace NzbDrone.Core.Test var first = new Quality(QualityTypes.Bluray1080p, true); var second = new Quality(QualityTypes.Bluray1080p, true); - Assert.IsFalse(first != second); + (first != second).Should().BeFalse(); } [Test]