diff --git a/Libraries/DeskMetrics/DeskMetrics.XML b/Libraries/DeskMetrics/DeskMetrics.XML
new file mode 100644
index 000000000..43fcb8222
--- /dev/null
+++ b/Libraries/DeskMetrics/DeskMetrics.XML
@@ -0,0 +1,248 @@
+
+
+
+ DeskMetrics
+
+
+
+
+ GetProcessorFrequency Physical Memory GetComponentName
+
+
+
+
+ GetProcessorFrequency Disk Size GetComponentName
+
+
+
+
+ GetProcessorFrequency Screen resolution GetComponentName
+
+
+
+
+ Field OS Service Pack
+
+
+
+
+ GetProcessorFrequency Framework ApplicationVersion GetComponentName
+
+
+
+
+ GetProcessorFrequency OS Archicteture GetComponentName
+
+
+
+
+ GetProcessorFrequency OS ApplicationVersion GetComponentName
+
+
+
+
+ GetProcessorFrequency Java version GetComponentName
+
+
+
+
+ GetProcessorFrequency and Set Framework ApplicationVersion
+
+
+
+
+ GetProcessorFrequency and Set OS Archicteture
+
+
+
+
+ GetProcessorFrequency and Set OS ApplicationVersion
+
+
+
+
+ GetProcessorFrequency and Set Frameworl Service Pack
+
+
+
+
+ GetProcessorFrequency and Set Java ApplicationVersion
+
+
+
+
+ GetProcessorFrequency and Set OS Service Pack
+
+
+
+
+ Starts the application tracking.
+
+
+
+
+ Stops the application tracking and send the collected data to DeskMetrics
+
+
+
+
+ Register an event occurrence
+
+ EventCategory Category
+ EventCategory eventName
+
+
+
+ Tracks an event related to time and intervals
+
+
+ The event category
+
+
+ The event name
+
+
+ The event duration
+
+
+ True if the event was completed.
+
+
+
+
+ Tracks an installation
+
+
+
+
+ Tracks an uninstall
+
+
+
+
+ Tracks an exception
+
+
+ The exception object to be tracked
+
+
+
+
+ Tracks an event with custom value
+
+
+ The event category
+
+
+ The event name
+
+
+ The custom value
+
+
+
+
+ Tracks custom data
+
+
+ The custom data name
+
+
+ The custom data value
+
+
+
+
+ Tracks a log
+
+
+ The log message
+
+
+
+
+ Starts the application tracking.
+
+
+
+
+ Stops the application tracking and send the collected data to DeskMetrics
+
+
+
+
+ Register an event occurrence
+
+ EventCategory Category
+ EventCategory eventName
+
+
+
+ Tracks an event related to time and intervals
+
+
+ The event category
+
+
+ The event name
+
+
+ The event duration
+
+
+ True if the event was completed.
+
+
+
+
+ Tracks an installation
+
+
+
+
+ Tracks an uninstall
+
+
+
+
+ Tracks an exception
+
+
+ The exception object to be tracked
+
+
+
+
+ Tracks an event with custom value
+
+
+ The event category
+
+
+ The event name
+
+
+ The custom value
+
+
+
+
+ Tracks custom data
+
+
+ The custom data name
+
+
+ The custom data value
+
+
+
+
+ Tracks a log
+
+
+ The log message
+
+
+
+
diff --git a/Libraries/DeskMetrics/DeskMetrics.dll b/Libraries/DeskMetrics/DeskMetrics.dll
new file mode 100644
index 000000000..65423299d
Binary files /dev/null and b/Libraries/DeskMetrics/DeskMetrics.dll differ
diff --git a/Libraries/DeskMetrics/DeskMetrics.pdb b/Libraries/DeskMetrics/DeskMetrics.pdb
new file mode 100644
index 000000000..9c9453dde
Binary files /dev/null and b/Libraries/DeskMetrics/DeskMetrics.pdb differ
diff --git a/NzbDrone.App.Test/NzbDrone.App.Test.csproj b/NzbDrone.App.Test/NzbDrone.App.Test.csproj
index 0f31f77e4..3f8f6c856 100644
--- a/NzbDrone.App.Test/NzbDrone.App.Test.csproj
+++ b/NzbDrone.App.Test/NzbDrone.App.Test.csproj
@@ -36,9 +36,9 @@
..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll
-
+
False
- ..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll
+ ..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll
..\packages\Moq.4.0.10827\lib\NET40\Moq.dll
diff --git a/NzbDrone.App.Test/packages.config b/NzbDrone.App.Test/packages.config
index cb15edd13..47c1fa097 100644
--- a/NzbDrone.App.Test/packages.config
+++ b/NzbDrone.App.Test/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj b/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj
index 79fc3efe3..5b93f8ccd 100644
--- a/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj
+++ b/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj
@@ -33,9 +33,9 @@
x86
-
+
False
- ..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll
+ ..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll
..\packages\Moq.4.0.10827\lib\NET40\Moq.dll
diff --git a/NzbDrone.Common.Test/packages.config b/NzbDrone.Common.Test/packages.config
index 1e23a9ff6..ff11a3d3f 100644
--- a/NzbDrone.Common.Test/packages.config
+++ b/NzbDrone.Common.Test/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/NzbDrone.Common/EnviromentProvider.cs b/NzbDrone.Common/EnviromentProvider.cs
index 39d0d84a9..15b99e8dc 100644
--- a/NzbDrone.Common/EnviromentProvider.cs
+++ b/NzbDrone.Common/EnviromentProvider.cs
@@ -40,6 +40,9 @@ namespace NzbDrone.Common
}
}
+
+ public static bool IsNewInstall { get; set; }
+
public virtual bool IsUserInteractive
{
get { return Environment.UserInteractive; }
diff --git a/NzbDrone.Core.Test/App.config b/NzbDrone.Core.Test/App.config
index 629b5ef65..a1ea1c373 100644
--- a/NzbDrone.Core.Test/App.config
+++ b/NzbDrone.Core.Test/App.config
@@ -4,4 +4,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/CentralDispatchFixture.cs b/NzbDrone.Core.Test/CentralDispatchFixture.cs
index e89b69627..50775bbf8 100644
--- a/NzbDrone.Core.Test/CentralDispatchFixture.cs
+++ b/NzbDrone.Core.Test/CentralDispatchFixture.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using NUnit.Framework;
+using NzbDrone.Common;
using NzbDrone.Core.Jobs;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Indexer;
@@ -101,5 +102,12 @@ namespace NzbDrone.Core.Test
first.Should().BeSameAs(second);
}
+ [Test]
+ public void app_should_be_marked_as_new_install_if_db_is_initilized_for_the_first_time()
+ {
+ WithRealDb();
+ EnviromentProvider.IsNewInstall.Should().Be(true);
+ }
+
}
}
diff --git a/NzbDrone.Core.Test/Framework/TestDbHelper.cs b/NzbDrone.Core.Test/Framework/TestDbHelper.cs
index c54f91954..cd56efe4d 100644
--- a/NzbDrone.Core.Test/Framework/TestDbHelper.cs
+++ b/NzbDrone.Core.Test/Framework/TestDbHelper.cs
@@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.IO;
using FizzWare.NBuilder;
+using FluentAssertions;
using Moq;
+using NzbDrone.Common;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
@@ -18,7 +20,7 @@ namespace NzbDrone.Core.Test.Framework
internal static string ConnectionString { get; private set; }
- internal static IDatabase GetEmptyDatabase(bool enableLogging = false, string fileName = "")
+ internal static IDatabase GetEmptyDatabase(string fileName = "")
{
Console.WriteLine("====================DataBase====================");
Console.WriteLine("Cloning database from template.");
diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index 62f65849c..27c915c73 100644
--- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -36,15 +36,18 @@
True
+
+ ..\Libraries\DeskMetrics\DeskMetrics.dll
+
..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll
..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll
-
+
False
- ..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll
+ ..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll
True
@@ -89,6 +92,7 @@
+
False
..\Libraries\TvdbLib.dll
@@ -102,6 +106,7 @@
+
@@ -251,6 +256,7 @@
+
diff --git a/NzbDrone.Core.Test/ProviderTests/AnalyticsProviderTests/AnalyticsProviderFixture.cs b/NzbDrone.Core.Test/ProviderTests/AnalyticsProviderTests/AnalyticsProviderFixture.cs
new file mode 100644
index 000000000..58b577a62
--- /dev/null
+++ b/NzbDrone.Core.Test/ProviderTests/AnalyticsProviderTests/AnalyticsProviderFixture.cs
@@ -0,0 +1,64 @@
+using System.Linq;
+using DeskMetrics;
+using Moq;
+using NUnit.Framework;
+using NzbDrone.Common;
+using NzbDrone.Core.Providers;
+using NzbDrone.Core.Test.Framework;
+
+namespace NzbDrone.Core.Test.ProviderTests.AnalyticsProviderTests
+{
+ // ReSharper disable InconsistentNaming
+ public class AnalyticsProviderFixture : CoreTest
+ {
+ [Test]
+ public void checkpoint_should_stop_existing_start_then_start_again()
+ {
+ Mocker.GetMock().SetupGet(c => c.Started).Returns(true);
+ var provider = Mocker.Resolve();
+
+ provider.Checkpoint();
+
+ Mocker.GetMock().Verify(c=>c.Start(), Times.Once());
+ Mocker.GetMock().Verify(c=>c.Stop(), Times.Once());
+ }
+
+ [Test]
+ public void checkpoint_should_not_stop_existing_if_not_started()
+ {
+ Mocker.GetMock().SetupGet(c => c.Started).Returns(false);
+ var provider = Mocker.Resolve();
+
+ provider.Checkpoint();
+
+ Mocker.GetMock().Verify(c => c.Start(), Times.Once());
+ Mocker.GetMock().Verify(c => c.Stop(), Times.Never());
+ }
+
+ [Test]
+ public void new_install_should_be_registered()
+ {
+ EnviromentProvider.IsNewInstall = true;
+
+ var provider = Mocker.Resolve();
+
+ provider.Checkpoint();
+
+ Mocker.GetMock().Verify(c => c.RegisterInstall(), Times.Once());
+ }
+
+ [Test]
+ public void upgrade_should_not_register_install()
+ {
+ EnviromentProvider.IsNewInstall = false;
+
+ var provider = Mocker.Resolve();
+
+ provider.Checkpoint();
+
+ Mocker.GetMock().Verify(c => c.RegisterInstall(), Times.Never());
+ }
+
+
+ }
+}
diff --git a/NzbDrone.Core.Test/ProviderTests/ConfigProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/ConfigProviderTest.cs
index 0037240eb..489718869 100644
--- a/NzbDrone.Core.Test/ProviderTests/ConfigProviderTest.cs
+++ b/NzbDrone.Core.Test/ProviderTests/ConfigProviderTest.cs
@@ -12,20 +12,19 @@ namespace NzbDrone.Core.Test.ProviderTests
// ReSharper disable InconsistentNaming
public class ConfigProviderTest : CoreTest
{
+ [SetUp]
+ public void SetUp()
+ {
+ WithRealDb();
+ }
+
[Test]
public void Add_new_value_to_database()
{
const string key = "MY_KEY";
const string value = "MY_VALUE";
-
- var db = TestDbHelper.GetEmptyDatabase();
- Mocker.SetConstant(db);
-
- //Act
Mocker.Resolve().SetValue(key, value);
-
- //Assert
Mocker.Resolve().GetValue(key, "").Should().Be(value);
}
@@ -35,12 +34,9 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "MY_KEY";
const string value = "MY_VALUE";
-
- var db = TestDbHelper.GetEmptyDatabase();
- Mocker.SetConstant(db);
- db.Insert(new Config { Key = key, Value = value });
- db.Insert(new Config { Key = "Other Key", Value = "OtherValue" });
+ Db.Insert(new Config { Key = key, Value = value });
+ Db.Insert(new Config { Key = "Other Key", Value = "OtherValue" });
//Act
var result = Mocker.Resolve().GetValue(key, "");
@@ -56,11 +52,6 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "MY_KEY";
const string value = "MY_VALUE";
-
- var db = TestDbHelper.GetEmptyDatabase();
- Mocker.SetConstant(db);
-
-
//Act
var result = Mocker.Resolve().GetValue(key, value);
@@ -75,11 +66,7 @@ namespace NzbDrone.Core.Test.ProviderTests
const string originalValue = "OLD_VALUE";
const string newValue = "NEW_VALUE";
-
- var db = TestDbHelper.GetEmptyDatabase();
- Mocker.SetConstant(db);
-
- db.Insert(new Config { Key = key, Value = originalValue });
+ Db.Insert(new Config { Key = key, Value = originalValue });
//Act
Mocker.Resolve().SetValue(key, newValue);
@@ -87,7 +74,7 @@ namespace NzbDrone.Core.Test.ProviderTests
//Assert
result.Should().Be(newValue);
- db.Fetch().Should().HaveCount(1);
+ Db.Fetch().Should().HaveCount(1);
}
[Test]
@@ -96,11 +83,6 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "MY_KEY";
const string value = "OLD_VALUE";
-
-
- var db = TestDbHelper.GetEmptyDatabase();
- Mocker.SetConstant(db);
-
//Act
Mocker.Resolve().SetValue(key, value);
Mocker.Resolve().SetValue(key, value);
@@ -108,17 +90,58 @@ namespace NzbDrone.Core.Test.ProviderTests
//Assert
result.Should().Be(value);
- db.Fetch().Should().HaveCount(1);
+ Db.Fetch().Should().HaveCount(1);
+ }
+
+ [Test]
+ public void get_value_with_persist_should_store_default_value()
+ {
+ const string key = "MY_KEY";
+ string value = Guid.NewGuid().ToString();
+
+ //Act
+ Mocker.Resolve().GetValue(key, value, persist: true).Should().Be(value);
+ Mocker.Resolve().GetValue(key, string.Empty).Should().Be(value);
}
+ [Test]
+ public void get_value_with_out_persist_should_not_store_default_value()
+ {
+ const string key = "MY_KEY";
+ string value1 = Guid.NewGuid().ToString();
+ string value2 = Guid.NewGuid().ToString();
+
+ //Act
+ Mocker.Resolve().GetValue(key, value1).Should().Be(value1);
+ Mocker.Resolve().GetValue(key, value2).Should().Be(value2);
+ }
+
+
+
+ [Test]
+ public void uguid_should_only_be_set_once()
+ {
+ var guid1 = Mocker.Resolve().UGuid;
+ var guid2 = Mocker.Resolve().UGuid;
+
+ guid1.Should().Be(guid2);
+ }
+
+ [Test]
+ public void uguid_should_return_valid_result_on_first_call()
+ {
+ var guid = Mocker.Resolve().UGuid;
+ guid.Should().NotBeBlank();
+ Guid.Parse(guid).ToString().Should().NotBe(new Guid().ToString());
+ }
+
+
[Test]
[Description("This test will use reflection to ensure each config property read/writes to a unique key")]
public void config_properties_should_write_and_read_using_same_key()
{
WithStrictMocker();
- var db = TestDbHelper.GetEmptyDatabase();
- Mocker.SetConstant(db);
var configProvider = Mocker.Resolve();
var allProperties = typeof(ConfigProvider).GetProperties();
@@ -157,7 +180,7 @@ namespace NzbDrone.Core.Test.ProviderTests
returnValue.Should().Be(value, propertyInfo.Name);
}
- db.Fetch().Should()
+ Db.Fetch().Should()
.HaveSameCount(allProperties, "two different properties are writing to the same key in db. Copy/Past fail.");
}
}
diff --git a/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTest.cs
index 5e8b0d052..623badbe8 100644
--- a/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTest.cs
+++ b/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTest.cs
@@ -32,7 +32,7 @@ namespace NzbDrone.Core.Test.ProviderTests
- var database = TestDbHelper.GetEmptyDatabase(true);
+ var database = TestDbHelper.GetEmptyDatabase();
database.InsertMany(firstSeriesFiles);
@@ -63,7 +63,7 @@ namespace NzbDrone.Core.Test.ProviderTests
- var database = TestDbHelper.GetEmptyDatabase(true);
+ var database = TestDbHelper.GetEmptyDatabase();
database.InsertMany(firstSeriesFiles);
database.InsertMany(secondSeriesFiles);
@@ -146,7 +146,7 @@ namespace NzbDrone.Core.Test.ProviderTests
var episodeFiles = Builder.CreateListOfSize(10).Build();
- var database = TestDbHelper.GetEmptyDatabase(true);
+ var database = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(database);
database.InsertMany(episodeFiles);
diff --git a/NzbDrone.Core.Test/packages.config b/NzbDrone.Core.Test/packages.config
index d91c0faa7..59023fa65 100644
--- a/NzbDrone.Core.Test/packages.config
+++ b/NzbDrone.Core.Test/packages.config
@@ -3,7 +3,7 @@
-
+
diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs
index ffc289e01..a6a6d0142 100644
--- a/NzbDrone.Core/CentralDispatch.cs
+++ b/NzbDrone.Core/CentralDispatch.cs
@@ -2,6 +2,7 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
+using DeskMetrics;
using Ninject;
using NLog;
using NzbDrone.Common;
@@ -9,6 +10,7 @@ using NzbDrone.Core.Datastore;
using NzbDrone.Core.Instrumentation;
using NzbDrone.Core.Jobs;
using NzbDrone.Core.Providers;
+using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Providers.ExternalNotification;
using NzbDrone.Core.Providers.Indexer;
using PetaPoco;
@@ -27,13 +29,15 @@ namespace NzbDrone.Core
Kernel = new StandardKernel();
InitDatabase();
+ InitAnalytics();
InitQuality();
InitExternalNotifications();
InitIndexers();
InitJobs();
}
-
+
+
private void InitDatabase()
{
Logger.Info("Initializing Database...");
@@ -51,6 +55,13 @@ namespace NzbDrone.Core
LogConfiguration.Reload();
}
+ private void InitAnalytics()
+ {
+ var deskMetricsClient = new DeskMetricsClient(Kernel.Get().UGuid, AnalyticsProvider.DESKMETRICS_ID, new EnviromentProvider().Version);
+ Kernel.Bind().ToConstant(deskMetricsClient);
+ Kernel.Get().Checkpoint();
+ }
+
private void InitQuality()
{
Logger.Info("Initializing Quality...");
diff --git a/NzbDrone.Core/Datastore/Migrations/Migration20110707.cs b/NzbDrone.Core/Datastore/Migrations/Migration20110707.cs
index 4fedebaa6..58a9e075c 100644
--- a/NzbDrone.Core/Datastore/Migrations/Migration20110707.cs
+++ b/NzbDrone.Core/Datastore/Migrations/Migration20110707.cs
@@ -1,6 +1,7 @@
using System;
using System.Data;
using Migrator.Framework;
+using NzbDrone.Common;
namespace NzbDrone.Core.Datastore.Migrations
{
@@ -10,6 +11,9 @@ namespace NzbDrone.Core.Datastore.Migrations
{
protected override void MainDbUpgrade()
{
+ //This should not run unless for a clean install
+ EnviromentProvider.IsNewInstall = true;
+
Database.AddTable("Series", new[]
{
new Column("SeriesId", DbType.Int32, ColumnProperty.PrimaryKey),
diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj
index 60ab76876..947b5fb1c 100644
--- a/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/NzbDrone.Core/NzbDrone.Core.csproj
@@ -121,6 +121,9 @@
+
+ ..\Libraries\DeskMetrics\DeskMetrics.dll
+
..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll
@@ -153,8 +156,9 @@
False
..\packages\MiniProfiler.1.9\lib\net40\MvcMiniProfiler.dll
-
- ..\packages\Newtonsoft.Json.4.0.4\lib\net40\Newtonsoft.Json.dll
+
+ False
+ ..\packages\Newtonsoft.Json.4.0.7\lib\net40\Newtonsoft.Json.dll
..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll
@@ -222,6 +226,7 @@
+
diff --git a/NzbDrone.Core/Providers/AnalyticsProvider.cs b/NzbDrone.Core/Providers/AnalyticsProvider.cs
new file mode 100644
index 000000000..cac031e81
--- /dev/null
+++ b/NzbDrone.Core/Providers/AnalyticsProvider.cs
@@ -0,0 +1,39 @@
+using System.Linq;
+using DeskMetrics;
+using Ninject;
+using NzbDrone.Common;
+
+namespace NzbDrone.Core.Providers
+{
+ public class AnalyticsProvider
+ {
+ private readonly IDeskMetricsClient _deskMetricsClient;
+ public const string DESKMETRICS_ID = "4ea8d347a14ad71442000002";
+
+ [Inject]
+ public AnalyticsProvider(IDeskMetricsClient deskMetricsClient)
+ {
+ _deskMetricsClient = deskMetricsClient;
+ }
+
+ public AnalyticsProvider()
+ {
+
+ }
+
+ public virtual void Checkpoint()
+ {
+ if (_deskMetricsClient.Started)
+ {
+ _deskMetricsClient.Stop();
+ }
+
+ if (EnviromentProvider.IsNewInstall)
+ {
+ _deskMetricsClient.RegisterInstall();
+ }
+
+ _deskMetricsClient.Start();
+ }
+ }
+}
diff --git a/NzbDrone.Core/Providers/Core/ConfigProvider.cs b/NzbDrone.Core/Providers/Core/ConfigProvider.cs
index a578906a8..3643c0801 100644
--- a/NzbDrone.Core/Providers/Core/ConfigProvider.cs
+++ b/NzbDrone.Core/Providers/Core/ConfigProvider.cs
@@ -409,6 +409,11 @@ namespace NzbDrone.Core.Providers.Core
set { SetValue("AutoIgnorePreviouslyDownloadedEpisodes", value); }
}
+ public string UGuid
+ {
+ get { return GetValue("UGuid", Guid.NewGuid().ToString(), persist: true); }
+ }
+
private string GetValue(string key)
{
return GetValue(key, String.Empty);
@@ -424,7 +429,7 @@ namespace NzbDrone.Core.Providers.Core
return Convert.ToInt16(GetValue(key, defaultValue));
}
- public virtual string GetValue(string key, object defaultValue)
+ public virtual string GetValue(string key, object defaultValue, bool persist = false)
{
var dbValue = _database.SingleOrDefault("WHERE [Key] =@0", key);
@@ -432,6 +437,10 @@ namespace NzbDrone.Core.Providers.Core
return dbValue.Value;
Logger.Trace("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue);
+
+ if (persist)
+ SetValue(key, defaultValue.ToString());
+
return defaultValue.ToString();
}
diff --git a/NzbDrone.Core/packages.config b/NzbDrone.Core/packages.config
index 19a601d18..877b5b3f7 100644
--- a/NzbDrone.Core/packages.config
+++ b/NzbDrone.Core/packages.config
@@ -6,7 +6,7 @@
-
+
diff --git a/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj b/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj
index 225903b5e..476df6a2d 100644
--- a/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj
+++ b/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj
@@ -41,9 +41,9 @@
..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll
-
+
False
- ..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll
+ ..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll
..\packages\Moq.4.0.10827\lib\NET40\Moq.dll
diff --git a/NzbDrone.Update.Test/packages.config b/NzbDrone.Update.Test/packages.config
index fcd24ea7b..2e46099aa 100644
--- a/NzbDrone.Update.Test/packages.config
+++ b/NzbDrone.Update.Test/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/NzbDrone.Web.UI.Test/NzbDrone.Web.UI.Automation.csproj b/NzbDrone.Web.UI.Test/NzbDrone.Web.UI.Automation.csproj
index f6a5ff26f..e9b595d7e 100644
--- a/NzbDrone.Web.UI.Test/NzbDrone.Web.UI.Automation.csproj
+++ b/NzbDrone.Web.UI.Test/NzbDrone.Web.UI.Automation.csproj
@@ -33,7 +33,7 @@
- ..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll
+ ..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll
..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll
@@ -52,8 +52,9 @@
-
- ..\packages\Selenium.WebDriver.2.15.0\lib\net40\WebDriver.dll
+
+ False
+ ..\packages\Selenium.WebDriver.2.17.0\lib\net40\WebDriver.dll
diff --git a/NzbDrone.Web.UI.Test/packages.config b/NzbDrone.Web.UI.Test/packages.config
index 040a986f7..b6c4f09ad 100644
--- a/NzbDrone.Web.UI.Test/packages.config
+++ b/NzbDrone.Web.UI.Test/packages.config
@@ -1,6 +1,7 @@
+
-
+
\ No newline at end of file
diff --git a/NzbDrone.Web/Web.config b/NzbDrone.Web/Web.config
index c398cf297..8f56426a3 100644
--- a/NzbDrone.Web/Web.config
+++ b/NzbDrone.Web/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/packages/FluentAssertions.1.6.0/FluentAssertions.1.6.0.nupkg b/packages/FluentAssertions.1.6.0/FluentAssertions.1.6.0.nupkg
deleted file mode 100644
index 6ea99ea92..000000000
Binary files a/packages/FluentAssertions.1.6.0/FluentAssertions.1.6.0.nupkg and /dev/null differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/net35/FluentAssertions.dll b/packages/FluentAssertions.1.6.0/Lib/net35/FluentAssertions.dll
deleted file mode 100644
index c9101b995..000000000
Binary files a/packages/FluentAssertions.1.6.0/Lib/net35/FluentAssertions.dll and /dev/null differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/net35/FluentAssertions.pdb b/packages/FluentAssertions.1.6.0/Lib/net35/FluentAssertions.pdb
deleted file mode 100644
index d5e83f515..000000000
Binary files a/packages/FluentAssertions.1.6.0/Lib/net35/FluentAssertions.pdb and /dev/null differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.dll b/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.dll
deleted file mode 100644
index 0b189a451..000000000
Binary files a/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.dll and /dev/null differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.pdb b/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.pdb
deleted file mode 100644
index cd9630bd4..000000000
Binary files a/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.pdb and /dev/null differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/sl40/FluentAssertions.Silverlight.dll b/packages/FluentAssertions.1.6.0/Lib/sl40/FluentAssertions.Silverlight.dll
deleted file mode 100644
index b182e145d..000000000
Binary files a/packages/FluentAssertions.1.6.0/Lib/sl40/FluentAssertions.Silverlight.dll and /dev/null differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/sl40/FluentAssertions.Silverlight.pdb b/packages/FluentAssertions.1.6.0/Lib/sl40/FluentAssertions.Silverlight.pdb
deleted file mode 100644
index 5ad6d81b6..000000000
Binary files a/packages/FluentAssertions.1.6.0/Lib/sl40/FluentAssertions.Silverlight.pdb and /dev/null differ
diff --git a/packages/FluentAssertions.1.7.0/FluentAssertions.1.7.0.nupkg b/packages/FluentAssertions.1.7.0/FluentAssertions.1.7.0.nupkg
new file mode 100644
index 000000000..ce0ec5a52
Binary files /dev/null and b/packages/FluentAssertions.1.7.0/FluentAssertions.1.7.0.nupkg differ
diff --git a/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.dll b/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.dll
new file mode 100644
index 000000000..8f5ec6b83
Binary files /dev/null and b/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.dll differ
diff --git a/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.pdb b/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.pdb
new file mode 100644
index 000000000..3e83b7f5e
Binary files /dev/null and b/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.pdb differ
diff --git a/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.xml b/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.xml
similarity index 87%
rename from packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.xml
rename to packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.xml
index 810648b15..8a6987c40 100644
--- a/packages/FluentAssertions.1.6.0/Lib/net40/FluentAssertions.xml
+++ b/packages/FluentAssertions.1.7.0/Lib/net35/FluentAssertions.xml
@@ -4,348 +4,1060 @@
FluentAssertions
+
+
+ Contains a number of methods to assert that an yields the expected result.
+
+
+
+
+ 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 .
+
+
+
+
+ Gets the that is being asserted.
+
+
Initializes a new instance of the class.
-
+
- Contains extension methods for custom assertions in unit tests.
+ Contains a number of methods to assert that an is in the expected state.
-
+
- Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow
- overloads.
+ Asserts that the subject is considered equal to another object according to the implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+
+
+ Asserts that the subject is considered equal to another object according to the implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+ 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 subject is not equal to another object according to its implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+
+
+ Asserts that the subject is not 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
+ 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 subject is less than another object according to its implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+
+
+ Asserts that the subject is less 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
+ 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 subject is less than or equal to another object according to its implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+
+
+ 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
+ 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 subject is greater than another object according to its implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+
+
+ 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
+ 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 subject is greater than or equal to another object according to its implementation of .
+
+
+ The object to pass to the subject's method.
+
+
+
+
+ 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
+ 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 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.
+
+
+
+
+ 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 .
+
+
+
+
+ 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 .
+
+
+
+
+ Gets the object which value is being asserted.
+
+
+
+
+ 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 match except for the casing of the characters.
+
+
+
+
+ The message must start with the exact text, including the casing of the characters..
+
+
+
+
+ The message must start with the text except for the casing of the characters.
+
+
+
+
+ The message must contain the exact text.
+
+
+
+
+ The message must contain the text except for the casing of the characters.
+
+
+
+
+ The message must match a wildcard pattern consisting of ordinary characters as well as * and ?.
+
+
+
+
+ Contains a number of methods to assert that an is in the expected state.
+
+
+
+
+ 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 number of items.
+
+
+
+ Asserts that the number of items in the dictionary matches the supplied amount.
+
+ The expected number 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 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 .
+
+
+
+
+ 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
+
+
+
+ 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
+
+ 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 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
+
+
+
+ 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 expected key
+
+
+
+ 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 .
+
+
+
+
+ Asserts that the dictionary contains all of the specified keys. Keys are compared using
+ their implementation.
+
+ The expected keys
+
+
+
+ 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 .
+
+
+
+
+ Asserts that the current dictionary does not contain the specified key.
+ Keys are compared using their implementation.
+
+ The unexpected key
+
+
+
+ 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 .
+
+
+
+
+ Asserts that the dictionary contains the specified value. Values are compared using
+ their implementation.
+
+ The expected value
+
+
+
+ Asserts that the dictionary contains the specified value. Values are compared using
+ their implementation.
+
+ The 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.
+
+
+ Zero or more objects to format using the placeholders in .
+
+
+
+
+ Asserts that the dictionary contains all of the specified values. Values are compared using
+ their implementation.
+
+ The expected values
+
+
+
+ Asserts that the dictionary contains all of the specified values. Values are compared using
+ their implementation.
+
+ The expected values
+
+ 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 does not contain the specified value.
+ Values are compared using their implementation.
+
+ The unexpected value
+
+
+
+ Asserts that the current dictionary does not contain the specified value.
+ Values are compared using their implementation.
+
+ The unexpected 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 dictionary contains the specified .
+ Keys and values are compared using their implementation.
+
+ The expected
+
+
+
+ Asserts that the current dictionary contains the specified .
+ Keys and values are compared using their implementation.
+
+ The expected
+
+ 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 contains the specified for the supplied . Values are compared using their implementation.
+
+ The key for which to validate the value
+ The value to validate
+
+
+
+ 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 .
+
+
+
+
+ Asserts that the current dictionary does not contain the specified .
+ Keys and values are compared using their implementation.
+
+ The unexpected
+
+
+
+ Asserts that the current dictionary does not contain the specified .
+ Keys and values are compared using their implementation.
+
+ The unexpected
+
+ 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 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
+
+
+
+ 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 .
+
+
+
+
+ Gets the object which value is being asserted.
+
+
+
+
+ Contains a number of methods to assert that a is in the correct state.
+
+
+
+
+ Asserts that the is .
+
+
+
+
+ Asserts that the is .
+
+
+ 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 is not .
+
+
+
+
+ Asserts that the is not .
+
+
+ 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 .
+
-
+
- Provides methods for asserting the execution time of a method or property.
+ Asserts that the is equal to the GUID.
- 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 expected value to compare the actual value with.
-
+
- Provides methods for asserting the execution time of a method or property.
+ Asserts that the is equal to the GUID.
- 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 expected value to compare the actual value with.
-
+
- Asserts that the throws an exception.
+ Asserts that the is equal to the GUID.
-
- The type of the exception it should throw.
-
-
- Returns an object that allows asserting additional members of the thrown exception.
-
+ The expected value to compare the actual value 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.
+
+
+ Zero or more objects to format using the placeholders in .
+
-
+
- Asserts that the throws an exception.
+ Asserts that the is equal to the GUID.
- A reference to the method or property.
-
- The type of the exception it should throw.
-
+ The expected value to compare the actual value 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.
+ 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 .
-
- Returns an object that allows asserting additional members of the thrown exception.
-
-
+
- Asserts that the does not throw a particular exception.
+ Asserts that the is not equal to the GUID.
-
- The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion.
-
+ The unexpected value to compare the actual value with.
-
+
- Asserts that the does not throw a particular exception.
+ Asserts that the is not equal to the GUID.
- The current method or property.
-
- The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion.
-
+ The unexpected value to compare the actual value 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.
+ 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 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.
+ Contains assertions for the objects returned by the parent .
- The current method or property.
-
- 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.
+ Initializes a new instance of the class.
+ The methods.
-
+
- Forces enumerating a collection. Should be used to assert that a method that uses the
- yield keyword throws a particular exception.
+ Asserts that the selected methods are virtual.
-
+
- Returns an object that can be used to assert the
- current .
+ Asserts that the selected methods are virtual.
+
+ 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 object that can be used to assert the
- current .
+ Asserts that the selected methods are decorated with the specified .
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Asserts that the selected methods are decorated with the specified .
+
+
+ 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.
-
+
- Returns an object that can be used to assert the
- current .
+ Allows for fluent selection of methods of a type through reflection.
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Initializes a new instance of the class.
+ The type from which to select methods.
-
+
- Returns an object that can be used to assert the
- current .
+ Initializes a new instance of the class.
+ The types from which to select methods.
-
+
- Returns an object that can be used to assert the
- current .
+ Only select the methods that return the specified type
-
+
- Returns an object that can be used to assert the
- current .
+ Only select the methods that are decorated with an attribute of the specified type.
-
+
- Returns an object that can be used to assert the
- current .
+ The resulting objects.
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Determines whether the specified method has a special name (like properties and events).
-
+
- Returns an object that can be used to assert the
- current .
+ Returns an enumerator that iterates through the collection.
+
+ A that can be used to iterate through the collection.
+
+ 1
-
+
- Returns an object that can be used to assert the
- current .
+ Returns an enumerator that iterates through a collection.
+
+ An object that can be used to iterate through the collection.
+
+ 2
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Only select the methods that are public or internal.
-
+
- Returns an object that can be used to assert the
- current .
+ Only select the methods without a return value
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Contains a number of methods to assert that a nullable is in the expected state.
-
+
- Returns an object that can be used to assert the
- current .
+ Asserts that a nullable value is not null.
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Asserts that a nullable 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 object that can be used to assert the
- current .
+ Asserts that a nullable value is null.
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Asserts that a nullable 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 an object that can be used to assert the
- current .
+ Asserts that the value is equal to the specified value.
+ The expected value
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Asserts that the value is equal to the specified value.
+ The 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.
+
+
+ Zero or more objects to format using the placeholders in .
+
-
+
- Returns an object that can be used to assert the
- current .
+ Is responsible for validating the equality of one or more properties of a subject with another object.
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Contains the properties that should be included when comparing two objects.
-
+
- Returns an object that can be used to assert the
- current .
+ Gets or sets a value indicating whether the validator will ignore properties from the
+ collection that the object doesn't have.
-
+
- Returns an object that can be used to assert the
- current .
+ Gets or sets a value indicating whether it should continue comparing (collections of objects) that
+ the refers to.
-
+
- Returns an object that can be used to assert the
- current nullable .
+ Provides methods for asserting that the execution time of an satifies certain conditions.
-
+
- Asserts that the properties of an object matches those of another object.
+ Initializes a new instance of the class.
+ The action of which the execution time must be asserted.
-
+
- Returns a object that can be used to assert the
- current .
+ Asserts that the execution time of the operation does not exceed a specified amount of time.
+
+ The maximum allowed duration.
+
-
+
- Returns a object that can be used to assert the methods returned by the
- current .
+ 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.
+
-
+
- Returns a object that can be used to assert the properties returned by the
- current .
+ Provides methods for asserting that the execution time of an object member satifies certain conditions.
-
+
-
+
- Safely casts the specified object to the type specified through .
+ Initializes a new instance of the class.
-
- Has been introduced to allow casting objects without breaking the fluent API.
-
-
+ The object that exposes the method or property.
+ A reference to the method or property to measure the execution time of.
-
+
- Contains a number of methods to assert that an yields the expected result.
+ Contains a number of extension methods for floating point .
-
+
- Asserts that the current throws an exception of type .
+ Asserts a floating point value approximates another value as close as possible.
-
- 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 object that is being extended.
+
+ The expected value to compare the actual value with.
-
- Zero or more objects to format using the placeholders in .
+
+ The maximum amount of which the two values may differ.
-
+
- Asserts that the current does not throw an exception of type .
+ Asserts a floating point value approximates another value as close as possible.
-
- 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 object that is being extended.
+
+ The expected value to compare the actual value with.
-
- Zero or more objects to format using the placeholders in .
+
+ The maximum amount of which the two values may differ.
-
-
-
- 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.
@@ -354,25 +1066,29 @@
Zero or more objects to format using the placeholders in .
-
-
- Gets the that is being asserted.
-
-
-
-
- Contains a number of methods to assert that a is in the expected state.
-
-
-
+
- Asserts that the value is false.
+ Asserts a floating point value approximates another value as close as possible.
+ The object that is being extended.
+
+ The expected value to compare the actual value with.
+
+
+ The maximum amount of which the two values may differ.
+
-
+
- Asserts that the value is false.
+ Asserts a floating point value approximates another value as close as possible.
+ The object that is being extended.
+
+ 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.
@@ -381,15 +1097,29 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the value is true.
+ Asserts a floating point value approximates another value as close as possible.
+ The object that is being extended.
+
+ The expected value to compare the actual value with.
+
+
+ The maximum amount of which the two values may differ.
+
-
+
- Asserts that the value is true.
+ Asserts a floating point value approximates another value as close as possible.
+ The object that is being extended.
+
+ 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.
@@ -398,17 +1128,29 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the value is equal to the specified value.
+ Asserts a floating point value approximates another value as close as possible.
- The expected value
+ The object that is being extended.
+
+ The expected value to compare the actual value with.
+
+
+ The maximum amount of which the two values may differ.
+
-
+
- Asserts that the value is equal to the specified value.
+ Asserts a floating point value approximates another value as close as possible.
- The expected value
+ The object that is being extended.
+
+ 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.
@@ -417,32 +1159,26 @@
Zero or more objects to format using the placeholders in .
-
-
- Gets the object which value is being asserted.
-
-
-
+
- Contains a number of methods to assert that an is in the expected state.
+ Contains assertions for the objects returned by the parent .
-
+
- Contains a number of methods to assert that a reference type object is in the expected state.
+ Initializes a new instance of the class.
+ The properties.
-
+
- Asserts that the object is of the specified type .
+ Asserts that the selected properties are virtual.
- The expected type of the object.
-
+
- Asserts that the object is of the specified type .
+ Asserts that the selected properties are virtual.
- The expected type of the object.
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.
@@ -451,309 +1187,197 @@
Zero or more objects to format using the placeholders in .
-
-
- Asserts that the object is assignable to a variable of type .
-
- The type to which the object should be assignable.
- An which can be used to chain assertions.
-
-
+
- Asserts that the object is assignable to a variable of type .
+ Asserts that the selected methods are decorated with the specified .
- 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 .
- An which can be used to chain assertions.
-
+
- Asserts that the is statisfied.
+ Asserts that the selected methods are decorated with the specified .
- The predicate which must be satisfied by the .
- An which can be used to chain assertions.
+
+ 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 is satisfied.
+ Gets the object which value is being asserted.
- The predicate which must be statisfied by the .
- The reason why the predicate should be satisfied.
- The parameters used when formatting the .
- An which can be used to chain assertions.
-
+
- Asserts that the is satisfied.
+ Allows for fluent selection of properties of a type through reflection.
- The predicate which must be statisfied by the .
- An which can be used to chain assertions.
-
+
- Asserts that the is satisfied.
+ Initializes a new instance of the class.
- The predicate which must be statisfied by the .
- The reason why the predicate should be satisfied.
- The parameters used when formatting the .
- An which can be used to chain assertions.
+ The type from which to select properties.
-
+
- Gets the object which value is being asserted.
+ Initializes a new instance of the class.
+ The types from which to select properties.
-
+
- Asserts that the number of items in the collection matches the supplied amount.
+ Only select the properties that are decorated with an attribute of the specified type.
- The expected number of items in the collection.
-
+
- Asserts that the number of items in the collection matches the supplied amount.
+ Only select the properties that return the specified type
- The expected number of items in the 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 number of items in the collection matches a condition stated by the .
+ The resulting objects.
- A predicate that yields the number of items that is expected to be in the collection.
-
+
- Asserts that the number of items in the collection matches a condition stated by the .
+ Returns an enumerator that iterates through the collection.
- A predicate that yields the number of items that is expected to be in the 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 .
-
+
+ A that can be used to iterate through the collection.
+
+ 1
-
+
- Asserts that the collection does not contain any items.
+ Returns an enumerator that iterates through a collection.
+
+ An object that can be used to iterate through the collection.
+
+ 2
-
+
- Asserts that the collection does not contain any items.
+ Only select the properties that have a public or internal getter.
-
- 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.
+ Dedicated class for comparing two strings and generating consistent error messages.
-
+
- Asserts that the collection contains at least 1 item.
+ Gets or sets a value indicating whether the subject should not match the pattern.
-
- 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.
+ Gets or sets a value indicating whether the matching process should ignore any casing difference.
-
+
- Asserts that the collection does not contain any duplicate items.
+ Extension methods for getting method and property selectors for a 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 collection does not contain any null items.
+ Returns the types that are visible outside the specified .
-
+
- Asserts that the collection does not contain any null items.
+ Returns a method selector for the current .
-
- 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 .
+ Returns a method selector for the current .
- An with the expected items.
-
+
- Expects the current collection to contain all the same elements in the same order as the collection identified by
- . Elements are compared using their .
+ Returns a property selector for the current .
- A params array with the expected elements.
-
+
- Expects the current collection to contain all the same elements in the same order as the collection identified by
- . Elements are compared using their .
+ Returns a property selector for the current .
- An with the expected elements.
-
- 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 .
+ Allows for fluent filtering a list of types.
- An with the elements that are not expected.
-
+
- 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 .
+ Determines whether a type is a subclass of another type, but NOT the same type.
- An with the elements that are not expected.
-
- 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 .
+ Determines whether a type implements an interface (but is not the interface itself).
- An with the expected elements.
-
+
- Expects the current collection to contain all elements of the collection identified by ,
- regardless of the order. Elements are compared using their .
+ Determines whether a type is decorated with a particular attribute.
- A params array with the expected elements.
-
+
- Expects the current collection to contain all elements of the collection identified by ,
- regardless of the order. Elements are compared using their .
+ Determines whether the namespace of type is exactly .
- An with the expected elements.
-
- 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 .
+ Determines whether the namespace of type is starts with .
- An with the unexpected elements.
-
+
- Expects the current collection not to contain all elements of the collection identified by ,
- regardless of the order. Elements are compared using their .
+ Returns an enumerator that iterates through the collection.
- An with the unexpected elements.
-
- 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 .
-
+
+ A that can be used to iterate through the collection.
+
+ 1
-
+
- Asserts that the current collection only contains items that are assignable to the type .
+ Returns an enumerator that iterates through a 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 .
-
+
+ An object that can be used to iterate through the collection.
+
+ 2
-
+
- Expects the current collection to contain the specified elements in any order. Elements are compared
- using their implementation.
+ Contains a number of methods to assert that an is in the expected state.
- An with the expected elements.
-
+
- Expects the current collection to contain the specified elements in any order. Elements are compared
- using their implementation.
+ Initializes a new instance of the class.
- An with the expected elements.
-
- 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.
+ Asserts that the current equals the attribute.
- An with the expected elements.
+ The expected attribute
-
+
- Expects the current collection to contain the specified elements in the exact same order. Elements are compared
- using their implementation.
+ Asserts that the current equals the attribute.
- An with the expected elements.
+ The expected attribute
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.
@@ -762,18 +1386,20 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the collection is a subset of the .
+ Asserts that the current does not equal the attribute,
+ using its implementation.
- An with the expected superset.
+ The unexpected attribute
-
+
- Asserts that the collection is a subset of the .
+ Asserts that the current does not equal the attribute,
+ using its implementation.
- An with the expected superset.
-
+ The unexpected attribute
+
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.
@@ -781,53 +1407,51 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the collection is not a subset of the .
+ Asserts that the is null.
- An with the unexpected superset.
-
+
- Asserts that the collection is not a subset of the .
+ Asserts that the is null.
- An with the unexpected superset.
- 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.
-
+
- Assert that the current collection has the same number of elements as .
+ Asserts that the is not null.
- The other collection with the same expected number of elements
-
+
- Assert that the current collection has the same number of elements as .
+ Asserts that the is not null.
- The other collection with the same expected number of elements
- 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.
-
+
- Asserts that the current collection has not been initialized yet with an actual collection.
+ Asserts that the current has the specified value.
+ The expected value
-
+
- Asserts that the current collection has not been initialized yet with an actual collection.
+ Asserts that the current has the specified value.
+ The 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.
@@ -836,38 +1460,34 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current collection has been initialized with an actual collection.
+ Gets the object which value is being asserted.
-
+
- Asserts that the current collection has been initialized with an actual collection.
+ Contains a number of methods to assert that an is in the expected state.
-
- 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 .
+ Initializes a new instance of the class.
- The index where the element is expected
- The expected element
-
+
- Asserts that the current collection has the supplied at the
- supplied .
+ Asserts that the current equals the document,
+ using its implementation.
+
+ The expected document
+
+
+
+ Asserts that the current equals the document,
+ using its implementation.
- The index where the element is expected
- The expected element
+ The expected document
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.
@@ -876,22 +1496,19 @@
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 does not contain the supplied item.
+ Asserts that the current does not equal the document,
+ using its implementation.
- The element that is not expected to be in the collection
+ The unexpected document
-
+
- Asserts that the current collection does not contain the supplied item.
+ Asserts that the current does not equal the document,
+ using its implementation.
- The element that is not expected to be in the collection
+ The unexpected document
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.
@@ -900,49 +1517,53 @@
Zero or more objects to format using the placeholders in .
-
+
- Contains a number of methods to assert that an is in the expected state.
+ Asserts that the is null.
-
+
- Asserts that the subject is considered equal to another object according to the implementation of .
+ Asserts that the is null.
-
- The object to pass to the subject's method.
+
+ 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 subject is considered equal to another object according to the implementation of .
+ Asserts that the is not null.
+
+
+
+
+ Asserts that the is not null.
-
- The object to pass to the subject's method.
-
- 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.
-
+
- Asserts that the subject is not equal to another object according to its implementation of .
+ Asserts that the current has a root element with the specified
+ name.
-
- The object to pass to the subject's method.
-
+ The name of the expected root element of the current document.
-
+
- Asserts that the subject is not equal to another object according to its implementation of .
+ Asserts that the current has a root element with the specified
+ name.
-
- The object to pass to the subject's method.
-
+ The name of the expected root element of the current document.
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.
@@ -951,20 +1572,22 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the subject is less than another object according to its implementation of .
+ Asserts that the element of the current has a direct
+ child element with the specified name.
- The object to pass to the subject's method.
+ The name of the expected child element of the current document's Root element.
-
+
- Asserts that the subject is less than another object according to its implementation of .
+ Asserts that the element of the current has a direct
+ child element with the specified name.
- The object to pass to the subject's method.
+ The name of the expected child element of the current document's Root element.
A formatted phrase as is supported by explaining why the assertion
@@ -974,21 +1597,32 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the subject is less than or equal to another object according to its implementation of .
+ Gets the object which value is being asserted.
-
- The object to pass to the subject's method.
-
-
+
- Asserts that the subject is less than or equal to another object according to its implementation of .
+ Contains a number of methods to assert that an is in the expected state.
-
- The object to pass to the subject's method.
-
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Asserts that the current equals the element.
+
+ The expected element
+
+
+
+ Asserts that the current equals the element.
+
+ The expected element
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.
@@ -997,21 +1631,19 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the subject is greater than another object according to its implementation of .
+ Asserts that the current does not equal the element,
+ using its implementation.
-
- The object to pass to the subject's method.
-
+ The unexpected element
-
+
- Asserts that the subject is greater than another object according to its implementation of .
+ Asserts that the current does not equal the element,
+ using its implementation.
-
- The object to pass to the subject's method.
-
+ The unexpected element
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.
@@ -1020,266 +1652,220 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the subject is greater than or equal to another object according to its implementation of .
+ Asserts that the is null.
-
- The object to pass to the subject's method.
-
-
+
- Asserts that the subject is greater than or equal to another object according to its implementation of .
+ Asserts that the is null.
-
- The object to pass to the subject's method.
-
- 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.
-
+
- Asserts that a value is within a range.
+ Asserts that the is not null.
-
- 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.
-
-
+
- Asserts that a value is within a range.
+ Asserts that the is not null.
-
- 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.
+ 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.
-
+
- Asserts that a nullable numeric value is not null.
+ Asserts that the current has an attribute with the specified
+ and .
+ The name of the expected attribute
+ The value of the expected attribute
-
+
- Asserts that a nullable numeric value is not null.
+ Asserts that the current has an attribute with the specified
+ and .
+ The name of the expected attribute
+ The value of the expected attribute
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 the current has a direct child element with the specified
+ name.
+ The name of the expected child element
-
+
- Asserts that a nullable numeric value is null.
+ Asserts that the current has a direct child element with the specified
+ name.
+ The name of the expected child element
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.
-
+
- Defines the way compares the expected exception
- message with the actual one.
+ Extension methods on to allow for a more fluent way of specifying a .
+
+ Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30)
+
+
-
+
- The message must match exactly, including the casing of the characters.
+ Returns a new value for the specified and
+ in the month January.
-
+
- The message must match except for the casing of the characters.
+ Returns a new value for the specified and
+ in the month February.
-
+
- The message must contain the exact text.
+ Returns a new value for the specified and
+ in the month March.
-
+
- The message must contain the text except for the casing of the characters.
+ Returns a new value for the specified and
+ in the month April.
-
+
- The message must match a wildcard pattern consisting of ordinary characters as well as * and ?.
+ Returns a new value for the specified and
+ in the month May.
-
+
- Contains a number of methods to assert that a is in the expected state.
+ Returns a new value for the specified and
+ in the month June.
-
- You can use the for a more fluent way of specifying a .
-
-
+
- Asserts that the current is exactly equal to the value.
+ Returns a new value for the specified and
+ in the month July.
-
+
- Asserts that the current is exactly equal to the value.
+ Returns a new value for the specified and
+ in the month August.
- The 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.
-
-
- Zero or more objects to format using the placeholders in .
-
-
+
- Asserts that the current is before the specified value.
+ Returns a new value for the specified and
+ in the month September.
- The that the current value is expected to be before.
-
+
- Asserts that the current is before the specified value.
+ Returns a new value for the specified and
+ in the month October.
- The that the current value is expected to be before.
-
- 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.
+ Returns a new value for the specified and
+ in the month November.
- The that the current value is expected to be on or before.
-
+
- Asserts that the current is either on, or before the specified value.
+ Returns a new value for the specified and
+ in the month December.
- The that the current value is expected to be on or before.
-
- 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.
+ Returns a new value for the specified and .
- The that the current value is expected to be after.
-
+
- Asserts that the current is after the specified value.
+ Returns a new value for the specified and time with the specified
+ , and optionally .
- The that the current value is expected to be after.
-
- 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.
+ Returns a new value that is the current before the
+ specified .
- The that the current value is expected to be on or after.
-
+
- Asserts that the current is either on, or after the specified value.
+ Returns a new value that is the current after the
+ specified .
- The that the current value is expected to be on or after.
-
- 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.
+ Contains a number of methods to assert that an integral number is in the correct state.
- The expected year of the current value.
-
+
- Asserts that the current has the year.
+ Contains a number of methods to assert that an is in the expected state.
- The expected year of the current 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 month.
+ Asserts that the numeric value is greater than or equal to zero.
- The expected month of the current value.
-
+
- Asserts that the current has the month.
+ Asserts that the numeric value is greater than or equal to zero.
- The expected month of the current 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.
@@ -1288,17 +1874,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current has the day.
+ Asserts that the numeric value is less than zero.
- The expected day of the current value.
-
+
- Asserts that the current has the day.
+ Asserts that the numeric value is less than zero.
- The expected day of the current 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.
@@ -1307,17 +1891,17 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current has the hour.
+ Asserts that the numeric value is less than the specified value.
- The expected hour of the current value.
+ The value to compare the current numeric value with.
-
+
- Asserts that the current has the hour.
+ Asserts that the numeric value is less than the specified value.
- The expected hour of the current value.
+ The value to compare the current numeric value 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.
@@ -1326,17 +1910,17 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current has the minute.
+ Asserts that the numeric value is less than or equal to the specified value.
- The expected minutes of the current value.
+ The value to compare the current numeric value with.
-
+
- Asserts that the current has the minute.
+ Asserts that the numeric value is less than or equal to the specified value.
- The expected minutes of the current value.
+ The value to compare the current numeric value 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.
@@ -1345,17 +1929,17 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current has the second.
+ Asserts that the numeric value is greater than the specified value.
- The expected seconds of the current value.
+ The value to compare the current numeric value with.
-
+
- Asserts that the current has the second.
+ Asserts that the numeric value is greater than the specified value.
- The expected seconds of the current value.
+ The value to compare the current numeric value 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.
@@ -1364,268 +1948,200 @@
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.
-
-
-
-
- Contains a number of methods to assert that an is in the correct state.
-
-
-
+
- Asserts that the thrown exception has a message that exactly matches the
+ Asserts that the numeric value is greater than or equal to the specified value.
-
- The expected message of the exception.
-
+ The value to compare the current numeric value with.
-
+
- Asserts that the thrown exception has a message that matches
- depending on the specified matching mode.
+ Asserts that the numeric value is greater than or equal to the specified value.
-
- The expected message of the exception.
-
+ The value to compare the current numeric value 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 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 thrown exception has a message that matches
- depending on the specified matching mode.
+ Asserts that a value is within a range.
-
- The expected message of the exception.
+
+ Where the range is continuous or incremental depends on the actual type of the value.
+
+
+ The minimum valid value of the range.
-
- Determines how the expected message is compared with the actual message.
+
+ The maximum valid value of the range.
-
+
- Asserts that the thrown exception has a message that matches
- depending on the specified matching mode.
+ Asserts that a value is within a range.
-
- The expected message of the exception.
+
+ Where the range is continuous or incremental depends on the actual type of the value.
+
+
+ The minimum valid value of the range.
-
- Determines how the expected message is compared with the actual message.
+
+ 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.
+ 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 thrown exception contains an inner exception of type .
-
- The expected type of the inner exception.
-
-
-
- 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 .
-
-
-
- Asserts that the thrown exception contains an inner exception with the .
-
- The expected message of the inner exception.
-
-
-
- Asserts that the thrown exception contains an inner exception with the .
-
- The expected message of the inner exception.
- Determines how the expected message is compared with the actual message.
-
-
+
- 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 integral number value is exactly the same as the value.
+
+ The expected value.
-
+
- Asserts that the thrown exception contains an inner exception with the .
+ Asserts that the integral number value is exactly the same as the value.
- The expected message of the inner exception.
- Determines how the expected message is compared with the actual message.
-
- The reason why the message of the inner exception should match .
+ The 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.
+
+
+ Zero or more objects to format using the placeholders in .
- The parameters used when formatting the .
-
+
- Asserts that the exception matches a particular condition.
+ Asserts that the integral number value is not the same as the value.
-
- The condition that the exception must match.
-
+ The unexpected value.
-
+
- Asserts that the exception matches a particular condition.
+ Asserts that the integral number value is not the same as the value.
-
- The condition that the exception must match.
-
+ The unexpected value.
- 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 .
-
+
- Gets the exception object of the exception thrown.
+ Contains a number of methods to assert that a nullable is in the expected state.
+
+ You can use the for a more fluent way of specifying a .
+
-
+
- Provides methods for asserting that the execution time of an satifies certain conditions.
+ Contains a number of methods to assert that a nullable is in the expected state.
-
+
- Initializes a new instance of the class.
+ Asserts that the time difference of the current is greater than zero.
- The action of which the execution time must be asserted.
-
+
- Asserts that the execution time of the operation does not exceed a specified amount of time.
+ Asserts that the time difference of the current is greater than zero.
-
- The maximum allowed duration.
+
+ 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 execution time of the operation does not exceed a specified amount of time.
+ Asserts that the time difference of the current is less than zero.
+
+
+
+
+ Asserts that the time difference of the current is less than zero.
-
- 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.
+ 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 methods for asserting that the execution time of an object member satifies certain conditions.
+ Asserts that the time difference of the current is equal to the
+ specified time.
-
+ The expected time difference
-
+
- Initializes a new instance of the class.
+ Asserts that the time difference of the current is equal to the
+ specified time.
- The object that exposes the method or property.
- A reference to the method or property to measure the execution time of.
+ The expected time difference
+
+ 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 .
+
-
+
- Contains a number of extension methods for floating point .
+ Asserts that the time difference of the current is not equal to the
+ specified time.
+ The unexpected time difference
-
+
- Asserts a floating point value approximates another value as close as possible.
+ Asserts that the time difference of the current is not equal to the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
+ The unexpected time difference
+
+ 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 maximum amount of which the two values may differ.
+
+ 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 time difference of the current is less than the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
-
-
- The maximum amount of which the two values may differ.
-
+ The time difference to which the current value will be compared
+
+
+
+ Asserts that the time difference of the current is less than the
+ specified time.
+
+ The time difference to which the current value will be compared
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.
@@ -1634,29 +2150,19 @@
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 time difference of the current is less than or equal to the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
-
-
- The maximum amount of which the two values may differ.
-
+ The time difference to which the current value will be compared
-
+
- Asserts a floating point value approximates another value as close as possible.
+ Asserts that the time difference of the current is less than or equal to the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
-
-
- The maximum amount of which the two values may differ.
-
+ The time difference to which the current value will be compared
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.
@@ -1665,29 +2171,19 @@
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 time difference of the current is greater than the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
-
-
- The maximum amount of which the two values may differ.
-
+ The time difference to which the current value will be compared
-
+
- Asserts a floating point value approximates another value as close as possible.
+ Asserts that the time difference of the current is greater than the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
-
-
- The maximum amount of which the two values may differ.
-
+ The time difference to which the current value will be compared
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.
@@ -1696,174 +2192,174 @@
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 time difference of the current is greater than or equal to the
+ specified time.
- The object that is being extended.
-
- The expected value to compare the actual value with.
+ The time difference to which the current value will be compared
+
+
+
+ Asserts that the time difference of the current is greater than or equal to the
+ specified time.
+
+ The time difference to which the current value will be compared
+
+ 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 maximum amount of which the two values may differ.
+
+ Zero or more objects to format using the placeholders in .
-
+
- Asserts a floating point value approximates another value as close as possible.
+ Gets the object which value is being asserted.
- The object that is being extended.
-
- The expected value to compare the actual value with.
-
-
- The maximum amount of which the two values may differ.
+
+
+
+ Asserts that a nullable value is not null.
+
+
+
+
+ Asserts that a nullable 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 value is null.
+
+
+
+
+ Asserts that a nullable 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 .
-
+
-
+
- Contains a number of methods to assert that an is in the expected state.
+ Is thrown when the detects an object that was already processed.
-
+
- Asserts that the collection contains the specified item.
+ Simple class for detecting an attempt to process an object that were already processed.
-
+
- Asserts that the collection contains the specified item.
+ Tracks the specified reference but throws an
+ if that reference was already tracked.
- The expected 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.
+ Extension methods on to allow for a more fluent way of specifying a .
- An of expected items.
- Additional items that are expected to be contained by the collection.
+
+ Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()).
+
+
-
+
- Asserts that the collection contains at least one item that matches the predicate.
+ Returns a based on a number of milliseconds.
- A predicate to match the items in the collection against.
-
+
- Asserts that the collection contains at least one item that matches the predicate.
+ Returns a based on a number of seconds.
- A predicate to match the items in the collection against.
-
- 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.
+ Returns a based on a number of seconds, and add the specified
+ .
- A predicate to match the items in the collection against.
-
+
- Asserts that the collection only contains items that match a predicate.
+ Returns a based on a number of minutes.
- A predicate to match the items in the collection against.
-
- 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.
+ Returns a based on a number of minutes, and add the specified
+ .
- A predicate to match the items in the collection against.
-
+
- Asserts that the collection does not contain any items that match the predicate.
+ Returns a based on a number of hours.
- A predicate to match the items in the collection against.
-
- 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.
-
-
+
- Contains a number of methods to assert that an is in the expected state.
+ Returns a based on a number of hours, and add the specified
+ .
-
+
- Asserts that the current dictionary has not been initialized yet with an actual dictionary.
+ Returns a based on a number of days.
-
+
- Asserts that the current dictionary has not been initialized yet with an actual dictionary.
+ Returns a based on a number of days, and add the specified
+ .
-
- 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.
+ Convenience method for chaining multiple calls to the methods provided by this class.
+
+ 23.Hours().And(59.Minutes())
+
-
+
- Asserts that the current dictionary has been initialized with an actual dictionary.
+ Contains a number of methods to assert that a reference type object is in the expected state.
-
- 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.
+ Asserts that the object is of the specified type .
- The expected number of items.
+ The expected type of the object.
-
+
- Asserts that the number of items in the dictionary matches the supplied amount.
+ Asserts that the object is of the specified type .
- The expected number of items.
+ The expected type of the object.
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.
@@ -1872,97 +2368,73 @@
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.
+ Asserts that the object is assignable to a variable of type .
- The predicate which must be statisfied by the amount of items.
+ The type to which the object should be assignable.
+ An which can be used to chain assertions.
-
+
- Asserts that the number of items in the dictionary matches a condition stated by a predicate.
+ Asserts that the object is assignable to a variable of type .
- 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 .
-
+ 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 .
+ An which can be used to chain assertions.
-
+
- Asserts that the dictionary does not contain any items.
+ Asserts that the is statisfied.
+ The predicate which must be satisfied by the .
+ An which can be used to chain assertions.
-
+
- Asserts that the dictionary does not contain any items.
+ Asserts that the is satisfied.
-
- 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 predicate which must be statisfied by the .
+ The reason why the predicate should be satisfied.
+ The parameters used when formatting the .
+ An which can be used to chain assertions.
-
+
- Asserts that the dictionary contains at least 1 item.
+ Asserts that the is satisfied.
+ The predicate which must be statisfied by the .
+ An which can be used to chain assertions.
-
+
- Asserts that the dictionary contains at least 1 item.
+ Asserts that the is satisfied.
-
- 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 predicate which must be statisfied by the .
+ The reason why the predicate should be satisfied.
+ The parameters used when formatting the .
+ An which can be used to chain assertions.
-
+
- Asserts that the current dictionary contains all the same key-value pairs as the
- specified dictionary. Keys and values are compared using
- their implementation.
+ Gets the object which value is being asserted.
- The expected dictionary
-
+
- Asserts that the current dictionary contains all the same key-value pairs as the
- specified dictionary. Keys and values are compared using
- their implementation.
+ Contains a number of methods to assert that a is in the expected state.
- 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 .
-
-
+
- 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.
+ Asserts that the value is false.
- The unexpected dictionary
-
+
- 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.
+ Asserts that the value is false.
- 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.
@@ -1971,19 +2443,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the dictionary contains the specified key. Keys are compared using
- their implementation.
+ Asserts that the value is true.
- The expected key
-
+
- Asserts that the dictionary contains the specified key. Keys are compared using
- their implementation.
+ Asserts that the value is true.
- 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.
@@ -1992,19 +2460,17 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the dictionary contains all of the specified keys. Keys are compared using
- their implementation.
+ Asserts that the value is equal to the specified value.
- The expected keys
+ The expected value
-
+
- Asserts that the dictionary contains all of the specified keys. Keys are compared using
- their implementation.
+ Asserts that the value is equal to the specified value.
- The expected keys
+ The 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.
@@ -2013,19 +2479,27 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current dictionary does not contain the specified key.
- Keys are compared using their implementation.
+ Gets the object which value is being asserted.
- The unexpected key
-
+
- Asserts that the current dictionary does not contain the specified key.
- Keys are compared using their implementation.
+ Contains a number of methods to assert that an is in the expected state.
- The unexpected key
+
+
+
+ Asserts that the number of items in the collection matches the supplied amount.
+
+ The expected number of items in the collection.
+
+
+
+ Asserts that the number of items in the collection matches the supplied amount.
+
+ The expected number of items in the 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.
@@ -2034,19 +2508,17 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the dictionary contains the specified value. Values are compared using
- their implementation.
+ Asserts that the number of items in the collection matches a condition stated by the .
- The expected value
+ A predicate that yields the number of items that is expected to be in the collection.
-
+
- Asserts that the dictionary contains the specified value. Values are compared using
- their implementation.
+ Asserts that the number of items in the collection matches a condition stated by the .
- The expected value
+ A predicate that yields the number of items that is expected to be in the 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.
@@ -2055,19 +2527,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the dictionary contains all of the specified values. Values are compared using
- their implementation.
+ Asserts that the collection does not contain any items.
- The expected values
-
+
- Asserts that the dictionary contains all of the specified values. Values are compared using
- their implementation.
+ Asserts that the collection does not contain any items.
- The expected values
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.
@@ -2076,19 +2544,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current dictionary does not contain the specified value.
- Values are compared using their implementation.
+ Asserts that the collection contains at least 1 item.
- The unexpected value
-
+
- Asserts that the current dictionary does not contain the specified value.
- Values are compared using their implementation.
+ Asserts that the collection contains at least 1 item.
- The unexpected 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.
@@ -2097,19 +2561,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current dictionary contains the specified .
- Keys and values are compared using their implementation.
+ Asserts that the collection does not contain any duplicate items.
- The expected
-
+
- Asserts that the current dictionary contains the specified .
- Keys and values are compared using their implementation.
+ Asserts that the collection does not contain any duplicate items.
- The expected
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.
@@ -2118,19 +2578,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation.
+ Asserts that the collection does not contain any null items.
- The key for which to validate the value
- The value to validate
-
+
- Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation.
+ Asserts that the collection does not contain any null items.
- 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.
@@ -2139,19 +2595,26 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current dictionary does not contain the specified .
- Keys and values are compared using their implementation.
+ Expects the current collection to contain all the same elements in the same order as the collection identified by
+ . Elements are compared using their .
- The unexpected
+ An with the expected items.
-
+
- Asserts that the current dictionary does not contain the specified .
- Keys and values are compared using their implementation.
+ Expects the current collection to contain all the same elements in the same order as the collection identified by
+ . Elements are compared using their .
- The unexpected
+ A params array with the expected elements.
+
+
+
+ Expects the current collection to contain all the same elements in the same order as the collection identified by
+ . Elements are compared using their .
+
+ An with the expected elements.
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.
@@ -2160,21 +2623,19 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the current dictionary does not contain the specified for the
- supplied . Values are compared using their implementation.
+ 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 .
- The key for which to validate the value
- The value to validate
+ An with the elements that are not expected.
-
+
- Asserts that the current dictionary does not contain the specified for the
- supplied . Values are compared using their implementation.
+ 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 .
- The key for which to validate the value
- The value to validate
+ An with the elements that are not expected.
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.
@@ -2183,25 +2644,26 @@
Zero or more objects to format using the placeholders in .
-
-
- Gets the object which value is being asserted.
-
-
-
+
- Contains a number of methods to assert that a is in the correct state.
+ Expects the current collection to contain all elements of the collection identified by ,
+ regardless of the order. Elements are compared using their .
+ An with the expected elements.
-
+
- Asserts that the is .
+ Expects the current collection to contain all elements of the collection identified by ,
+ regardless of the order. Elements are compared using their .
+ A params array with the expected elements.
-
+
- Asserts that the is .
+ Expects the current collection to contain all elements of the collection identified by ,
+ regardless of the order. Elements are compared using their .
+ An with the expected elements.
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.
@@ -2210,15 +2672,19 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the is not .
+ Expects the current collection not to contain all elements of the collection identified by ,
+ regardless of the order. Elements are compared using their .
+ An with the unexpected elements.
-
+
- Asserts that the is not .
+ Expects the current collection not to contain all elements of the collection identified by ,
+ regardless of the order. Elements are compared using their .
+ An with the unexpected elements.
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.
@@ -2227,23 +2693,10 @@
Zero or more objects to format using the placeholders in .
-
-
- Asserts that the is equal to the GUID.
-
- The expected value to compare the actual value with.
-
-
-
- Asserts that the is equal to the GUID.
-
- The expected value to compare the actual value with.
-
-
+
- Asserts that the is equal to the GUID.
+ Asserts that the current collection only contains items that are assignable to the type .
- The expected value to compare the actual value 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.
@@ -2252,11 +2705,19 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the is equal to the GUID.
+ Expects the current collection to contain the specified elements in any order. Elements are compared
+ using their implementation.
- The expected value to compare the actual value with.
+ An with the expected elements.
+
+
+
+ Expects the current collection to contain the specified elements in any order. Elements are compared
+ using their implementation.
+
+ An with the expected elements.
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.
@@ -2265,17 +2726,19 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the is not equal to the GUID.
+ Expects the current collection to contain the specified elements in the exact same order. Elements are compared
+ using their implementation.
- The unexpected value to compare the actual value with.
+ An with the expected elements.
-
+
- Asserts that the is not equal to the GUID.
+ Expects the current collection to contain the specified elements in the exact same order. Elements are compared
+ using their implementation.
- The unexpected value to compare the actual value with.
+ An with the expected elements.
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.
@@ -2284,30 +2747,36 @@
Zero or more objects to format using the placeholders in .
-
-
- Gets the object which value is being asserted.
-
-
-
+
- Contains a number of methods to assert that an integral number is in the correct state.
+ Asserts that the collection is a subset of the .
+ An with the expected superset.
-
+
- Contains a number of methods to assert that an is in the expected state.
+ Asserts that the collection is a subset of the .
+ An with the expected superset.
+
+ 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 numeric value is greater than or equal to zero.
+ Asserts that the collection is not a subset of the .
+ An with the unexpected superset.
-
+
- Asserts that the numeric value is greater than or equal to zero.
+ Asserts that the collection is not a subset of the .
+ An with the unexpected superset.
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.
@@ -2316,15 +2785,17 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the numeric value is less than zero.
+ Assert that the current collection has the same number of elements as .
+ The other collection with the same expected number of elements
-
+
- Asserts that the numeric value is less than zero.
+ Assert that the current collection has the same number of elements as .
+ The other collection with the same expected number of elements
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.
@@ -2333,17 +2804,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the numeric value is less than the specified value.
+ Asserts that the current collection has not been initialized yet with an actual collection.
- The value to compare the current numeric value with.
-
+
- Asserts that the numeric value is less than the specified value.
+ Asserts that the current collection has not been initialized yet with an actual collection.
- The value to compare the current numeric value 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.
@@ -2352,17 +2821,15 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the numeric value is less than or equal to the specified value.
+ Asserts that the current collection has been initialized with an actual collection.
- The value to compare the current numeric value with.
-
+
- Asserts that the numeric value is less than or equal to the specified value.
+ Asserts that the current collection has been initialized with an actual collection.
- The value to compare the current numeric value 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.
@@ -2371,17 +2838,21 @@
Zero or more objects to format using the placeholders in .
-
+
- Asserts that the numeric value is greater than the specified