1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-09 04:22:30 +01:00

Started to add support for deskmetrics

This commit is contained in:
kay.one 2012-01-24 19:09:49 -08:00
parent 02cb12bdb8
commit b225db9aaf
93 changed files with 50336 additions and 5459 deletions

View File

@ -0,0 +1,248 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>DeskMetrics</name>
</assembly>
<members>
<member name="M:DeskMetrics.OperatingSystem.Hardware.WindowsHardware.GetMemoryData">
<summary>
GetProcessorFrequency Physical Memory GetComponentName
</summary>
</member>
<member name="M:DeskMetrics.OperatingSystem.Hardware.WindowsHardware.GetDiskData">
<summary>
GetProcessorFrequency Disk Size GetComponentName
</summary>
</member>
<member name="M:DeskMetrics.OperatingSystem.Hardware.WindowsHardware.GetScreenResolution">
<summary>
GetProcessorFrequency Screen resolution GetComponentName
</summary>
</member>
<member name="F:DeskMetrics.OperatingSystem.WindowsOperatingSystem._servicePack">
<summary>
Field OS Service Pack
</summary>
</member>
<member name="M:DeskMetrics.OperatingSystem.WindowsOperatingSystem.GetFrameworkVersion">
<summary>
GetProcessorFrequency Framework ApplicationVersion GetComponentName
</summary>
</member>
<member name="M:DeskMetrics.OperatingSystem.WindowsOperatingSystem.GetArchicteture">
<summary>
GetProcessorFrequency OS Archicteture GetComponentName
</summary>
</member>
<member name="M:DeskMetrics.OperatingSystem.WindowsOperatingSystem.GetVersion">
<summary>
GetProcessorFrequency OS ApplicationVersion GetComponentName
</summary>
</member>
<member name="M:DeskMetrics.OperatingSystem.WindowsOperatingSystem.GetJavaVersion">
<summary>
GetProcessorFrequency Java version GetComponentName
</summary>
</member>
<member name="P:DeskMetrics.OperatingSystem.WindowsOperatingSystem.FrameworkVersion">
<summary>
GetProcessorFrequency and Set Framework ApplicationVersion
</summary>
</member>
<member name="P:DeskMetrics.OperatingSystem.WindowsOperatingSystem.Architecture">
<summary>
GetProcessorFrequency and Set OS Archicteture
</summary>
</member>
<member name="P:DeskMetrics.OperatingSystem.WindowsOperatingSystem.Version">
<summary>
GetProcessorFrequency and Set OS ApplicationVersion
</summary>
</member>
<member name="P:DeskMetrics.OperatingSystem.WindowsOperatingSystem.FrameworkServicePack">
<summary>
GetProcessorFrequency and Set Frameworl Service Pack
</summary>
</member>
<member name="P:DeskMetrics.OperatingSystem.WindowsOperatingSystem.JavaVersion">
<summary>
GetProcessorFrequency and Set Java ApplicationVersion
</summary>
</member>
<member name="P:DeskMetrics.OperatingSystem.WindowsOperatingSystem.ServicePack">
<summary>
GetProcessorFrequency and Set OS Service Pack
</summary>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.Start">
<summary>
Starts the application tracking.
</summary>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.Stop">
<summary>
Stops the application tracking and send the collected data to DeskMetrics
</summary>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterEvent(System.String,System.String)">
<summary>
Register an event occurrence
</summary>
<param name="eventCategory">EventCategory Category</param>
<param name="eventName">EventCategory eventName</param>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterEventPeriod(System.String,System.String,System.TimeSpan,System.Boolean)">
<summary>
Tracks an event related to time and intervals
</summary>
<param name="eventCategory">
The event category
</param>
<param name="eventName">
The event name
</param>
<param name="eventTime">
The event duration
</param>
<param name="completed">
True if the event was completed.
</param>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterInstall">
<summary>
Tracks an installation
</summary>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterUninstall">
<summary>
Tracks an uninstall
</summary>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterException(System.Exception)">
<summary>
Tracks an exception
</summary>
<param name="exception">
The exception object to be tracked
</param>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterEventValue(System.String,System.String,System.String)">
<summary>
Tracks an event with custom value
</summary>
<param name="eventCategory">
The event category
</param>
<param name="eventName">
The event name
</param>
<param name="eventValue">
The custom value
</param>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterCustomData(System.String,System.String)">
<summary>
Tracks custom data
</summary>
<param name="key">
The custom data name
</param>
<param name="value">
The custom data value
</param>
</member>
<member name="M:DeskMetrics.IDeskMetricsClient.RegisterLog(System.String)">
<summary>
Tracks a log
</summary>
<param name="message">
The log message
</param>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.Start">
<summary>
Starts the application tracking.
</summary>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.Stop">
<summary>
Stops the application tracking and send the collected data to DeskMetrics
</summary>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterEvent(System.String,System.String)">
<summary>
Register an event occurrence
</summary>
<param name="eventCategory">EventCategory Category</param>
<param name="eventName">EventCategory eventName</param>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterEventPeriod(System.String,System.String,System.TimeSpan,System.Boolean)">
<summary>
Tracks an event related to time and intervals
</summary>
<param name="eventCategory">
The event category
</param>
<param name="eventName">
The event name
</param>
<param name="eventTime">
The event duration
</param>
<param name="completed">
True if the event was completed.
</param>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterInstall">
<summary>
Tracks an installation
</summary>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterUninstall">
<summary>
Tracks an uninstall
</summary>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterException(System.Exception)">
<summary>
Tracks an exception
</summary>
<param name="exception">
The exception object to be tracked
</param>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterEventValue(System.String,System.String,System.String)">
<summary>
Tracks an event with custom value
</summary>
<param name="eventCategory">
The event category
</param>
<param name="eventName">
The event name
</param>
<param name="eventValue">
The custom value
</param>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterCustomData(System.String,System.String)">
<summary>
Tracks custom data
</summary>
<param name="key">
The custom data name
</param>
<param name="value">
The custom data value
</param>
</member>
<member name="M:DeskMetrics.DeskMetricsClient.RegisterLog(System.String)">
<summary>
Tracks a log
</summary>
<param name="message">
The log message
</param>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

View File

@ -36,9 +36,9 @@
<Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL"> <Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath> <HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
</Reference> </Reference>
<Reference Include="FluentAssertions, Version=1.6.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL"> <Reference Include="FluentAssertions, Version=1.7.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll</HintPath> <HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Moq"> <Reference Include="Moq">
<HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath> <HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="FluentAssertions" version="1.6.0" /> <package id="FluentAssertions" version="1.7.0" />
<package id="Moq" version="4.0.10827" /> <package id="Moq" version="4.0.10827" />
<package id="NBuilder" version="3.0.1.1" /> <package id="NBuilder" version="3.0.1.1" />
<package id="Ninject" version="2.2.1.4" /> <package id="Ninject" version="2.2.1.4" />

View File

@ -33,9 +33,9 @@
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x86</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="FluentAssertions, Version=1.6.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL"> <Reference Include="FluentAssertions, Version=1.7.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll</HintPath> <HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Moq"> <Reference Include="Moq">
<HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath> <HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="FluentAssertions" version="1.6.0" /> <package id="FluentAssertions" version="1.7.0" />
<package id="Moq" version="4.0.10827" /> <package id="Moq" version="4.0.10827" />
<package id="NLog" version="2.0.0.2000" /> <package id="NLog" version="2.0.0.2000" />
<package id="NUnit" version="2.5.10.11092" /> <package id="NUnit" version="2.5.10.11092" />

View File

@ -40,6 +40,9 @@ public static bool IsDebug
} }
} }
public static bool IsNewInstall { get; set; }
public virtual bool IsUserInteractive public virtual bool IsUserInteractive
{ {
get { return Environment.UserInteractive; } get { return Environment.UserInteractive; }

View File

@ -4,4 +4,12 @@
<!-- Supported values: nunit, xunit and mstest --> <!-- Supported values: nunit, xunit and mstest -->
<add key="FluentAssertions.TestFramework" value="nunit"/> <add key="FluentAssertions.TestFramework" value="nunit"/>
</appSettings> </appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration> </configuration>

View File

@ -4,6 +4,7 @@
using System.Linq; using System.Linq;
using FluentAssertions; using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Common;
using NzbDrone.Core.Jobs; using NzbDrone.Core.Jobs;
using NzbDrone.Core.Providers; using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Indexer; using NzbDrone.Core.Providers.Indexer;
@ -101,5 +102,12 @@ public void JobProvider_should_be_singletone()
first.Should().BeSameAs(second); 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);
}
} }
} }

View File

@ -3,7 +3,9 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using FizzWare.NBuilder; using FizzWare.NBuilder;
using FluentAssertions;
using Moq; using Moq;
using NzbDrone.Common;
using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore;
using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository; using NzbDrone.Core.Repository;
@ -18,7 +20,7 @@ internal static class TestDbHelper
internal static string ConnectionString { get; private set; } 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("====================DataBase====================");
Console.WriteLine("Cloning database from template."); Console.WriteLine("Cloning database from template.");

View File

@ -36,15 +36,18 @@
<Reference Include="Accessibility"> <Reference Include="Accessibility">
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="DeskMetrics">
<HintPath>..\Libraries\DeskMetrics\DeskMetrics.dll</HintPath>
</Reference>
<Reference Include="EntityFramework, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <Reference Include="EntityFramework, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll</HintPath> <HintPath>..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference> </Reference>
<Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL"> <Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath> <HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
</Reference> </Reference>
<Reference Include="FluentAssertions, Version=1.6.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL"> <Reference Include="FluentAssertions, Version=1.7.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll</HintPath> <HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private> <Private>True</Private>
@ -89,6 +92,7 @@
<Reference Include="System.ServiceModel" /> <Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" /> <Reference Include="System.Transactions" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="TvdbLib, Version=0.8.8.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="TvdbLib, Version=0.8.8.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\Libraries\TvdbLib.dll</HintPath> <HintPath>..\Libraries\TvdbLib.dll</HintPath>
@ -102,6 +106,7 @@
<Compile Include="JobTests\BacklogSearchJobTest.cs" /> <Compile Include="JobTests\BacklogSearchJobTest.cs" />
<Compile Include="JobTests\BannerDownloadJobTest.cs" /> <Compile Include="JobTests\BannerDownloadJobTest.cs" />
<Compile Include="JobTests\RecentBacklogSearchJobTest.cs" /> <Compile Include="JobTests\RecentBacklogSearchJobTest.cs" />
<Compile Include="ProviderTests\AnalyticsProviderTests\AnalyticsProviderFixture.cs" />
<Compile Include="ProviderTests\InventoryProviderTests\IsUpgradeFixture.cs" /> <Compile Include="ProviderTests\InventoryProviderTests\IsUpgradeFixture.cs" />
<Compile Include="ProviderTests\InventoryProviderTests\IsUpgradePossibleFixture.cs" /> <Compile Include="ProviderTests\InventoryProviderTests\IsUpgradePossibleFixture.cs" />
<Compile Include="ProviderTests\MediaFileProviderTests\CleanUpDatabaseFixture.cs" /> <Compile Include="ProviderTests\MediaFileProviderTests\CleanUpDatabaseFixture.cs" />
@ -251,6 +256,7 @@
</None> </None>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup> <PropertyGroup>
<PreBuildEvent> <PreBuildEvent>

View File

@ -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<IDeskMetricsClient>().SetupGet(c => c.Started).Returns(true);
var provider = Mocker.Resolve<AnalyticsProvider>();
provider.Checkpoint();
Mocker.GetMock<IDeskMetricsClient>().Verify(c=>c.Start(), Times.Once());
Mocker.GetMock<IDeskMetricsClient>().Verify(c=>c.Stop(), Times.Once());
}
[Test]
public void checkpoint_should_not_stop_existing_if_not_started()
{
Mocker.GetMock<IDeskMetricsClient>().SetupGet(c => c.Started).Returns(false);
var provider = Mocker.Resolve<AnalyticsProvider>();
provider.Checkpoint();
Mocker.GetMock<IDeskMetricsClient>().Verify(c => c.Start(), Times.Once());
Mocker.GetMock<IDeskMetricsClient>().Verify(c => c.Stop(), Times.Never());
}
[Test]
public void new_install_should_be_registered()
{
EnviromentProvider.IsNewInstall = true;
var provider = Mocker.Resolve<AnalyticsProvider>();
provider.Checkpoint();
Mocker.GetMock<IDeskMetricsClient>().Verify(c => c.RegisterInstall(), Times.Once());
}
[Test]
public void upgrade_should_not_register_install()
{
EnviromentProvider.IsNewInstall = false;
var provider = Mocker.Resolve<AnalyticsProvider>();
provider.Checkpoint();
Mocker.GetMock<IDeskMetricsClient>().Verify(c => c.RegisterInstall(), Times.Never());
}
}
}

View File

@ -12,20 +12,19 @@ namespace NzbDrone.Core.Test.ProviderTests
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
public class ConfigProviderTest : CoreTest public class ConfigProviderTest : CoreTest
{ {
[SetUp]
public void SetUp()
{
WithRealDb();
}
[Test] [Test]
public void Add_new_value_to_database() public void Add_new_value_to_database()
{ {
const string key = "MY_KEY"; const string key = "MY_KEY";
const string value = "MY_VALUE"; const string value = "MY_VALUE";
var db = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(db);
//Act
Mocker.Resolve<ConfigProvider>().SetValue(key, value); Mocker.Resolve<ConfigProvider>().SetValue(key, value);
//Assert
Mocker.Resolve<ConfigProvider>().GetValue(key, "").Should().Be(value); Mocker.Resolve<ConfigProvider>().GetValue(key, "").Should().Be(value);
} }
@ -36,11 +35,8 @@ public void Get_value_from_database()
const string value = "MY_VALUE"; const string value = "MY_VALUE";
var db = TestDbHelper.GetEmptyDatabase(); Db.Insert(new Config { Key = key, Value = value });
Mocker.SetConstant(db); 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 //Act
var result = Mocker.Resolve<ConfigProvider>().GetValue(key, ""); var result = Mocker.Resolve<ConfigProvider>().GetValue(key, "");
@ -56,11 +52,6 @@ public void Get_value_should_return_default_when_no_value()
const string key = "MY_KEY"; const string key = "MY_KEY";
const string value = "MY_VALUE"; const string value = "MY_VALUE";
var db = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(db);
//Act //Act
var result = Mocker.Resolve<ConfigProvider>().GetValue(key, value); var result = Mocker.Resolve<ConfigProvider>().GetValue(key, value);
@ -75,11 +66,7 @@ public void New_value_should_update_old_value_new_value()
const string originalValue = "OLD_VALUE"; const string originalValue = "OLD_VALUE";
const string newValue = "NEW_VALUE"; const string newValue = "NEW_VALUE";
Db.Insert(new Config { Key = key, Value = originalValue });
var db = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(db);
db.Insert(new Config { Key = key, Value = originalValue });
//Act //Act
Mocker.Resolve<ConfigProvider>().SetValue(key, newValue); Mocker.Resolve<ConfigProvider>().SetValue(key, newValue);
@ -87,7 +74,7 @@ public void New_value_should_update_old_value_new_value()
//Assert //Assert
result.Should().Be(newValue); result.Should().Be(newValue);
db.Fetch<Config>().Should().HaveCount(1); Db.Fetch<Config>().Should().HaveCount(1);
} }
[Test] [Test]
@ -96,11 +83,6 @@ public void New_value_should_update_old_value_same_value()
const string key = "MY_KEY"; const string key = "MY_KEY";
const string value = "OLD_VALUE"; const string value = "OLD_VALUE";
var db = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(db);
//Act //Act
Mocker.Resolve<ConfigProvider>().SetValue(key, value); Mocker.Resolve<ConfigProvider>().SetValue(key, value);
Mocker.Resolve<ConfigProvider>().SetValue(key, value); Mocker.Resolve<ConfigProvider>().SetValue(key, value);
@ -108,17 +90,58 @@ public void New_value_should_update_old_value_same_value()
//Assert //Assert
result.Should().Be(value); result.Should().Be(value);
db.Fetch<Config>().Should().HaveCount(1); Db.Fetch<Config>().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<ConfigProvider>().GetValue(key, value, persist: true).Should().Be(value);
Mocker.Resolve<ConfigProvider>().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<ConfigProvider>().GetValue(key, value1).Should().Be(value1);
Mocker.Resolve<ConfigProvider>().GetValue(key, value2).Should().Be(value2);
}
[Test]
public void uguid_should_only_be_set_once()
{
var guid1 = Mocker.Resolve<ConfigProvider>().UGuid;
var guid2 = Mocker.Resolve<ConfigProvider>().UGuid;
guid1.Should().Be(guid2);
}
[Test]
public void uguid_should_return_valid_result_on_first_call()
{
var guid = Mocker.Resolve<ConfigProvider>().UGuid;
guid.Should().NotBeBlank();
Guid.Parse(guid).ToString().Should().NotBe(new Guid().ToString());
}
[Test] [Test]
[Description("This test will use reflection to ensure each config property read/writes to a unique key")] [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() public void config_properties_should_write_and_read_using_same_key()
{ {
WithStrictMocker(); WithStrictMocker();
var db = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(db);
var configProvider = Mocker.Resolve<ConfigProvider>(); var configProvider = Mocker.Resolve<ConfigProvider>();
var allProperties = typeof(ConfigProvider).GetProperties(); var allProperties = typeof(ConfigProvider).GetProperties();
@ -157,7 +180,7 @@ public void config_properties_should_write_and_read_using_same_key()
returnValue.Should().Be(value, propertyInfo.Name); returnValue.Should().Be(value, propertyInfo.Name);
} }
db.Fetch<Config>().Should() Db.Fetch<Config>().Should()
.HaveSameCount(allProperties, "two different properties are writing to the same key in db. Copy/Past fail."); .HaveSameCount(allProperties, "two different properties are writing to the same key in db. Copy/Past fail.");
} }
} }

View File

@ -32,7 +32,7 @@ public void get_series_files()
var database = TestDbHelper.GetEmptyDatabase(true); var database = TestDbHelper.GetEmptyDatabase();
database.InsertMany(firstSeriesFiles); database.InsertMany(firstSeriesFiles);
@ -63,7 +63,7 @@ public void get_season_files()
var database = TestDbHelper.GetEmptyDatabase(true); var database = TestDbHelper.GetEmptyDatabase();
database.InsertMany(firstSeriesFiles); database.InsertMany(firstSeriesFiles);
database.InsertMany(secondSeriesFiles); database.InsertMany(secondSeriesFiles);
@ -146,7 +146,7 @@ public void DeleteEpisodeFile()
var episodeFiles = Builder<EpisodeFile>.CreateListOfSize(10).Build(); var episodeFiles = Builder<EpisodeFile>.CreateListOfSize(10).Build();
var database = TestDbHelper.GetEmptyDatabase(true); var database = TestDbHelper.GetEmptyDatabase();
Mocker.SetConstant(database); Mocker.SetConstant(database);
database.InsertMany(episodeFiles); database.InsertMany(episodeFiles);

View File

@ -3,7 +3,7 @@
<package id="AutoMoq" version="1.3.1.3" /> <package id="AutoMoq" version="1.3.1.3" />
<package id="EntityFramework" version="4.2.0.0" /> <package id="EntityFramework" version="4.2.0.0" />
<package id="EntityFramework.SqlServerCompact" version="4.1.8482.2" /> <package id="EntityFramework.SqlServerCompact" version="4.1.8482.2" />
<package id="FluentAssertions" version="1.6.0" /> <package id="FluentAssertions" version="1.7.0" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<package id="Moq" version="4.0.10827" /> <package id="Moq" version="4.0.10827" />
<package id="NBuilder" version="3.0.1.1" /> <package id="NBuilder" version="3.0.1.1" />

View File

@ -2,6 +2,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using DeskMetrics;
using Ninject; using Ninject;
using NLog; using NLog;
using NzbDrone.Common; using NzbDrone.Common;
@ -9,6 +10,7 @@
using NzbDrone.Core.Instrumentation; using NzbDrone.Core.Instrumentation;
using NzbDrone.Core.Jobs; using NzbDrone.Core.Jobs;
using NzbDrone.Core.Providers; using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Providers.ExternalNotification; using NzbDrone.Core.Providers.ExternalNotification;
using NzbDrone.Core.Providers.Indexer; using NzbDrone.Core.Providers.Indexer;
using PetaPoco; using PetaPoco;
@ -27,6 +29,7 @@ public CentralDispatch()
Kernel = new StandardKernel(); Kernel = new StandardKernel();
InitDatabase(); InitDatabase();
InitAnalytics();
InitQuality(); InitQuality();
InitExternalNotifications(); InitExternalNotifications();
@ -34,6 +37,7 @@ public CentralDispatch()
InitJobs(); InitJobs();
} }
private void InitDatabase() private void InitDatabase()
{ {
Logger.Info("Initializing Database..."); Logger.Info("Initializing Database...");
@ -51,6 +55,13 @@ private void InitDatabase()
LogConfiguration.Reload(); LogConfiguration.Reload();
} }
private void InitAnalytics()
{
var deskMetricsClient = new DeskMetricsClient(Kernel.Get<ConfigProvider>().UGuid, AnalyticsProvider.DESKMETRICS_ID, new EnviromentProvider().Version);
Kernel.Bind<IDeskMetricsClient>().ToConstant(deskMetricsClient);
Kernel.Get<AnalyticsProvider>().Checkpoint();
}
private void InitQuality() private void InitQuality()
{ {
Logger.Info("Initializing Quality..."); Logger.Info("Initializing Quality...");

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Data; using System.Data;
using Migrator.Framework; using Migrator.Framework;
using NzbDrone.Common;
namespace NzbDrone.Core.Datastore.Migrations namespace NzbDrone.Core.Datastore.Migrations
{ {
@ -10,6 +11,9 @@ public class Migration20110707 : NzbDroneMigration
{ {
protected override void MainDbUpgrade() protected override void MainDbUpgrade()
{ {
//This should not run unless for a clean install
EnviromentProvider.IsNewInstall = true;
Database.AddTable("Series", new[] Database.AddTable("Series", new[]
{ {
new Column("SeriesId", DbType.Int32, ColumnProperty.PrimaryKey), new Column("SeriesId", DbType.Int32, ColumnProperty.PrimaryKey),

View File

@ -121,6 +121,9 @@
<StartupObject /> <StartupObject />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="DeskMetrics">
<HintPath>..\Libraries\DeskMetrics\DeskMetrics.dll</HintPath>
</Reference>
<Reference Include="EntityFramework"> <Reference Include="EntityFramework">
<HintPath>..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll</HintPath> <HintPath>..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference> </Reference>
@ -153,8 +156,9 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MiniProfiler.1.9\lib\net40\MvcMiniProfiler.dll</HintPath> <HintPath>..\packages\MiniProfiler.1.9\lib\net40\MvcMiniProfiler.dll</HintPath>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json"> <Reference Include="Newtonsoft.Json, Version=4.0.7.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.4.0.4\lib\net40\Newtonsoft.Json.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.4.0.7\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL"> <Reference Include="Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll</HintPath> <HintPath>..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll</HintPath>
@ -222,6 +226,7 @@
<Compile Include="Helpers\EpisodeSortingHelper.cs" /> <Compile Include="Helpers\EpisodeSortingHelper.cs" />
<Compile Include="Helpers\FileSizeFormatHelpercs.cs" /> <Compile Include="Helpers\FileSizeFormatHelpercs.cs" />
<Compile Include="Helpers\SortHelper.cs" /> <Compile Include="Helpers\SortHelper.cs" />
<Compile Include="Providers\AnalyticsProvider.cs" />
<Compile Include="Instrumentation\LogDbContext.cs" /> <Compile Include="Instrumentation\LogDbContext.cs" />
<Compile Include="Instrumentation\LogProvider.cs" /> <Compile Include="Instrumentation\LogProvider.cs" />
<Compile Include="Instrumentation\DatabaseTarget.cs" /> <Compile Include="Instrumentation\DatabaseTarget.cs" />

View File

@ -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();
}
}
}

View File

@ -409,6 +409,11 @@ public virtual bool AutoIgnorePreviouslyDownloadedEpisodes
set { SetValue("AutoIgnorePreviouslyDownloadedEpisodes", value); } set { SetValue("AutoIgnorePreviouslyDownloadedEpisodes", value); }
} }
public string UGuid
{
get { return GetValue("UGuid", Guid.NewGuid().ToString(), persist: true); }
}
private string GetValue(string key) private string GetValue(string key)
{ {
return GetValue(key, String.Empty); return GetValue(key, String.Empty);
@ -424,7 +429,7 @@ private int GetValueInt(string key, int defaultValue = 0)
return Convert.ToInt16(GetValue(key, defaultValue)); 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<Config>("WHERE [Key] =@0", key); var dbValue = _database.SingleOrDefault<Config>("WHERE [Key] =@0", key);
@ -432,6 +437,10 @@ public virtual string GetValue(string key, object defaultValue)
return dbValue.Value; return dbValue.Value;
Logger.Trace("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue); Logger.Trace("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue);
if (persist)
SetValue(key, defaultValue.ToString());
return defaultValue.ToString(); return defaultValue.ToString();
} }

View File

@ -6,7 +6,7 @@
<package id="Growl" version="0.6" /> <package id="Growl" version="0.6" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<package id="MiniProfiler" version="1.9" /> <package id="MiniProfiler" version="1.9" />
<package id="Newtonsoft.Json" version="4.0.4" /> <package id="Newtonsoft.Json" version="4.0.7" />
<package id="Ninject" version="2.2.1.4" /> <package id="Ninject" version="2.2.1.4" />
<package id="NLog" version="2.0.0.2000" /> <package id="NLog" version="2.0.0.2000" />
<package id="SqlServerCompact" version="4.0.8482.1" /> <package id="SqlServerCompact" version="4.0.8482.1" />

View File

@ -41,9 +41,9 @@
<Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL"> <Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath> <HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
</Reference> </Reference>
<Reference Include="FluentAssertions, Version=1.6.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL"> <Reference Include="FluentAssertions, Version=1.7.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll</HintPath> <HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Moq"> <Reference Include="Moq">
<HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath> <HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="FluentAssertions" version="1.6.0" /> <package id="FluentAssertions" version="1.7.0" />
<package id="Moq" version="4.0.10827" /> <package id="Moq" version="4.0.10827" />
<package id="NBuilder" version="3.0.1.1" /> <package id="NBuilder" version="3.0.1.1" />
<package id="NUnit" version="2.5.10.11092" /> <package id="NUnit" version="2.5.10.11092" />

View File

@ -33,7 +33,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="FluentAssertions"> <Reference Include="FluentAssertions">
<HintPath>..\packages\FluentAssertions.1.6.0\Lib\net40\FluentAssertions.dll</HintPath> <HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Ionic.Zip"> <Reference Include="Ionic.Zip">
<HintPath>..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll</HintPath> <HintPath>..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll</HintPath>
@ -52,8 +52,9 @@
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="WebDriver"> <Reference Include="WebDriver, Version=2.17.0.0, Culture=neutral, PublicKeyToken=1c2bd1631853048f, processorArchitecture=MSIL">
<HintPath>..\packages\Selenium.WebDriver.2.15.0\lib\net40\WebDriver.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Selenium.WebDriver.2.17.0\lib\net40\WebDriver.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="DotNetZip" version="1.9.1.8" /> <package id="DotNetZip" version="1.9.1.8" />
<package id="FluentAssertions" version="1.7.0" />
<package id="Newtonsoft.Json" version="4.0.4" /> <package id="Newtonsoft.Json" version="4.0.4" />
<package id="Selenium.WebDriver" version="2.15.0" /> <package id="Selenium.WebDriver" version="2.17.0" />
</packages> </packages>

View File

@ -55,7 +55,7 @@
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -20,6 +20,24 @@
overloads. overloads.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.AssertionExtensions.Should(System.Xml.Linq.XDocument)">
<summary>
Returns an <see cref="T:FluentAssertions.Assertions.XDocumentAssertions"/> object that can be used to assert the
current <see cref="T:System.Xml.Linq.XElement"/>.
</summary>
</member>
<member name="M:FluentAssertions.AssertionExtensions.Should(System.Xml.Linq.XElement)">
<summary>
Returns an <see cref="T:FluentAssertions.Assertions.XElementAssertions"/> object that can be used to assert the
current <see cref="T:System.Xml.Linq.XElement"/>.
</summary>
</member>
<member name="M:FluentAssertions.AssertionExtensions.Should(System.Xml.Linq.XAttribute)">
<summary>
Returns an <see cref="T:FluentAssertions.Assertions.XAttributeAssertions"/> object that can be used to assert the
current <see cref="T:System.Xml.Linq.XAttribute"/>.
</summary>
</member>
<member name="M:FluentAssertions.AssertionExtensions.ShouldThrow``1(System.Action)"> <member name="M:FluentAssertions.AssertionExtensions.ShouldThrow``1(System.Action)">
<summary> <summary>
Asserts that the <paramref name="action"/> throws an exception. Asserts that the <paramref name="action"/> throws an exception.
@ -1114,6 +1132,16 @@
The message must match except for the casing of the characters. The message must match except for the casing of the characters.
</summary> </summary>
</member> </member>
<member name="F:FluentAssertions.Assertions.ComparisonMode.StartWith">
<summary>
The message must start with the exact text, including the casing of the characters..
</summary>
</member>
<member name="F:FluentAssertions.Assertions.ComparisonMode.StartWithEquivalent">
<summary>
The message must start with the text except for the casing of the characters.
</summary>
</member>
<member name="F:FluentAssertions.Assertions.ComparisonMode.Substring"> <member name="F:FluentAssertions.Assertions.ComparisonMode.Substring">
<summary> <summary>
The message must contain the exact text. The message must contain the exact text.
@ -2421,11 +2449,10 @@
Contains assertions for the <see cref="T:System.Reflection.MethodInfo"/> objects returned by the parent <see cref="T:FluentAssertions.Assertions.MethodInfoSelector"/>. Contains assertions for the <see cref="T:System.Reflection.MethodInfo"/> objects returned by the parent <see cref="T:FluentAssertions.Assertions.MethodInfoSelector"/>.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Assertions.MethodInfoAssertions.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Reflection.MethodInfo})"> <member name="M:FluentAssertions.Assertions.MethodInfoAssertions.#ctor(System.Collections.Generic.IEnumerable{System.Reflection.MethodInfo})">
<summary> <summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.MethodInfoAssertions"/> class. Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.MethodInfoAssertions"/> class.
</summary> </summary>
<param name="type">The <see cref="T:System.Type"/> that contains the specified methods</param>
<param name="methods">The methods.</param> <param name="methods">The methods.</param>
</member> </member>
<member name="M:FluentAssertions.Assertions.MethodInfoAssertions.BeVirtual"> <member name="M:FluentAssertions.Assertions.MethodInfoAssertions.BeVirtual">
@ -2462,11 +2489,6 @@
Zero or more objects to format using the placeholders in <see cref="!:reason"/>. Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param> </param>
</member> </member>
<member name="P:FluentAssertions.Assertions.MethodInfoAssertions.SubjectType">
<summary>
Gets the <see cref="T:System.Type"/> that contains the specified methods.
</summary>
</member>
<member name="P:FluentAssertions.Assertions.MethodInfoAssertions.SubjectMethods"> <member name="P:FluentAssertions.Assertions.MethodInfoAssertions.SubjectMethods">
<summary> <summary>
Gets the object which value is being asserted. Gets the object which value is being asserted.
@ -2483,6 +2505,12 @@
</summary> </summary>
<param name="type">The type from which to select methods.</param> <param name="type">The type from which to select methods.</param>
</member> </member>
<member name="M:FluentAssertions.Assertions.MethodInfoSelector.#ctor(System.Collections.Generic.IEnumerable{System.Type})">
<summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.MethodInfoSelector"/> class.
</summary>
<param name="types">The types from which to select methods.</param>
</member>
<member name="M:FluentAssertions.Assertions.MethodInfoSelector.ThatReturn``1"> <member name="M:FluentAssertions.Assertions.MethodInfoSelector.ThatReturn``1">
<summary> <summary>
Only select the methods that return the specified type Only select the methods that return the specified type
@ -2503,10 +2531,23 @@
Determines whether the specified method has a special name (like properties and events). Determines whether the specified method has a special name (like properties and events).
</summary> </summary>
</member> </member>
<member name="P:FluentAssertions.Assertions.MethodInfoSelector.Subject"> <member name="M:FluentAssertions.Assertions.MethodInfoSelector.GetEnumerator">
<summary> <summary>
Gets the <see cref="T:System.Type"/> from which to select methods. Returns an enumerator that iterates through the collection.
</summary> </summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:FluentAssertions.Assertions.MethodInfoSelector.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member> </member>
<member name="P:FluentAssertions.Assertions.MethodInfoSelector.ThatArePublicOrInternal"> <member name="P:FluentAssertions.Assertions.MethodInfoSelector.ThatArePublicOrInternal">
<summary> <summary>
@ -3195,16 +3236,32 @@
Is responsible for validating the equality of one or more properties of a subject with another object. Is responsible for validating the equality of one or more properties of a subject with another object.
</summary> </summary>
</member> </member>
<member name="P:FluentAssertions.Assertions.PropertyEqualityValidator.Properties">
<summary>
Contains the properties that should be included when comparing two objects.
</summary>
</member>
<member name="P:FluentAssertions.Assertions.PropertyEqualityValidator.OnlySharedProperties">
<summary>
Gets or sets a value indicating whether the validator will ignore properties from the <see cref="P:FluentAssertions.Assertions.PropertyEqualityValidator.Properties"/>
collection that the <see cref="!:Other"/> object doesn't have.
</summary>
</member>
<member name="P:FluentAssertions.Assertions.PropertyEqualityValidator.RecurseOnNestedObjects">
<summary>
Gets or sets a value indicating whether it should continue comparing (collections of objects) that
the <see cref="P:FluentAssertions.Assertions.PropertyEqualityValidator.OtherObject"/> refers to.
</summary>
</member>
<member name="T:FluentAssertions.Assertions.PropertyInfoAssertions"> <member name="T:FluentAssertions.Assertions.PropertyInfoAssertions">
<summary> <summary>
Contains assertions for the <see cref="T:System.Reflection.PropertyInfo"/> objects returned by the parent <see cref="T:FluentAssertions.Assertions.PropertyInfoSelector"/>. Contains assertions for the <see cref="T:System.Reflection.PropertyInfo"/> objects returned by the parent <see cref="T:FluentAssertions.Assertions.PropertyInfoSelector"/>.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Assertions.PropertyInfoAssertions.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Reflection.PropertyInfo})"> <member name="M:FluentAssertions.Assertions.PropertyInfoAssertions.#ctor(System.Collections.Generic.IEnumerable{System.Reflection.PropertyInfo})">
<summary> <summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.PropertyInfoAssertions"/> class. Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.PropertyInfoAssertions"/> class.
</summary> </summary>
<param name="type">The <see cref="T:System.Type"/> that contains the specified properties</param>
<param name="properties">The properties.</param> <param name="properties">The properties.</param>
</member> </member>
<member name="M:FluentAssertions.Assertions.PropertyInfoAssertions.BeVirtual"> <member name="M:FluentAssertions.Assertions.PropertyInfoAssertions.BeVirtual">
@ -3241,11 +3298,6 @@
Zero or more objects to format using the placeholders in <see cref="!:reason"/>. Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param> </param>
</member> </member>
<member name="P:FluentAssertions.Assertions.PropertyInfoAssertions.SubjectType">
<summary>
Gets the <see cref="T:System.Type"/> that contains the specified properties.
</summary>
</member>
<member name="P:FluentAssertions.Assertions.PropertyInfoAssertions.SubjectProperties"> <member name="P:FluentAssertions.Assertions.PropertyInfoAssertions.SubjectProperties">
<summary> <summary>
Gets the object which value is being asserted. Gets the object which value is being asserted.
@ -3260,7 +3312,13 @@
<summary> <summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.PropertyInfoSelector"/> class. Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.PropertyInfoSelector"/> class.
</summary> </summary>
<param name="type">The type from which to select methods.</param> <param name="type">The type from which to select properties.</param>
</member>
<member name="M:FluentAssertions.Assertions.PropertyInfoSelector.#ctor(System.Collections.Generic.IEnumerable{System.Type})">
<summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.PropertyInfoSelector"/> class.
</summary>
<param name="types">The types from which to select properties.</param>
</member> </member>
<member name="M:FluentAssertions.Assertions.PropertyInfoSelector.ThatAreDecoratedWith``1"> <member name="M:FluentAssertions.Assertions.PropertyInfoSelector.ThatAreDecoratedWith``1">
<summary> <summary>
@ -3277,10 +3335,23 @@
The resulting <see cref="T:System.Reflection.PropertyInfo"/> objects. The resulting <see cref="T:System.Reflection.PropertyInfo"/> objects.
</summary> </summary>
</member> </member>
<member name="P:FluentAssertions.Assertions.PropertyInfoSelector.Subject"> <member name="M:FluentAssertions.Assertions.PropertyInfoSelector.GetEnumerator">
<summary> <summary>
Gets the <see cref="T:System.Type"/> from which to select methods. Returns an enumerator that iterates through the collection.
</summary> </summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:FluentAssertions.Assertions.PropertyInfoSelector.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member> </member>
<member name="P:FluentAssertions.Assertions.PropertyInfoSelector.ThatArePublicOrInternal"> <member name="P:FluentAssertions.Assertions.PropertyInfoSelector.ThatArePublicOrInternal">
<summary> <summary>
@ -3907,6 +3978,16 @@
Zero or more objects to format using the placeholders in <see cref="!:reason"/>. Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param> </param>
</member> </member>
<member name="M:FluentAssertions.Assertions.TypeAssertions.GetFailureMessageIfTypesAreDifferent(System.Type,System.Type)">
<summary>
Creates an error message in case the specifed <paramref name="actual"/> type differs from the
<paramref name="expected"/> type.
</summary>
<returns>
An empty <see cref="T:System.String"/> if the two specified types are the same, or an error message that describes that
the two specified types are not the same.
</returns>
</member>
<member name="M:FluentAssertions.Assertions.TypeAssertions.NotBe``1"> <member name="M:FluentAssertions.Assertions.TypeAssertions.NotBe``1">
<summary> <summary>
Asserts that the current type is not equal to the specified <typeparamref name="TUnexpected"/> type. Asserts that the current type is not equal to the specified <typeparamref name="TUnexpected"/> type.
@ -3970,16 +4051,457 @@
Extension methods for getting method and property selectors for a type. Extension methods for getting method and property selectors for a type.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Assertions.TypeExtensions.Types(System.Reflection.Assembly)">
<summary>
Returns the types that are visible outside the specified <see cref="T:System.Reflection.Assembly"/>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeExtensions.Methods(System.Type)"> <member name="M:FluentAssertions.Assertions.TypeExtensions.Methods(System.Type)">
<summary> <summary>
Returns a method selector for the current <see cref="T:System.Type"/>. Returns a method selector for the current <see cref="T:System.Type"/>.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Assertions.TypeExtensions.Methods(FluentAssertions.Assertions.TypeSelector)">
<summary>
Returns a method selector for the current <see cref="T:System.Type"/>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeExtensions.Properties(System.Type)"> <member name="M:FluentAssertions.Assertions.TypeExtensions.Properties(System.Type)">
<summary> <summary>
Returns a property selector for the current <see cref="T:System.Type"/>. Returns a property selector for the current <see cref="T:System.Type"/>.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Assertions.TypeExtensions.Properties(FluentAssertions.Assertions.TypeSelector)">
<summary>
Returns a property selector for the current <see cref="T:System.Type"/>.
</summary>
</member>
<member name="T:FluentAssertions.Assertions.TypeSelector">
<summary>
Allows for fluent filtering a list of types.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.ThatDeriveFrom``1">
<summary>
Determines whether a type is a subclass of another type, but NOT the same type.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.ThatImplement``1">
<summary>
Determines whether a type implements an interface (but is not the interface itself).
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.ThatAreDecoratedWith``1">
<summary>
Determines whether a type is decorated with a particular attribute.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.ThatAreInNamespace(System.String)">
<summary>
Determines whether the namespace of type is exactly <paramref name="namespace"/>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.ThatAreUnderNamespace(System.String)">
<summary>
Determines whether the namespace of type is starts with <paramref name="namespace"/>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:FluentAssertions.Assertions.TypeSelector.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="T:FluentAssertions.Assertions.XAttributeAssertions">
<summary>
Contains a number of methods to assert that an <see cref="T:System.Xml.Linq.XAttribute"/> is in the expected state.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.#ctor(System.Xml.Linq.XAttribute)">
<summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.XAttributeAssertions"/> class.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.Be(System.Xml.Linq.XAttribute)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XAttribute"/> equals the <paramref name="expected"/> attribute.
</summary>
<param name="expected">The expected attribute</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.Be(System.Xml.Linq.XAttribute,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XAttribute"/> equals the <paramref name="expected"/> attribute.
</summary>
<param name="expected">The expected attribute</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.NotBe(System.Xml.Linq.XAttribute)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XAttribute"/> does not equal the <paramref name="unexpected"/> attribute,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="unexpected">The unexpected attribute</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.NotBe(System.Xml.Linq.XAttribute,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XAttribute"/> does not equal the <paramref name="unexpected"/> attribute,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="unexpected">The unexpected attribute</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.BeNull">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XAttribute"/> is <c>null</c>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.BeNull(System.String,System.Object[])">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XAttribute"/> is <c>null</c>.
</summary>
<param name="reason">
A formatted phrase explaining why the assertion should be satisfied. If the phrase does not
start with the word <i>because</i>, it is prepended to the message.
</param>
<param name="reasonArgs">
Zero or more values to use for filling in any <see cref="M:System.String.Format(System.String,System.Object[])"/> compatible placeholders.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.NotBeNull">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XAttribute"/> is not <c>null</c>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.NotBeNull(System.String,System.Object[])">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XAttribute"/> is not <c>null</c>.
</summary>
<param name="reason">
A formatted phrase explaining why the assertion should be satisfied. If the phrase does not
start with the word <i>because</i>, it is prepended to the message.
</param>
<param name="reasonArgs">
Zero or more values to use for filling in any <see cref="M:System.String.Format(System.String,System.Object[])"/> compatible placeholders.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.HaveValue(System.String)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XAttribute"/> has the specified <paramref name="expected"/> value.
</summary>
<param name="expected">The expected value</param>
</member>
<member name="M:FluentAssertions.Assertions.XAttributeAssertions.HaveValue(System.String,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XAttribute"/> has the specified <paramref name="expected"/> value.
</summary>
<param name="expected">The expected value</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="P:FluentAssertions.Assertions.XAttributeAssertions.Subject">
<summary>
Gets the object which value is being asserted.
</summary>
</member>
<member name="T:FluentAssertions.Assertions.XDocumentAssertions">
<summary>
Contains a number of methods to assert that an <see cref="T:System.Xml.Linq.XDocument"/> is in the expected state.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.#ctor(System.Xml.Linq.XDocument)">
<summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.XDocumentAssertions"/> class.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.Be(System.Xml.Linq.XDocument)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XDocument"/> equals the <paramref name="expected"/> document,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="expected">The expected document</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.Be(System.Xml.Linq.XDocument,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XDocument"/> equals the <paramref name="expected"/> document,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="expected">The expected document</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.NotBe(System.Xml.Linq.XDocument)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XDocument"/> does not equal the <paramref name="unexpected"/> document,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="unexpected">The unexpected document</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.NotBe(System.Xml.Linq.XDocument,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XDocument"/> does not equal the <paramref name="unexpected"/> document,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="unexpected">The unexpected document</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.BeNull">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XDocument"/> is <c>null</c>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.BeNull(System.String,System.Object[])">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XDocument"/> is <c>null</c>.
</summary>
<param name="reason">
A formatted phrase explaining why the assertion should be satisfied. If the phrase does not
start with the word <i>because</i>, it is prepended to the message.
</param>
<param name="reasonArgs">
Zero or more values to use for filling in any <see cref="M:System.String.Format(System.String,System.Object[])"/> compatible placeholders.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.NotBeNull">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XDocument"/> is not <c>null</c>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.NotBeNull(System.String,System.Object[])">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XDocument"/> is not <c>null</c>.
</summary>
<param name="reason">
A formatted phrase explaining why the assertion should be satisfied. If the phrase does not
start with the word <i>because</i>, it is prepended to the message.
</param>
<param name="reasonArgs">
Zero or more values to use for filling in any <see cref="M:System.String.Format(System.String,System.Object[])"/> compatible placeholders.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.HaveRoot(System.String)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XDocument"/> has a root element with the specified
<paramref name="expected"/> name.
</summary>
<param name="expected">The name of the expected root element of the current document.</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.HaveRoot(System.String,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XDocument"/> has a root element with the specified
<paramref name="expected"/> name.
</summary>
<param name="expected">The name of the expected root element of the current document.</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.HaveElement(System.String)">
<summary>
Asserts that the <see cref="P:System.Xml.Linq.XDocument.Root"/> element of the current <see cref="T:System.Xml.Linq.XDocument"/> has a direct
child element with the specified <paramref name="expected"/> name.
</summary>
<param name="expected">
The name of the expected child element of the current document's Root <see cref="P:System.Xml.Linq.XDocument.Root"/> element.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XDocumentAssertions.HaveElement(System.String,System.String,System.Object[])">
<summary>
Asserts that the <see cref="P:System.Xml.Linq.XDocument.Root"/> element of the current <see cref="T:System.Xml.Linq.XDocument"/> has a direct
child element with the specified <paramref name="expected"/> name.
</summary>
<param name="expected">
The name of the expected child element of the current document's Root <see cref="P:System.Xml.Linq.XDocument.Root"/> element.
</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="P:FluentAssertions.Assertions.XDocumentAssertions.Subject">
<summary>
Gets the object which value is being asserted.
</summary>
</member>
<member name="T:FluentAssertions.Assertions.XElementAssertions">
<summary>
Contains a number of methods to assert that an <see cref="T:System.Xml.Linq.XElement"/> is in the expected state.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.#ctor(System.Xml.Linq.XElement)">
<summary>
Initializes a new instance of the <see cref="T:FluentAssertions.Assertions.XElementAssertions"/> class.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.Be(System.Xml.Linq.XElement)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> equals the <paramref name="expected"/> element.
</summary>
<param name="expected">The expected element</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.Be(System.Xml.Linq.XElement,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> equals the <paramref name="expected"/> element.
</summary>
<param name="expected">The expected element</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.NotBe(System.Xml.Linq.XElement)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> does not equal the <paramref name="unexpected"/> element,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="unexpected">The unexpected element</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.NotBe(System.Xml.Linq.XElement,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> does not equal the <paramref name="unexpected"/> element,
using its <see cref="M:System.Object.Equals(System.Object)"/> implementation.
</summary>
<param name="unexpected">The unexpected element</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.BeNull">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XElement"/> is <c>null</c>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.BeNull(System.String,System.Object[])">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XElement"/> is <c>null</c>.
</summary>
<param name="reason">
A formatted phrase explaining why the assertion should be satisfied. If the phrase does not
start with the word <i>because</i>, it is prepended to the message.
</param>
<param name="reasonArgs">
Zero or more values to use for filling in any <see cref="M:System.String.Format(System.String,System.Object[])"/> compatible placeholders.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.NotBeNull">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XElement"/> is not <c>null</c>.
</summary>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.NotBeNull(System.String,System.Object[])">
<summary>
Asserts that the <see cref="T:System.Xml.Linq.XElement"/> is not <c>null</c>.
</summary>
<param name="reason">
A formatted phrase explaining why the assertion should be satisfied. If the phrase does not
start with the word <i>because</i>, it is prepended to the message.
</param>
<param name="reasonArgs">
Zero or more values to use for filling in any <see cref="M:System.String.Format(System.String,System.Object[])"/> compatible placeholders.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.HaveAttribute(System.String,System.String)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> has an attribute with the specified <paramref name="expectedName"/>
and <paramref name="expectedValue"/>.
</summary>
<param name="expectedName">The name of the expected attribute</param>
<param name="expectedValue">The value of the expected attribute</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.HaveAttribute(System.String,System.String,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> has an attribute with the specified <paramref name="expectedName"/>
and <paramref name="expectedValue"/>.
</summary>
<param name="expectedName">The name of the expected attribute</param>
<param name="expectedValue">The value of the expected attribute</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.HaveElement(System.String)">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> has a direct child element with the specified
<paramref name="expected"/> name.
</summary>
<param name="expected">The name of the expected child element</param>
</member>
<member name="M:FluentAssertions.Assertions.XElementAssertions.HaveElement(System.String,System.String,System.Object[])">
<summary>
Asserts that the current <see cref="T:System.Xml.Linq.XElement"/> has a direct child element with the specified
<paramref name="expected"/> name.
</summary>
<param name="expected">The name of the expected child element</param>
<param name="reason">
A formatted phrase as is supported by <see cref="M:System.String.Format(System.String,System.Object[])"/> explaining why the assertion
is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
</param>
<param name="reasonArgs">
Zero or more objects to format using the placeholders in <see cref="!:reason"/>.
</param>
</member>
<member name="P:FluentAssertions.Assertions.XElementAssertions.Subject">
<summary>
Gets the object which value is being asserted.
</summary>
</member>
<member name="M:FluentAssertions.Common.Extensions.IndexOfFirstMismatch(System.String,System.String)"> <member name="M:FluentAssertions.Common.Extensions.IndexOfFirstMismatch(System.String,System.String)">
<summary> <summary>
Finds the first index at which the <paramref name="value"/> does not match the <paramref name="expected"/> Finds the first index at which the <paramref name="value"/> does not match the <paramref name="expected"/>
@ -3997,6 +4519,11 @@
Gets the quoted three characters at the specified index of a string, including the index itself. Gets the quoted three characters at the specified index of a string, including the index itself.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Common.Extensions.FirstLine(System.String)">
<summary>
Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts.
</summary>
</member>
<member name="M:FluentAssertions.Common.Extensions.Escape(System.String)"> <member name="M:FluentAssertions.Common.Extensions.Escape(System.String)">
<summary> <summary>
Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts.
@ -4116,12 +4643,7 @@
</member> </member>
<member name="T:FluentAssertions.Common.ObjectAlreadyTrackedException"> <member name="T:FluentAssertions.Common.ObjectAlreadyTrackedException">
<summary> <summary>
Is thrown when the <see cref="T:FluentAssertions.Common.ObjectTracker"/> detects an object that was already processed. Is thrown when the <see cref="T:FluentAssertions.Common.UniqueObjectTracker"/> detects an object that was already processed.
</summary>
</member>
<member name="T:FluentAssertions.Common.ObjectTracker">
<summary>
Simple class for detecting an attempt to process an object that were already processed.
</summary> </summary>
</member> </member>
<member name="T:FluentAssertions.Common.TimeSpanConversionExtensions"> <member name="T:FluentAssertions.Common.TimeSpanConversionExtensions">
@ -4200,6 +4722,17 @@
23.Hours().And(59.Minutes()) 23.Hours().And(59.Minutes())
</example> </example>
</member> </member>
<member name="T:FluentAssertions.Common.UniqueObjectTracker">
<summary>
Simple class for detecting an attempt to process an object that were already processed.
</summary>
</member>
<member name="M:FluentAssertions.Common.UniqueObjectTracker.Track(System.Object)">
<summary>
Tracks the specified reference but throws an <see cref="T:FluentAssertions.Common.ObjectAlreadyTrackedException"/>
if that reference was already tracked.
</summary>
</member>
<member name="T:FluentAssertions.EventMonitoring.EventMonitoringExtensions"> <member name="T:FluentAssertions.EventMonitoring.EventMonitoringExtensions">
<summary> <summary>
Provides extension methods for monitoring and querying events. Provides extension methods for monitoring and querying events.
@ -4443,14 +4976,33 @@
<c>true</c> if the current <see cref="T:FluentAssertions.Formatting.IValueFormatter"/> can handle the specified value; otherwise, <c>false</c>. <c>true</c> if the current <see cref="T:FluentAssertions.Formatting.IValueFormatter"/> can handle the specified value; otherwise, <c>false</c>.
</returns> </returns>
</member> </member>
<member name="M:FluentAssertions.Formatting.IValueFormatter.ToString(System.Object,System.Int32)"> <member name="M:FluentAssertions.Formatting.IValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary> <summary>
Returns a <see cref="T:System.String"/> that represents this instance. Returns a <see cref="T:System.String"/> that represents this instance.
</summary> </summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param> <param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel"> <param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override. no <see cref="M:System.Object.ToString"/> override.
</param>
<returns>
A <see cref="T:System.String"/> that represents this instance.
</returns>
</member>
<member name="M:FluentAssertions.Formatting.DateTimeValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary>
Returns a <see cref="T:System.String"/> that represents this instance.
</summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override.
</param> </param>
<returns> <returns>
A <see cref="T:System.String"/> that represents this instance. A <see cref="T:System.String"/> that represents this instance.
@ -4465,14 +5017,33 @@
<c>true</c> if this instance can handle the specified value; otherwise, <c>false</c>. <c>true</c> if this instance can handle the specified value; otherwise, <c>false</c>.
</returns> </returns>
</member> </member>
<member name="M:FluentAssertions.Formatting.DefaultValueFormatter.ToString(System.Object,System.Int32)"> <member name="M:FluentAssertions.Formatting.DefaultValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary> <summary>
Returns a <see cref="T:System.String"/> that represents this instance. Returns a <see cref="T:System.String"/> that represents this instance.
</summary> </summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param> <param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel"> <param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override. no <see cref="M:System.Object.ToString"/> override.
</param>
<returns>
A <see cref="T:System.String"/> that represents this instance.
</returns>
</member>
<member name="M:FluentAssertions.Formatting.EnumerableValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary>
Returns a <see cref="T:System.String"/> that represents this instance.
</summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override.
</param> </param>
<returns> <returns>
A <see cref="T:System.String"/> that represents this instance. A <see cref="T:System.String"/> that represents this instance.
@ -4488,11 +5059,25 @@
A list of objects responsible for formatting the objects represented by placeholders. A list of objects responsible for formatting the objects represented by placeholders.
</summary> </summary>
</member> </member>
<member name="M:FluentAssertions.Formatting.Formatter.ToString(System.Object,System.Int32)"> <member name="M:FluentAssertions.Formatting.Formatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary> <summary>
Returns a human-readable representation of a particular object. Returns a human-readable representation of a particular object.
</summary> </summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param> <param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker"></param>
<param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override.
</param>
<returns>
A <see cref="T:System.String"/> that represents this instance.
</returns>
</member>
<member name="M:FluentAssertions.Formatting.Formatter.ToStringLine(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary>
Returns a human-readable representation of a particular object that starts on a new line.
</summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="nestedPropertyLevel"> <param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override. no <see cref="M:System.Object.ToString"/> override.
@ -4501,14 +5086,65 @@
A <see cref="T:System.String"/> that represents this instance. A <see cref="T:System.String"/> that represents this instance.
</returns> </returns>
</member> </member>
<member name="M:FluentAssertions.Formatting.Formatter.ToStringLine(System.Object,System.Int32)"> <member name="M:FluentAssertions.Formatting.TimeSpanValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary> <summary>
Returns a human-readable representation of a particular object that starts on a new line. Returns a <see cref="T:System.String"/> that represents this instance.
</summary> </summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param> <param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel"> <param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override. no <see cref="M:System.Object.ToString"/> override.
</param>
<returns>
A <see cref="T:System.String"/> that represents this instance.
</returns>
</member>
<member name="M:FluentAssertions.Formatting.XAttributeValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary>
Returns a <see cref="T:System.String"/> that represents this instance.
</summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override.
</param>
<returns>
A <see cref="T:System.String"/> that represents this instance.
</returns>
</member>
<member name="M:FluentAssertions.Formatting.XDocumentValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary>
Returns a <see cref="T:System.String"/> that represents this instance.
</summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override.
</param>
<returns>
A <see cref="T:System.String"/> that represents this instance.
</returns>
</member>
<member name="M:FluentAssertions.Formatting.XElementValueFormatter.ToString(System.Object,FluentAssertions.Common.UniqueObjectTracker,System.Int32)">
<summary>
Returns a <see cref="T:System.String"/> that represents this instance.
</summary>
<param name="value">The value for which to create a <see cref="T:System.String"/>.</param>
<param name="uniqueObjectTracker">
An object that is passed through recursive calls and which should be used to detect circular references
in the object graph that is being converted to a string representation.</param>
<param name="nestedPropertyLevel">
The level of nesting for the supplied value. This is used for indenting the format string for objects that have
no <see cref="M:System.Object.ToString"/> override.
</param> </param>
<returns> <returns>
A <see cref="T:System.String"/> that represents this instance. A <see cref="T:System.String"/> that represents this instance.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -3029,6 +3029,13 @@
Stops the <see cref="T:OpenQA.Selenium.Chrome.ChromeCommandExecutor"/>. Stops the <see cref="T:OpenQA.Selenium.Chrome.ChromeCommandExecutor"/>.
</summary> </summary>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeCommandExecutor.Execute(OpenQA.Selenium.Remote.Command)">
<summary>
Executes a command with the ChromeDriver.
</summary>
<param name="commandToExecute">The command you wish to execute</param>
<returns>A response from the browser</returns>
</member>
<member name="T:OpenQA.Selenium.Chrome.ChromeDriver"> <member name="T:OpenQA.Selenium.Chrome.ChromeDriver">
<summary> <summary>
Provides a mechanism to write tests against Chrome Provides a mechanism to write tests against Chrome
@ -3080,6 +3087,27 @@
</summary> </summary>
<param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param> <param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeOptions)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified options.
</summary>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(System.String,OpenQA.Selenium.Chrome.ChromeOptions)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified path to the directory containing ChromeDriver.exe and options.
</summary>
<param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(System.String,OpenQA.Selenium.Chrome.ChromeOptions,System.TimeSpan)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified path to the directory containing ChromeDriver.exe, command timeout, and options.
</summary>
<param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
<param name="commandTimeout">The maximum amount of time to wait for each command.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.ICapabilities)"> <member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.ICapabilities)">
<summary> <summary>
Initializes a new instance of the ChromeDriver class using the capabilities. Initializes a new instance of the ChromeDriver class using the capabilities.
@ -3101,6 +3129,14 @@
<param name="capabilities">The desired capabilities of the Chrome driver.</param> <param name="capabilities">The desired capabilities of the Chrome driver.</param>
<param name="commandTimeout">The maximum amount of time to wait for each command.</param> <param name="commandTimeout">The maximum amount of time to wait for each command.</param>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeDriverService,OpenQA.Selenium.Chrome.ChromeOptions,System.TimeSpan)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/>.
</summary>
<param name="service">The <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/> to use.</param>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
<param name="commandTimeout">The maximum amount of time to wait for each command.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeDriverService,OpenQA.Selenium.ICapabilities,System.TimeSpan)"> <member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeDriverService,OpenQA.Selenium.ICapabilities,System.TimeSpan)">
<summary> <summary>
Initializes a new instance of the ChromeDriver class using the specified <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/>. Initializes a new instance of the ChromeDriver class using the specified <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/>.
@ -3115,20 +3151,6 @@
</summary> </summary>
<returns>A <see cref="T:OpenQA.Selenium.Screenshot"/> object containing the image.</returns> <returns>A <see cref="T:OpenQA.Selenium.Screenshot"/> object containing the image.</returns>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.StartClient">
<summary>
By default will try to load Chrome from system property
webdriver.chrome.bin and the extension from
webdriver.chrome.extensiondir. If the former fails, will try to guess the
path to Chrome. If the latter fails, will try to unzip from the JAR we
hope we're in. If these fail, throws exceptions.
</summary>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.StopClient">
<summary>
Kills the started Chrome process and ChromeCommandExecutor if they exist
</summary>
</member>
<member name="T:OpenQA.Selenium.Chrome.ChromeDriverService"> <member name="T:OpenQA.Selenium.Chrome.ChromeDriverService">
<summary> <summary>
Exposes the service provided by the native ChromeDriver executable. Exposes the service provided by the native ChromeDriver executable.
@ -3179,6 +3201,103 @@
Gets a value indicating whether the service is running. Gets a value indicating whether the service is running.
</summary> </summary>
</member> </member>
<member name="T:OpenQA.Selenium.Chrome.ChromeOptions">
<summary>
Class to manage options specific to <see cref="T:OpenQA.Selenium.Chrome.ChromeDriver"/>
</summary>
<remarks>
Used with ChromeDriver.exe v17.0.963.0 and higher.
</remarks>
<example>
<code>
ChromeOptions options = new ChromeOptions();
options.AddExtensions("\path\to\extension.crx");
options.BinaryLocation = "\path\to\chrome";
</code>
<para></para>
<para>For use with ChromeDriver:</para>
<para></para>
<code>
ChromeDriver driver = new ChromeDriver(options);
</code>
<para></para>
<para>For use with RemoteWebDriver:</para>
<para></para>
<code>
DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(ChromeOptions.Capability, options);
RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capabilities);
</code>
</example>
</member>
<member name="F:OpenQA.Selenium.Chrome.ChromeOptions.Capability">
<summary>
Gets the name of the capability used to store Chrome options in
a <see cref="T:OpenQA.Selenium.Remote.DesiredCapabilities"/> object.
</summary>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddArgument(System.String)">
<summary>
Adds a single argument to the list of arguments to be appended to the Chrome.exe command line.
</summary>
<param name="argument">The argument to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddArguments(System.String[])">
<summary>
Adds arguments to be appended to the Chrome.exe command line.
</summary>
<param name="arguments">An array of arguments to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddArguments(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Adds arguments to be appended to the Chrome.exe command line.
</summary>
<param name="arguments">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> object of arguments to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddExtension(System.String)">
<summary>
Adds a path to a packed Chrome extension (.crx file) to the list of extensions
to be installed in the instance of Chrome.
</summary>
<param name="pathToExtension">The full path to the extension to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddExtensions(System.String[])">
<summary>
Adds a list of paths to packed Chrome extensions (.crx files) to be installed
in the instance of Chrome.
</summary>
<param name="extensions">An array of full paths to the extensions to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddExtensions(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Adds a list of paths to packed Chrome extensions (.crx files) to be installed
in the instance of Chrome.
</summary>
<param name="extensions">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of full paths to the extensions to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.ToCapabilities">
<summary>
Returns DesiredCapabiliites for Chrome with these options included as
capabilities. This does not copy the options. Further changes will be
reflected in the returned capabilities.
</summary>
<returns>The DesiredCapabilities for Chrome with these options.</returns>
</member>
<member name="P:OpenQA.Selenium.Chrome.ChromeOptions.BinaryLocation">
<summary>
Gets or sets the location of the Chrome browser's binary executable file.
</summary>
</member>
<member name="P:OpenQA.Selenium.Chrome.ChromeOptions.Arguments">
<summary>
Gets the list of arguments appended to the Chrome command line as a string array.
</summary>
</member>
<member name="P:OpenQA.Selenium.Chrome.ChromeOptions.Extensions">
<summary>
Gets the list of extensions to be installed as an array of base64-encoded strings.
</summary>
</member>
<member name="T:OpenQA.Selenium.Chrome.ChromeWebElement"> <member name="T:OpenQA.Selenium.Chrome.ChromeWebElement">
<summary> <summary>
Provides a mechanism to get elements off the page for test Provides a mechanism to get elements off the page for test
@ -5618,11 +5737,21 @@
Represents the Define Driver Mapping command Represents the Define Driver Mapping command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.Status">
<summary>
Represents the Status command.
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.NewSession"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.NewSession">
<summary> <summary>
Represents a New Session command Represents a New Session command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSessionList">
<summary>
Represents the Get Session List command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSessionCapabilities"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSessionCapabilities">
<summary> <summary>
Represents the Get Session Capabilities command Represents the Get Session Capabilities command
@ -5713,11 +5842,6 @@
Represents clickelements command Represents clickelements command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.HoverOverElement">
<summary>
Represents hoverelements command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SendKeysToElement"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.SendKeysToElement">
<summary> <summary>
Represents SendKeysToElements command Represents SendKeysToElements command
@ -5728,11 +5852,6 @@
Represents SubmitElement command Represents SubmitElement command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.ToggleElement">
<summary>
Represents TogleElements command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetCurrentWindowHandle"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetCurrentWindowHandle">
<summary> <summary>
Represents findchildelements command Represents findchildelements command
@ -5783,51 +5902,16 @@
Represents ExecuteAsyncScript command Represents ExecuteAsyncScript command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSpeed">
<summary>
Represents GetSpeed command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SetSpeed">
<summary>
Represents SetSpeed command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SetBrowserVisible">
<summary>
Represents SetBrowserVisible command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.IsBrowserVisible">
<summary>
Represents IsBrowserVisible command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementText"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementText">
<summary> <summary>
Represents GetElementText command Represents GetElementText command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementValue">
<summary>
Represents GetElementValue command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementTagName"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementTagName">
<summary> <summary>
Represents GetElementTagName command Represents GetElementTagName command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SetElementSelected">
<summary>
Represents SetElementSelected command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.DragElement">
<summary>
Represents DragElement command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.IsElementSelected"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.IsElementSelected">
<summary> <summary>
Represents IsElementSelected command Represents IsElementSelected command

View File

@ -3029,6 +3029,13 @@
Stops the <see cref="T:OpenQA.Selenium.Chrome.ChromeCommandExecutor"/>. Stops the <see cref="T:OpenQA.Selenium.Chrome.ChromeCommandExecutor"/>.
</summary> </summary>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeCommandExecutor.Execute(OpenQA.Selenium.Remote.Command)">
<summary>
Executes a command with the ChromeDriver.
</summary>
<param name="commandToExecute">The command you wish to execute</param>
<returns>A response from the browser</returns>
</member>
<member name="T:OpenQA.Selenium.Chrome.ChromeDriver"> <member name="T:OpenQA.Selenium.Chrome.ChromeDriver">
<summary> <summary>
Provides a mechanism to write tests against Chrome Provides a mechanism to write tests against Chrome
@ -3080,6 +3087,27 @@
</summary> </summary>
<param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param> <param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeOptions)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified options.
</summary>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(System.String,OpenQA.Selenium.Chrome.ChromeOptions)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified path to the directory containing ChromeDriver.exe and options.
</summary>
<param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(System.String,OpenQA.Selenium.Chrome.ChromeOptions,System.TimeSpan)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified path to the directory containing ChromeDriver.exe, command timeout, and options.
</summary>
<param name="chromeDriverDirectory">The full path to the directory containing ChromeDriver.exe.</param>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
<param name="commandTimeout">The maximum amount of time to wait for each command.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.ICapabilities)"> <member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.ICapabilities)">
<summary> <summary>
Initializes a new instance of the ChromeDriver class using the capabilities. Initializes a new instance of the ChromeDriver class using the capabilities.
@ -3101,6 +3129,14 @@
<param name="capabilities">The desired capabilities of the Chrome driver.</param> <param name="capabilities">The desired capabilities of the Chrome driver.</param>
<param name="commandTimeout">The maximum amount of time to wait for each command.</param> <param name="commandTimeout">The maximum amount of time to wait for each command.</param>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeDriverService,OpenQA.Selenium.Chrome.ChromeOptions,System.TimeSpan)">
<summary>
Initializes a new instance of the ChromeDriver class using the specified <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/>.
</summary>
<param name="service">The <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/> to use.</param>
<param name="options">The <see cref="T:OpenQA.Selenium.Chrome.ChromeOptions"/> to be used with the Chrome driver.</param>
<param name="commandTimeout">The maximum amount of time to wait for each command.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeDriverService,OpenQA.Selenium.ICapabilities,System.TimeSpan)"> <member name="M:OpenQA.Selenium.Chrome.ChromeDriver.#ctor(OpenQA.Selenium.Chrome.ChromeDriverService,OpenQA.Selenium.ICapabilities,System.TimeSpan)">
<summary> <summary>
Initializes a new instance of the ChromeDriver class using the specified <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/>. Initializes a new instance of the ChromeDriver class using the specified <see cref="T:OpenQA.Selenium.Chrome.ChromeDriverService"/>.
@ -3115,20 +3151,6 @@
</summary> </summary>
<returns>A <see cref="T:OpenQA.Selenium.Screenshot"/> object containing the image.</returns> <returns>A <see cref="T:OpenQA.Selenium.Screenshot"/> object containing the image.</returns>
</member> </member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.StartClient">
<summary>
By default will try to load Chrome from system property
webdriver.chrome.bin and the extension from
webdriver.chrome.extensiondir. If the former fails, will try to guess the
path to Chrome. If the latter fails, will try to unzip from the JAR we
hope we're in. If these fail, throws exceptions.
</summary>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeDriver.StopClient">
<summary>
Kills the started Chrome process and ChromeCommandExecutor if they exist
</summary>
</member>
<member name="T:OpenQA.Selenium.Chrome.ChromeDriverService"> <member name="T:OpenQA.Selenium.Chrome.ChromeDriverService">
<summary> <summary>
Exposes the service provided by the native ChromeDriver executable. Exposes the service provided by the native ChromeDriver executable.
@ -3179,6 +3201,103 @@
Gets a value indicating whether the service is running. Gets a value indicating whether the service is running.
</summary> </summary>
</member> </member>
<member name="T:OpenQA.Selenium.Chrome.ChromeOptions">
<summary>
Class to manage options specific to <see cref="T:OpenQA.Selenium.Chrome.ChromeDriver"/>
</summary>
<remarks>
Used with ChromeDriver.exe v17.0.963.0 and higher.
</remarks>
<example>
<code>
ChromeOptions options = new ChromeOptions();
options.AddExtensions("\path\to\extension.crx");
options.BinaryLocation = "\path\to\chrome";
</code>
<para></para>
<para>For use with ChromeDriver:</para>
<para></para>
<code>
ChromeDriver driver = new ChromeDriver(options);
</code>
<para></para>
<para>For use with RemoteWebDriver:</para>
<para></para>
<code>
DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(ChromeOptions.Capability, options);
RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capabilities);
</code>
</example>
</member>
<member name="F:OpenQA.Selenium.Chrome.ChromeOptions.Capability">
<summary>
Gets the name of the capability used to store Chrome options in
a <see cref="T:OpenQA.Selenium.Remote.DesiredCapabilities"/> object.
</summary>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddArgument(System.String)">
<summary>
Adds a single argument to the list of arguments to be appended to the Chrome.exe command line.
</summary>
<param name="argument">The argument to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddArguments(System.String[])">
<summary>
Adds arguments to be appended to the Chrome.exe command line.
</summary>
<param name="arguments">An array of arguments to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddArguments(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Adds arguments to be appended to the Chrome.exe command line.
</summary>
<param name="arguments">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> object of arguments to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddExtension(System.String)">
<summary>
Adds a path to a packed Chrome extension (.crx file) to the list of extensions
to be installed in the instance of Chrome.
</summary>
<param name="pathToExtension">The full path to the extension to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddExtensions(System.String[])">
<summary>
Adds a list of paths to packed Chrome extensions (.crx files) to be installed
in the instance of Chrome.
</summary>
<param name="extensions">An array of full paths to the extensions to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.AddExtensions(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Adds a list of paths to packed Chrome extensions (.crx files) to be installed
in the instance of Chrome.
</summary>
<param name="extensions">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of full paths to the extensions to add.</param>
</member>
<member name="M:OpenQA.Selenium.Chrome.ChromeOptions.ToCapabilities">
<summary>
Returns DesiredCapabiliites for Chrome with these options included as
capabilities. This does not copy the options. Further changes will be
reflected in the returned capabilities.
</summary>
<returns>The DesiredCapabilities for Chrome with these options.</returns>
</member>
<member name="P:OpenQA.Selenium.Chrome.ChromeOptions.BinaryLocation">
<summary>
Gets or sets the location of the Chrome browser's binary executable file.
</summary>
</member>
<member name="P:OpenQA.Selenium.Chrome.ChromeOptions.Arguments">
<summary>
Gets the list of arguments appended to the Chrome command line as a string array.
</summary>
</member>
<member name="P:OpenQA.Selenium.Chrome.ChromeOptions.Extensions">
<summary>
Gets the list of extensions to be installed as an array of base64-encoded strings.
</summary>
</member>
<member name="T:OpenQA.Selenium.Chrome.ChromeWebElement"> <member name="T:OpenQA.Selenium.Chrome.ChromeWebElement">
<summary> <summary>
Provides a mechanism to get elements off the page for test Provides a mechanism to get elements off the page for test
@ -5618,11 +5737,21 @@
Represents the Define Driver Mapping command Represents the Define Driver Mapping command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.Status">
<summary>
Represents the Status command.
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.NewSession"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.NewSession">
<summary> <summary>
Represents a New Session command Represents a New Session command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSessionList">
<summary>
Represents the Get Session List command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSessionCapabilities"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSessionCapabilities">
<summary> <summary>
Represents the Get Session Capabilities command Represents the Get Session Capabilities command
@ -5713,11 +5842,6 @@
Represents clickelements command Represents clickelements command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.HoverOverElement">
<summary>
Represents hoverelements command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SendKeysToElement"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.SendKeysToElement">
<summary> <summary>
Represents SendKeysToElements command Represents SendKeysToElements command
@ -5728,11 +5852,6 @@
Represents SubmitElement command Represents SubmitElement command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.ToggleElement">
<summary>
Represents TogleElements command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetCurrentWindowHandle"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetCurrentWindowHandle">
<summary> <summary>
Represents findchildelements command Represents findchildelements command
@ -5783,51 +5902,16 @@
Represents ExecuteAsyncScript command Represents ExecuteAsyncScript command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetSpeed">
<summary>
Represents GetSpeed command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SetSpeed">
<summary>
Represents SetSpeed command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SetBrowserVisible">
<summary>
Represents SetBrowserVisible command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.IsBrowserVisible">
<summary>
Represents IsBrowserVisible command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementText"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementText">
<summary> <summary>
Represents GetElementText command Represents GetElementText command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementValue">
<summary>
Represents GetElementValue command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementTagName"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.GetElementTagName">
<summary> <summary>
Represents GetElementTagName command Represents GetElementTagName command
</summary> </summary>
</member> </member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.SetElementSelected">
<summary>
Represents SetElementSelected command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.DragElement">
<summary>
Represents DragElement command
</summary>
</member>
<member name="F:OpenQA.Selenium.Remote.DriverCommand.IsElementSelected"> <member name="F:OpenQA.Selenium.Remote.DriverCommand.IsElementSelected">
<summary> <summary>
Represents IsElementSelected command Represents IsElementSelected command