Imported Upstream version 3.6.0

Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
This commit is contained in:
Jo Shields
2014-08-13 10:39:27 +01:00
commit a575963da9
50588 changed files with 8155799 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Extensions
{
using Xunit;
using System.CodeDom.Compiler;
using System.Linq;
public class CompilerErrorCollectionExtensionsTests
{
[Fact]
public void HandleErrors_is_noop_when_no_errors()
{
var errors = new CompilerErrorCollection
{
new CompilerError { IsWarning = true }
};
errors.HandleErrors("Not used");
}
[Fact]
public void HandleErrors_throws_when_errors()
{
var error = new CompilerError { IsWarning = false };
var errors = new CompilerErrorCollection { error };
var message = "Some message";
var ex = Assert.Throws<CompilerErrorException>(
() => errors.HandleErrors(message));
Assert.Equal(message, ex.Message);
Assert.NotNull(ex.Errors);
Assert.Equal(1, ex.Errors.Count());
Assert.Same(error, ex.Errors.Single());
}
}
}

View File

@@ -0,0 +1,55 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Extensions
{
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using Xunit;
public class CompilerErrorExceptionTests
{
[Fact]
public void Ctor_validates_preconditions()
{
IEnumerable<CompilerError> errors = null;
var ex = Assert.Throws<ArgumentNullException>(
() => new CompilerErrorException("Not used", errors));
Assert.Equal("errors", ex.ParamName);
}
[Fact]
public void Ctor_sets_properties()
{
var message = "Some message";
var errors = new CompilerError[0];
var ex = new CompilerErrorException(message, errors);
Assert.Equal(message, ex.Message);
Assert.Same(errors, ex.Errors);
}
[Fact]
public void Is_serializable()
{
var message = "Some message";
var errors = new CompilerError[0];
var formatter = new BinaryFormatter();
CompilerErrorException ex;
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, new CompilerErrorException(message, errors));
stream.Position = 0;
ex = (CompilerErrorException)formatter.Deserialize(stream);
}
Assert.Equal(message, ex.Message);
Assert.Equal(errors, ex.Errors);
}
}
}

View File

@@ -0,0 +1,55 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Extensions
{
using System;
using System.Collections.Generic;
using System.Data.Metadata.Edm;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using Xunit;
public class EdmSchemaErrorExceptionTests
{
[Fact]
public void Ctor_validates_preconditions()
{
IEnumerable<EdmSchemaError> errors = null;
var ex = Assert.Throws<ArgumentNullException>(
() => new EdmSchemaErrorException("Not used", errors));
Assert.Equal("errors", ex.ParamName);
}
[Fact]
public void Ctor_sets_properties()
{
var message = "Some message";
var errors = new EdmSchemaError[0];
var ex = new EdmSchemaErrorException(message, errors);
Assert.Equal(message, ex.Message);
Assert.Same(errors, ex.Errors);
}
[Fact]
public void Is_serializable()
{
var message = "Some message";
var errors = new EdmSchemaError[0];
var formatter = new BinaryFormatter();
EdmSchemaErrorException ex;
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, new EdmSchemaErrorException(message, errors));
stream.Position = 0;
ex = (EdmSchemaErrorException)formatter.Deserialize(stream);
}
Assert.Equal(message, ex.Message);
Assert.Equal(errors, ex.Errors);
}
}
}

View File

@@ -0,0 +1,21 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Extensions
{
using Microsoft.VisualStudio.ComponentModelHost;
using Moq;
using Xunit;
public class IComponentModelExtensionsTests
{
[Fact]
public void GetService_calls_generic_version()
{
var componentModelMock = new Mock<IComponentModel>();
var componentModel = componentModelMock.Object;
componentModel.GetService(typeof(string));
componentModelMock.Verify(cm => cm.GetService<string>(), Times.Once());
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Extensions
{
using Xunit;
public class StringExtensionsTests
{
[Fact]
public void EqualsIgnoreCase_tests_equality()
{
Assert.True(StringExtensions.EqualsIgnoreCase(null, null));
Assert.True("one".EqualsIgnoreCase("one"));
Assert.True("two".EqualsIgnoreCase("TWO"));
Assert.False("three".EqualsIgnoreCase("four"));
Assert.False("five".EqualsIgnoreCase(null));
}
}
}

View File

@@ -0,0 +1,47 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Extensions
{
using System.Xml.Linq;
using Xunit;
public class XContainerExtensionsTests
{
private const string _elementName = "Element";
private readonly XNamespace _ns1 = "http://tempuri.org/1";
private readonly XNamespace _ns2 = "http://tempuri.org/2";
private readonly XElement _element1;
private readonly XContainer _container;
public XContainerExtensionsTests()
{
_element1 = new XElement(_ns1 + _elementName);
_container = new XElement(
"Container",
new XElement(_elementName),
_element1,
new XElement(_ns2 + _elementName));
}
[Fact]
public void Element_returns_first_match()
{
var element = _container.Element(
new[] { _ns1, _ns2 },
_elementName);
Assert.Same(_element1, element);
}
[Fact]
public void Element_returns_null_when_no_match()
{
XNamespace ns3 = "http://tempuri.org/3";
var element = _container.Element(
new[] { ns3 },
_elementName);
Assert.Null(element);
}
}
}

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{ADCD3A3D-2564-48F3-81A9-B0B532675808}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Microsoft.DbContextPackage</RootNamespace>
<AssemblyName>EFPowerTools.Test</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.Entity" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualStudio.ComponentModelHost, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Moq">
<HintPath>..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>
</Reference>
<Reference Include="xunit">
<HintPath>..\..\packages\xunit.1.9.1\lib\net20\xunit.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\PowerTools\PowerTools.csproj">
<Project>{16CAD3A8-FCE0-4BC1-901A-16957CF24BD6}</Project>
<Name>PowerTools</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Include="Extensions\CompilerErrorCollectionExtensionsTests.cs" />
<Compile Include="Extensions\CompilerErrorExceptionTests.cs" />
<Compile Include="Extensions\EdmSchemaErrorExceptionTests.cs" />
<Compile Include="Extensions\IComponentModelExtensionsTests.cs" />
<Compile Include="Extensions\StringExtensionsTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Extensions\XContainerExtensionsTests.cs" />
<Compile Include="Utilities\EdmxUtilityTests.cs" />
<Compile Include="Utilities\EfTextTemplateHostTests.cs" />
<Compile Include="Utilities\TemplatesTests.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,37 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("PowerTools.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("PowerTools.Test")]
[assembly: AssemblyCopyright("Copyright © 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7d655301-2f25-4ca7-a8a8-82e3d02921e2")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,211 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Utilities
{
using System;
using System.Collections.Generic;
using System.Data.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.DbContextPackage.Extensions;
using Microsoft.DbContextPackage.Resources;
using Xunit;
public class EdmxUtilityTests
{
[Fact]
public void GetMappingCollection_returns_mapping()
{
var edmxContents = @"<?xml version='1.0'?>
<Edmx Version='3.0' xmlns='http://schemas.microsoft.com/ado/2009/11/edmx'>
<Runtime>
<ConceptualModels>
<Schema Namespace='Model' Alias='Self' annotation:UseStrongSpatialTypes='false' xmlns:annotation='http://schemas.microsoft.com/ado/2009/02/edm/annotation' xmlns='http://schemas.microsoft.com/ado/2009/11/edm'>
<EntityContainer Name='DatabaseEntities' annotation:LazyLoadingEnabled='true'>
<EntitySet Name='Entities' EntityType='Model.Entity' />
</EntityContainer>
<EntityType Name='Entity'>
<Key>
<PropertyRef Name='Id' />
</Key>
<Property Name='Id' Type='Int32' Nullable='false' annotation:StoreGeneratedPattern='Identity' />
</EntityType>
</Schema>
</ConceptualModels>
<Mappings>
<Mapping Space='C-S' xmlns='http://schemas.microsoft.com/ado/2009/11/mapping/cs'>
<EntityContainerMapping StorageEntityContainer='ModelStoreContainer' CdmEntityContainer='DatabaseEntities'>
<EntitySetMapping Name='Entities'>
<EntityTypeMapping TypeName='Model.Entity'>
<MappingFragment StoreEntitySet='Entities'>
<ScalarProperty Name='Id' ColumnName='Id' />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
</EntityContainerMapping>
</Mapping>
</Mappings>
<StorageModels>
<Schema Namespace='Model.Store' Alias='Self' Provider='System.Data.SqlClient' ProviderManifestToken='2008' xmlns:store='http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator' xmlns='http://schemas.microsoft.com/ado/2009/11/edm/ssdl'>
<EntityContainer Name='ModelStoreContainer'>
<EntitySet Name='Entities' EntityType='Model.Store.Entities' store:Type='Tables' Schema='dbo' />
</EntityContainer>
<EntityType Name='Entities'>
<Key>
<PropertyRef Name='Id' />
</Key>
<Property Name='Id' Type='int' Nullable='false' StoreGeneratedPattern='Identity' />
</EntityType>
</Schema>
</StorageModels>
</Runtime>
</Edmx>";
StorageMappingItemCollection mappingCollection;
using (var edmx = new TempFile(edmxContents))
{
mappingCollection = new EdmxUtility(edmx.FileName)
.GetMappingCollection();
}
Assert.True(mappingCollection.Contains("DatabaseEntities"));
}
[Fact]
public void GetMappingCollection_returns_mapping_for_v2_schema()
{
var edmxContents = @"<?xml version='1.0' ?>
<Edmx Version='2.0' xmlns='http://schemas.microsoft.com/ado/2008/10/edmx'>
<Runtime>
<ConceptualModels>
<Schema Namespace='Model' Alias='Self' xmlns:annotation='http://schemas.microsoft.com/ado/2009/02/edm/annotation' xmlns='http://schemas.microsoft.com/ado/2008/09/edm'>
<EntityContainer Name='DatabaseEntities' annotation:LazyLoadingEnabled='true'>
<EntitySet Name='Entities' EntityType='Model.Entity' />
</EntityContainer>
<EntityType Name='Entity'>
<Key>
<PropertyRef Name='Id' />
</Key>
<Property Name='Id' Type='Int32' Nullable='false' annotation:StoreGeneratedPattern='Identity' />
</EntityType>
</Schema>
</ConceptualModels>
<Mappings>
<Mapping Space='C-S' xmlns='http://schemas.microsoft.com/ado/2008/09/mapping/cs'>
<EntityContainerMapping StorageEntityContainer='ModelStoreContainer' CdmEntityContainer='DatabaseEntities'>
<EntitySetMapping Name='Entities'>
<EntityTypeMapping TypeName='Model.Entity'>
<MappingFragment StoreEntitySet='Entities'>
<ScalarProperty Name='Id' ColumnName='Id' />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
</EntityContainerMapping>
</Mapping>
</Mappings>
<StorageModels>
<Schema Namespace='Model.Store' Alias='Self' Provider='System.Data.SqlClient' ProviderManifestToken='2008' xmlns:store='http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator' xmlns='http://schemas.microsoft.com/ado/2009/02/edm/ssdl'>
<EntityContainer Name='ModelStoreContainer'>
<EntitySet Name='Entities' EntityType='Model.Store.Entities' store:Type='Tables' Schema='dbo' />
</EntityContainer>
<EntityType Name='Entities'>
<Key>
<PropertyRef Name='Id' />
</Key>
<Property Name='Id' Type='int' Nullable='false' StoreGeneratedPattern='Identity' />
</EntityType>
</Schema>
</StorageModels>
</Runtime>
</Edmx>";
StorageMappingItemCollection mappingCollection;
using (var edmx = new TempFile(edmxContents))
{
mappingCollection = new EdmxUtility(edmx.FileName)
.GetMappingCollection();
}
Assert.True(mappingCollection.Contains("DatabaseEntities"));
}
[Fact]
public void GetMappingCollection_throws_on_schema_errors()
{
var edmxContents = @"<?xml version='1.0'?>
<Edmx Version='3.0' xmlns='http://schemas.microsoft.com/ado/2009/11/edmx'>
<Runtime>
<ConceptualModels>
<Schema xmlns='http://schemas.microsoft.com/ado/2009/11/edm' />
</ConceptualModels>
</Runtime>
</Edmx>";
using (var edmx = new TempFile(edmxContents))
{
var ex = Assert.Throws<EdmSchemaErrorException>(
() => new EdmxUtility(edmx.FileName).GetMappingCollection());
Assert.Equal(
Strings.EdmSchemaError(
Path.GetFileName(edmx.FileName),
"ConceptualModels"),
ex.Message);
}
}
private sealed class TempFile : IDisposable
{
private readonly string _fileName;
private bool _disposed;
public TempFile(string contents)
{
_fileName = Path.GetTempFileName();
File.WriteAllText(_fileName, contents);
}
~TempFile()
{
Dispose(false);
}
public string FileName
{
get
{
HandleDisposed();
return _fileName;
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (!_disposed)
{
if (!string.IsNullOrWhiteSpace(_fileName))
{
File.Delete(_fileName);
}
_disposed = true;
}
}
private void HandleDisposed()
{
if (_disposed)
{
throw new ObjectDisposedException(null);
}
}
}
}
}

View File

@@ -0,0 +1,150 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Utilities
{
using System;
using System.CodeDom.Compiler;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary;
using Microsoft.VisualStudio.TextTemplating;
using Xunit;
public class EfTextTemplateHostTests
{
public class ResolveAssemblyReference
{
[Fact]
public void Resolves_assembly_locations()
{
var host = new EfTextTemplateHost();
var assemblyLocation = typeof(Type).Assembly.Location;
var resolvedReference = host.ResolveAssemblyReference(
assemblyLocation);
Assert.True(File.Exists(resolvedReference));
Assert.Equal("mscorlib.dll", Path.GetFileName(resolvedReference));
}
[Fact]
public void Resolves_full_assembly_names()
{
var host = new EfTextTemplateHost();
var assemblyName = typeof(Type).Assembly.GetName();
var resolvedReference = host.ResolveAssemblyReference(
assemblyName.FullName);
Assert.True(File.Exists(resolvedReference));
Assert.Equal("mscorlib.dll", Path.GetFileName(resolvedReference));
}
[Fact]
public void Resolves_simple_assembly_names()
{
var host = new EfTextTemplateHost();
var assemblyName = typeof(Type).Assembly.GetName();
var resolvedReference = host.ResolveAssemblyReference(
assemblyName.Name);
Assert.True(File.Exists(resolvedReference));
Assert.Equal("mscorlib.dll", Path.GetFileName(resolvedReference));
}
}
[Fact]
public void StandardAssemblyReferences_includes_basic_references()
{
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var powerToolsAssemblyName = typeof(EfTextTemplateHost)
.Assembly
.GetName()
.Name;
var references = host.StandardAssemblyReferences
.Select(r => Path.GetFileNameWithoutExtension(r))
.ToArray();
Assert.Contains(powerToolsAssemblyName, references);
Assert.Contains("System", references);
Assert.Contains("System.Core", references);
Assert.Contains("System.Data.Entity", references);
}
[Fact]
public void StandardImports_includes_basic_imports()
{
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var hostNamespace = typeof(EfTextTemplateHost).Namespace;
var imports = host.StandardImports;
Assert.Contains("System", imports);
Assert.Contains(hostNamespace, imports);
}
[Fact]
public void LogErrors_sets_Errors()
{
var efHost = new EfTextTemplateHost();
var host = (ITextTemplatingEngineHost)efHost;
var errors = new CompilerErrorCollection();
host.LogErrors(errors);
Assert.Same(errors, efHost.Errors);
}
public class ResolvePath
{
[Fact]
public void Resolves_absolute_paths()
{
const string path = @"C:\File.ext";
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var resolvedPath = host.ResolvePath(path);
Assert.Equal(path, resolvedPath);
}
[Fact]
public void Resolves_relative_paths_when_TemplateFile_absolute()
{
ITextTemplatingEngineHost host = new EfTextTemplateHost
{
TemplateFile = @"C:\Template.tt"
};
var resolvedPath = host.ResolvePath("File.ext");
Assert.Equal(@"C:\File.ext", resolvedPath);
}
[Fact]
public void Returns_original_path_when_unresolvable()
{
const string path = "File.ext";
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var resolvedPath = host.ResolvePath(path);
Assert.Equal(path, resolvedPath);
}
}
[Fact]
public void SetFileExtension_sets_FileExtension()
{
const string extension = ".ext";
var efHost = new EfTextTemplateHost();
var host = (ITextTemplatingEngineHost)efHost;
host.SetFileExtension(extension);
Assert.Equal(extension, efHost.FileExtension);
}
}
}

View File

@@ -0,0 +1,22 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Utilities
{
using System;
using Xunit;
public class TemplatesTests
{
[Fact]
public void GetDefaultTemplate_returns_default_templates()
{
var contextTemplate = Templates.GetDefaultTemplate(Templates.ContextTemplate);
Assert.False(string.IsNullOrWhiteSpace(contextTemplate));
var entityTemplate = Templates.GetDefaultTemplate(Templates.EntityTemplate);
Assert.False(string.IsNullOrWhiteSpace(entityTemplate));
var mappingTemplate = Templates.GetDefaultTemplate(Templates.MappingTemplate);
Assert.False(string.IsNullOrWhiteSpace(mappingTemplate));
}
}
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Moq" version="4.0.10827" />
<package id="xunit" version="1.9.1" targetFramework="net40" />
</packages>