Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

85 lines
3.2 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using SampleEntityFrameworkProvider;
using Xunit;
namespace ProviderTests
{
public class ProviderModelTests : TestBase
{
[Fact]
public void Verify_provider_can_be_created_with_factory()
{
Assert.NotNull(DbProviderFactories.GetFactory(SampleProviderName));
}
[Fact]
public void Verify_factory_created_by_provider_factories_and_connection_are_same()
{
var providerFactory = DbProviderFactories.GetFactory(SampleProviderName);
Assert.NotNull(providerFactory);
Assert.Same(typeof(SampleFactory), providerFactory.GetType());
var providerFactoryFromConnection = ((SampleConnection)providerFactory.CreateConnection()).ProviderFactory;
Assert.Same(providerFactory.GetType(), providerFactoryFromConnection.GetType());
}
[Fact]
public void Verify_SampleCommand_implements_ICloneable()
{
var providerFactory = DbProviderFactories.GetFactory(SampleProviderName);
Assert.NotNull(providerFactory);
var command = providerFactory.CreateCommand();
var cloneable = command as ICloneable;
Assert.NotNull(cloneable);
var clonedCommand = cloneable.Clone();
Assert.NotNull(cloneable);
}
[Fact]
public void Verify_provider_supports_DbProviderServices()
{
var providerFactory = DbProviderFactories.GetFactory(SampleProviderName);
Assert.NotNull(providerFactory);
var serviceprovider = providerFactory as IServiceProvider;
Assert.NotNull(serviceprovider);
Assert.NotNull(serviceprovider.GetService(typeof(DbProviderServices)));
}
[Fact]
public void Verify_provider_services_returns_provider_manifest()
{
var factory = DbProviderFactories.GetFactory(SampleProviderName);
var providerServices = (DbProviderServices)((IServiceProvider)factory).GetService(typeof(DbProviderServices));
var providerManifest = providerServices.GetProviderManifest("2005");
Assert.NotNull(providerManifest);
}
[Fact]
public void Verify_provider_manifest_token_returned_by_provider_services_is_correct()
{
var factory = DbProviderFactories.GetFactory(SampleProviderName);
using (var connection = factory.CreateConnection())
{
connection.ConnectionString = NorthwindDirectConnectionString;
var providerServices = (DbProviderServices)((IServiceProvider)factory).GetService(typeof(DbProviderServices));
var providerManifestToken = providerServices.GetProviderManifestToken(connection);
Assert.True(providerManifestToken == "2005" || providerManifestToken == "2008");
}
}
}
}