Commit 702c918b authored by Nick Craver's avatar Nick Craver Committed by GitHub

Merge branch 'master' into master

parents e1fdc3bd 6ce36492
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<Title>Dapper.Contrib</Title> <Title>Dapper.Contrib</Title>
<Description>The official collection of get, insert, update and delete helpers for Dapper.net. Also handles lists of entities and optional "dirty" tracking of interface-based entities.</Description> <Description>The official collection of get, insert, update and delete helpers for Dapper.net. Also handles lists of entities and optional "dirty" tracking of interface-based entities.</Description>
<Authors>Sam Saffron;Johan Danforth</Authors> <Authors>Sam Saffron;Johan Danforth</Authors>
<TargetFrameworks>net40;net45;netstandard1.3</TargetFrameworks> <TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
<!-- TODO: Docs --> <!-- TODO: Docs -->
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup> </PropertyGroup>
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Dapper\Dapper.csproj" /> <ProjectReference Include="..\Dapper\Dapper.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' "> <ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.Linq" /> <Reference Include="System.Data.Linq" />
<Reference Include="System" /> <Reference Include="System" />
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
using Dapper; using Dapper;
#if COREFX #if NETSTANDARD1_3
using DataException = System.InvalidOperationException; using DataException = System.InvalidOperationException;
#else #else
using System.Threading; using System.Threading;
...@@ -274,7 +274,7 @@ private static string GetTableName(Type type) ...@@ -274,7 +274,7 @@ private static string GetTableName(Type type)
{ {
//NOTE: This as dynamic trick should be able to handle both our own Table-attribute as well as the one in EntityFramework //NOTE: This as dynamic trick should be able to handle both our own Table-attribute as well as the one in EntityFramework
var tableAttr = type var tableAttr = type
#if COREFX #if NETSTANDARD1_3
.GetTypeInfo() .GetTypeInfo()
#endif #endif
.GetCustomAttributes(false).SingleOrDefault(attr => attr.GetType().Name == "TableAttribute") as dynamic; .GetCustomAttributes(false).SingleOrDefault(attr => attr.GetType().Name == "TableAttribute") as dynamic;
...@@ -516,7 +516,7 @@ private static class ProxyGenerator ...@@ -516,7 +516,7 @@ private static class ProxyGenerator
private static AssemblyBuilder GetAsmBuilder(string name) private static AssemblyBuilder GetAsmBuilder(string name)
{ {
#if COREFX #if NETSTANDARD1_3
return AssemblyBuilder.DefineDynamicAssembly(new AssemblyName { Name = name }, AssemblyBuilderAccess.Run); return AssemblyBuilder.DefineDynamicAssembly(new AssemblyName { Name = name }, AssemblyBuilderAccess.Run);
#else #else
return Thread.GetDomain().DefineDynamicAssembly(new AssemblyName { Name = name }, AssemblyBuilderAccess.Run); return Thread.GetDomain().DefineDynamicAssembly(new AssemblyName { Name = name }, AssemblyBuilderAccess.Run);
...@@ -551,7 +551,7 @@ public static T GetInterfaceProxy<T>() ...@@ -551,7 +551,7 @@ public static T GetInterfaceProxy<T>()
CreateProperty<T>(typeBuilder, property.Name, property.PropertyType, setIsDirtyMethod, isId); CreateProperty<T>(typeBuilder, property.Name, property.PropertyType, setIsDirtyMethod, isId);
} }
#if COREFX #if NETSTANDARD1_3
var generatedType = typeBuilder.CreateTypeInfo().AsType(); var generatedType = typeBuilder.CreateTypeInfo().AsType();
#else #else
var generatedType = typeBuilder.CreateType(); var generatedType = typeBuilder.CreateType();
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<Title>Dapper: Entity Framework type handlers (with a strong name)</Title> <Title>Dapper: Entity Framework type handlers (with a strong name)</Title>
<Description>Extension handlers for entity framework</Description> <Description>Extension handlers for entity framework</Description>
<Authors>Marc Gravell;Nick Craver</Authors> <Authors>Marc Gravell;Nick Craver</Authors>
<TargetFrameworks>net40;net45</TargetFrameworks> <TargetFrameworks>net451</TargetFrameworks>
<AssemblyOriginatorKeyFile>../Dapper.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>../Dapper.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign> <PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<AssemblyTitle>Dapper entity framework type handlers</AssemblyTitle> <AssemblyTitle>Dapper entity framework type handlers</AssemblyTitle>
<VersionPrefix>1.50.2</VersionPrefix> <VersionPrefix>1.50.2</VersionPrefix>
<Authors>Marc Gravell;Nick Craver</Authors> <Authors>Marc Gravell;Nick Craver</Authors>
<TargetFrameworks>net40;net45</TargetFrameworks> <TargetFrameworks>net451</TargetFrameworks>
<PackageTags>orm;sql;micro-orm</PackageTags> <PackageTags>orm;sql;micro-orm</PackageTags>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<Description>Trivial micro-orm implemented on Dapper, provides with CRUD helpers.</Description> <Description>Trivial micro-orm implemented on Dapper, provides with CRUD helpers.</Description>
<Authors>Sam Saffron</Authors> <Authors>Sam Saffron</Authors>
<Copyright>2017 Sam Saffron</Copyright> <Copyright>2017 Sam Saffron</Copyright>
<TargetFrameworks>net40;net45;netstandard1.3</TargetFrameworks> <TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
<!-- TODO: Docs --> <!-- TODO: Docs -->
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup> </PropertyGroup>
...@@ -16,14 +16,14 @@ ...@@ -16,14 +16,14 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Dapper\Dapper.csproj" /> <ProjectReference Include="..\Dapper\Dapper.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' "> <ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.Linq" /> <Reference Include="System.Data.Linq" />
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' "> <ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<Title>Dapper SqlBuilder component</Title> <Title>Dapper SqlBuilder component</Title>
<Description>The Dapper SqlBuilder component, for building SQL queries dynamically.</Description> <Description>The Dapper SqlBuilder component, for building SQL queries dynamically.</Description>
<Authors>Sam Saffron, Johan Danforth</Authors> <Authors>Sam Saffron, Johan Danforth</Authors>
<TargetFrameworks>net40;net45;netstandard1.3</TargetFrameworks> <TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
<!-- TODO: Docs --> <!-- TODO: Docs -->
<GenerateDocumentationFile>false</GenerateDocumentationFile> <GenerateDocumentationFile>false</GenerateDocumentationFile>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
...@@ -13,13 +13,13 @@ ...@@ -13,13 +13,13 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Dapper\Dapper.csproj" /> <ProjectReference Include="..\Dapper\Dapper.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' "> <ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.Linq" /> <Reference Include="System.Data.Linq" />
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' "> <ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>
\ No newline at end of file
...@@ -5,14 +5,14 @@ ...@@ -5,14 +5,14 @@
<Title>Dapper (Strong Named)</Title> <Title>Dapper (Strong Named)</Title>
<Description>A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc..</Description> <Description>A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc..</Description>
<Authors>Sam Saffron;Marc Gravell;Nick Craver</Authors> <Authors>Sam Saffron;Marc Gravell;Nick Craver</Authors>
<TargetFrameworks>net40;net45;net451;netstandard1.3</TargetFrameworks> <TargetFrameworks>net451;netstandard1.3;netstandard2.0</TargetFrameworks>
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign> <PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Dapper\**\*.cs" Exclude="..\Dapper\obj\**\*.cs" /> <Compile Include="..\Dapper\**\*.cs" Exclude="..\Dapper\obj\**\*.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' OR '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' "> <ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' "> <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
<PackageReference Include="System.Collections.Concurrent" Version="4.3.0" /> <PackageReference Include="System.Collections.Concurrent" Version="4.3.0" />
<PackageReference Include="System.Collections.NonGeneric" Version="4.3.0" /> <PackageReference Include="System.Collections.NonGeneric" Version="4.3.0" />
<PackageReference Include="System.Data.Common" Version="4.3.0" /> <PackageReference Include="System.Data.SqlClient" Version="4.4.0" />
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> <PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" />
<PackageReference Include="System.Reflection.Emit" Version="4.3.0" /> <PackageReference Include="System.Reflection.Emit" Version="4.3.0" />
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" /> <PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" />
...@@ -30,4 +30,9 @@ ...@@ -30,4 +30,9 @@
<PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" /> <PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" />
<PackageReference Include="System.Xml.XmlDocument" Version="4.3.0" /> <PackageReference Include="System.Xml.XmlDocument" Version="4.3.0" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
<PackageReference Include="System.Data.SqlClient" Version="4.4.0" />
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" />
</ItemGroup>
</Project> </Project>
...@@ -6,27 +6,23 @@ ...@@ -6,27 +6,23 @@
<DebugType>portable</DebugType> <DebugType>portable</DebugType>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<GenerateDocumentationFile>false</GenerateDocumentationFile> <GenerateDocumentationFile>false</GenerateDocumentationFile>
<TargetFramework>netcoreapp1.0</TargetFramework> <TargetFrameworks>netcoreapp1.0;netcoreapp2.0</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
<DefineConstants>$(DefineConstants);COREFX;</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Dapper.Tests\Helpers\Assert.cs;..\Dapper.Tests\Helpers\XunitSkippable.cs;..\Dapper\TypeExtensions.cs" /> <Compile Include="..\Dapper.Tests\Helpers\XunitSkippable.cs;..\Dapper\TypeExtensions.cs" />
<None Remove="Test.DB.sdf" /> <None Remove="Test.DB.sdf" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Dapper\Dapper.csproj" /> <ProjectReference Include="..\Dapper\Dapper.csproj" />
<ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" /> <ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" />
<ProjectReference Include="..\Dapper.SqlBuilder\Dapper.SqlBuilder.csproj" /> <ProjectReference Include="..\Dapper.SqlBuilder\Dapper.SqlBuilder.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="1.1.1" />
<PackageReference Include="System.Data.SqlClient" Version="4.3.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="xunit" Version="2.3.0-beta1-build3642" /> <PackageReference Include="MySql.Data" Version="7.0.7-m61" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta1-build1309" /> <PackageReference Include="System.Data.SqlClient" Version="4.4.0" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta1-build3642" /> <PackageReference Include="xunit" Version="$(xUnitVersion)" />
</ItemGroup> <PackageReference Include="xunit.runner.visualstudio" Version="$(xUnitVersion)" />
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' "> <DotNetCliToolReference Include="dotnet-xunit" Version="$(xUnitVersion)" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="1.1.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" /> <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -8,7 +8,7 @@ public class BelgradeBenchmarks : BenchmarkBase ...@@ -8,7 +8,7 @@ public class BelgradeBenchmarks : BenchmarkBase
{ {
private QueryMapper _mapper; private QueryMapper _mapper;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -6,7 +6,7 @@ namespace Dapper.Tests.Performance ...@@ -6,7 +6,7 @@ namespace Dapper.Tests.Performance
{ {
public class DapperBenchmarks : BenchmarkBase public class DapperBenchmarks : BenchmarkBase
{ {
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -7,7 +7,7 @@ public class EF6Benchmarks : BenchmarkBase ...@@ -7,7 +7,7 @@ public class EF6Benchmarks : BenchmarkBase
{ {
private EntityFramework.EFContext Context; private EntityFramework.EFContext Context;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -13,7 +13,7 @@ public class EFCoreBenchmarks : BenchmarkBase ...@@ -13,7 +13,7 @@ public class EFCoreBenchmarks : BenchmarkBase
private static readonly Func<DataClassesDataContext, int, Linq2Sql.Post> compiledQuery = private static readonly Func<DataClassesDataContext, int, Linq2Sql.Post> compiledQuery =
CompiledQuery.Compile((DataClassesDataContext ctx, int id) => ctx.Posts.First(p => p.Id == id)); CompiledQuery.Compile((DataClassesDataContext ctx, int id) => ctx.Posts.First(p => p.Id == id));
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -9,11 +9,11 @@ public class HandCodedBenchmarks : BenchmarkBase ...@@ -9,11 +9,11 @@ public class HandCodedBenchmarks : BenchmarkBase
{ {
private SqlCommand _postCommand; private SqlCommand _postCommand;
private SqlParameter _idParam; private SqlParameter _idParam;
#if !COREFX #if !NETCOREAPP1_0
private DataTable _table; private DataTable _table;
#endif #endif
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
...@@ -24,7 +24,7 @@ public void Setup() ...@@ -24,7 +24,7 @@ public void Setup()
Counter1,Counter2,Counter3,Counter4,Counter5,Counter6,Counter7,Counter8,Counter9 from Posts where Id = @Id" Counter1,Counter2,Counter3,Counter4,Counter5,Counter6,Counter7,Counter8,Counter9 from Posts where Id = @Id"
}; };
_idParam = _postCommand.Parameters.Add("@Id", SqlDbType.Int); _idParam = _postCommand.Parameters.Add("@Id", SqlDbType.Int);
#if !COREFX #if !NETCOREAPP1_0
_table = new DataTable _table = new DataTable
{ {
Columns = Columns =
......
...@@ -12,7 +12,7 @@ public class Linq2SqlBenchmarks : BenchmarkBase ...@@ -12,7 +12,7 @@ public class Linq2SqlBenchmarks : BenchmarkBase
private static readonly Func<DataClassesDataContext, int, Linq2Sql.Post> compiledQuery = private static readonly Func<DataClassesDataContext, int, Linq2Sql.Post> compiledQuery =
CompiledQuery.Compile((DataClassesDataContext ctx, int id) => ctx.Posts.First(p => p.Id == id)); CompiledQuery.Compile((DataClassesDataContext ctx, int id) => ctx.Posts.First(p => p.Id == id));
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -8,7 +8,7 @@ public class MassiveBenchmarks : BenchmarkBase ...@@ -8,7 +8,7 @@ public class MassiveBenchmarks : BenchmarkBase
{ {
private DynamicModel _model; private DynamicModel _model;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -13,7 +13,7 @@ public class NHibernateBenchmarks : BenchmarkBase ...@@ -13,7 +13,7 @@ public class NHibernateBenchmarks : BenchmarkBase
{ {
private IStatelessSession _sql, _hql, _criteria, _linq, _get; private IStatelessSession _sql, _hql, _criteria, _linq, _get;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -8,7 +8,7 @@ public class PetaPocoBenchmarks : BenchmarkBase ...@@ -8,7 +8,7 @@ public class PetaPocoBenchmarks : BenchmarkBase
{ {
private Database _db, _dbFast; private Database _db, _dbFast;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -8,7 +8,7 @@ public class ServiceStackBenchmarks : BenchmarkBase ...@@ -8,7 +8,7 @@ public class ServiceStackBenchmarks : BenchmarkBase
{ {
private IDbConnection _db; private IDbConnection _db;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -6,7 +6,7 @@ public class SomaBenchmarks : BenchmarkBase ...@@ -6,7 +6,7 @@ public class SomaBenchmarks : BenchmarkBase
{ {
private dynamic _sdb; private dynamic _sdb;
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -18,7 +18,7 @@ public class SusanooBenchmarks : BenchmarkBase ...@@ -18,7 +18,7 @@ public class SusanooBenchmarks : BenchmarkBase
.DefineResults<dynamic>() .DefineResults<dynamic>()
.Realize(); .Realize();
[Setup] [GlobalSetup]
public void Setup() public void Setup()
{ {
BaseSetup(); BaseSetup();
......
...@@ -12,25 +12,27 @@ ...@@ -12,25 +12,27 @@
<ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" /> <ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" />
<ProjectReference Include="..\Dapper.EntityFramework\Dapper.EntityFramework.csproj" /> <ProjectReference Include="..\Dapper.EntityFramework\Dapper.EntityFramework.csproj" />
<PackageReference Include="Belgrade.Sql.Client" Version="0.7.0" /> <PackageReference Include="Belgrade.Sql.Client" Version="0.7.0" />
<PackageReference Include="BenchmarkDotNet" Version="0.10.5" /> <PackageReference Include="BenchmarkDotNet" Version="0.10.9" />
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.10.5" /> <PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.10.9" />
<!--<PackageReference Include="BLToolkit" Version="4.3.6" />--> <!--<PackageReference Include="BLToolkit" Version="4.3.6" />-->
<PackageReference Include="EntityFramework" Version="6.1.3" /> <PackageReference Include="EntityFramework" Version="6.1.3" />
<PackageReference Include="FirebirdSql.Data.FirebirdClient" Version="5.9.0.1" /> <PackageReference Include="FirebirdSql.Data.FirebirdClient" Version="5.9.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
<PackageReference Include="Microsoft.SqlServer.Compact" Version="4.0.8876.1" /> <PackageReference Include="Microsoft.SqlServer.Compact" Version="4.0.8876.1" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="14.0.314.76" /> <PackageReference Include="Microsoft.SqlServer.Types" Version="14.0.314.76" />
<PackageReference Include="MySql.Data" Version="7.0.7-m61" /> <PackageReference Include="MySql.Data" Version="7.0.7-m61" />
<PackageReference Include="NHibernate" Version="4.1.1.4000" /> <PackageReference Include="NHibernate" Version="4.1.1.4000" />
<PackageReference Include="Npgsql" Version="3.2.2" /> <PackageReference Include="Iesi.Collections" Version="4.0.2" />
<PackageReference Include="PetaPoco" Version="5.1.244" /> <PackageReference Include="Npgsql" Version="3.2.5" />
<PackageReference Include="ServiceStack.OrmLite.SqlServer.Signed" Version="4.5.8" /> <PackageReference Include="PetaPoco" Version="5.1.259" />
<PackageReference Include="ServiceStack.OrmLite.SqlServer.Signed" Version="4.5.12" />
<PackageReference Include="Simple.Data.SqlServer" Version="2.0.0-alpha1" /> <PackageReference Include="Simple.Data.SqlServer" Version="2.0.0-alpha1" />
<PackageReference Include="Soma" Version="1.9.0.1" /> <PackageReference Include="Soma" Version="1.9.0.1" />
<PackageReference Include="SubSonic" Version="3.0.0.4" /> <PackageReference Include="SubSonic" Version="3.0.0.4" />
<PackageReference Include="Susanoo.SqlServer" Version="1.2.4.2" /> <PackageReference Include="Susanoo.SqlServer" Version="1.2.4.2" />
<PackageReference Include="System.Data.SQLite" Version="1.0.105" /> <PackageReference Include="System.Data.SQLite" Version="1.0.105.2" />
<PackageReference Include="System.Data.SqlClient" Version="4.4.0" />
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.Linq" /> <Reference Include="System.Data.Linq" />
......
...@@ -8,7 +8,7 @@ public class ORMColum : IColumn ...@@ -8,7 +8,7 @@ public class ORMColum : IColumn
{ {
public string Id => nameof(ORMColum); public string Id => nameof(ORMColum);
public string ColumnName { get; } = "ORM"; public string ColumnName { get; } = "ORM";
public string Legend => "The object relational mapper being tested"; public string Legend => "The object/relational mapper being tested";
public bool IsDefault(Summary summary, Benchmark benchmark) => false; public bool IsDefault(Summary summary, Benchmark benchmark) => false;
public string GetValue(Summary summary, Benchmark benchmark) => benchmark.Target.Method.DeclaringType.Name.Replace("Benchmarks", string.Empty); public string GetValue(Summary summary, Benchmark benchmark) => benchmark.Target.Method.DeclaringType.Name.Replace("Benchmarks", string.Empty);
......
...@@ -341,7 +341,7 @@ public async Task RunAsync(int iterations) ...@@ -341,7 +341,7 @@ public async Task RunAsync(int iterations)
} }
}, "Hand Coded"); }, "Hand Coded");
#if !COREFX #if !NETSTANDARD1_3
var table = new DataTable var table = new DataTable
{ {
Columns = Columns =
......
#if !COREFX #if !NETSTANDARD1_3
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
......
#if !COREFX #if !NETSTANDARD1_3
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
......
#if !COREFX #if !NETSTANDARD1_3
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
......
This diff is collapsed.
...@@ -12,26 +12,26 @@ public void TestAbstractInheritance() ...@@ -12,26 +12,26 @@ public void TestAbstractInheritance()
{ {
var order = connection.Query<AbstractInheritance.ConcreteOrder>("select 1 Internal,2 Protected,3 [Public],4 Concrete").First(); var order = connection.Query<AbstractInheritance.ConcreteOrder>("select 1 Internal,2 Protected,3 [Public],4 Concrete").First();
order.Internal.IsEqualTo(1); Assert.Equal(1, order.Internal);
order.ProtectedVal.IsEqualTo(2); Assert.Equal(2, order.ProtectedVal);
order.Public.IsEqualTo(3); Assert.Equal(3, order.Public);
order.Concrete.IsEqualTo(4); Assert.Equal(4, order.Concrete);
} }
[Fact] [Fact]
public void TestMultipleConstructors() public void TestMultipleConstructors()
{ {
MultipleConstructors mult = connection.Query<MultipleConstructors>("select 0 A, 'Dapper' b").First(); MultipleConstructors mult = connection.Query<MultipleConstructors>("select 0 A, 'Dapper' b").First();
mult.A.IsEqualTo(0); Assert.Equal(0, mult.A);
mult.B.IsEqualTo("Dapper"); Assert.Equal("Dapper", mult.B);
} }
[Fact] [Fact]
public void TestConstructorsWithAccessModifiers() public void TestConstructorsWithAccessModifiers()
{ {
ConstructorsWithAccessModifiers value = connection.Query<ConstructorsWithAccessModifiers>("select 0 A, 'Dapper' b").First(); ConstructorsWithAccessModifiers value = connection.Query<ConstructorsWithAccessModifiers>("select 0 A, 'Dapper' b").First();
value.A.IsEqualTo(1); Assert.Equal(1, value.A);
value.B.IsEqualTo("Dapper!"); Assert.Equal("Dapper!", value.B);
} }
[Fact] [Fact]
...@@ -39,11 +39,11 @@ public void TestNoDefaultConstructor() ...@@ -39,11 +39,11 @@ public void TestNoDefaultConstructor()
{ {
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
NoDefaultConstructor nodef = connection.Query<NoDefaultConstructor>("select CAST(NULL AS integer) A1, CAST(NULL AS integer) b1, CAST(NULL AS real) f1, 'Dapper' s1, G1 = @id", new { id = guid }).First(); NoDefaultConstructor nodef = connection.Query<NoDefaultConstructor>("select CAST(NULL AS integer) A1, CAST(NULL AS integer) b1, CAST(NULL AS real) f1, 'Dapper' s1, G1 = @id", new { id = guid }).First();
nodef.A.IsEqualTo(0); Assert.Equal(0, nodef.A);
nodef.B.IsEqualTo(null); Assert.Null(nodef.B);
nodef.F.IsEqualTo(0); Assert.Equal(0, nodef.F);
nodef.S.IsEqualTo("Dapper"); Assert.Equal("Dapper", nodef.S);
nodef.G.IsEqualTo(guid); Assert.Equal(nodef.G, guid);
} }
[Fact] [Fact]
...@@ -52,18 +52,18 @@ public void TestNoDefaultConstructorWithChar() ...@@ -52,18 +52,18 @@ public void TestNoDefaultConstructorWithChar()
const char c1 = 'ą'; const char c1 = 'ą';
const char c3 = 'ó'; const char c3 = 'ó';
NoDefaultConstructorWithChar nodef = connection.Query<NoDefaultConstructorWithChar>("select @c1 c1, @c2 c2, @c3 c3", new { c1 = c1, c2 = (char?)null, c3 = c3 }).First(); NoDefaultConstructorWithChar nodef = connection.Query<NoDefaultConstructorWithChar>("select @c1 c1, @c2 c2, @c3 c3", new { c1 = c1, c2 = (char?)null, c3 = c3 }).First();
nodef.Char1.IsEqualTo(c1); Assert.Equal(nodef.Char1, c1);
nodef.Char2.IsEqualTo(null); Assert.Null(nodef.Char2);
nodef.Char3.IsEqualTo(c3); Assert.Equal(nodef.Char3, c3);
} }
[Fact] [Fact]
public void TestNoDefaultConstructorWithEnum() public void TestNoDefaultConstructorWithEnum()
{ {
NoDefaultConstructorWithEnum nodef = connection.Query<NoDefaultConstructorWithEnum>("select cast(2 as smallint) E1, cast(5 as smallint) n1, cast(null as smallint) n2").First(); NoDefaultConstructorWithEnum nodef = connection.Query<NoDefaultConstructorWithEnum>("select cast(2 as smallint) E1, cast(5 as smallint) n1, cast(null as smallint) n2").First();
nodef.E.IsEqualTo(ShortEnum.Two); Assert.Equal(ShortEnum.Two, nodef.E);
nodef.NE1.IsEqualTo(ShortEnum.Five); Assert.Equal(ShortEnum.Five, nodef.NE1);
nodef.NE2.IsEqualTo(null); Assert.Null(nodef.NE2);
} }
[Fact] [Fact]
...@@ -77,10 +77,10 @@ public void ExplicitConstructors() ...@@ -77,10 +77,10 @@ public void ExplicitConstructors()
SELECT * FROM @ExplicitConstructors" SELECT * FROM @ExplicitConstructors"
).ToList(); ).ToList();
rows.Count.IsEqualTo(1); Assert.Single(rows);
rows[0].Field.IsEqualTo(1); Assert.Equal(1, rows[0].Field);
rows[0].Field_1.IsEqualTo(1); Assert.Equal(1, rows[0].Field_1);
rows[0].GetWentThroughProperConstructor().IsTrue(); Assert.True(rows[0].GetWentThroughProperConstructor());
} }
private class _ExplicitConstructors private class _ExplicitConstructors
...@@ -104,107 +104,6 @@ public bool GetWentThroughProperConstructor() ...@@ -104,107 +104,6 @@ public bool GetWentThroughProperConstructor()
} }
} }
#if LINQ2SQL
private class NoDefaultConstructorWithBinary
{
public System.Data.Linq.Binary Value { get; set; }
public int Ynt { get; set; }
public NoDefaultConstructorWithBinary(System.Data.Linq.Binary val)
{
Value = val;
}
}
[Fact]
public void TestNoDefaultConstructorBinary()
{
byte[] orig = new byte[20];
new Random(123456).NextBytes(orig);
var input = new System.Data.Linq.Binary(orig);
var output = connection.Query<NoDefaultConstructorWithBinary>("select @input as val", new { input }).First().Value;
output.ToArray().IsSequenceEqualTo(orig);
}
#endif
[Fact]
public void Issue461_TypeHandlerWorksInConstructor()
{
SqlMapper.AddTypeHandler(new Issue461_BlargHandler());
connection.Execute(@"CREATE TABLE #Issue461 (
Id int not null IDENTITY(1,1),
SomeValue nvarchar(50),
SomeBlargValue nvarchar(200),
)");
const string Expected = "abc123def";
var blarg = new Blarg(Expected);
connection.Execute(
"INSERT INTO #Issue461 (SomeValue, SomeBlargValue) VALUES (@value, @blarg)",
new { value = "what up?", blarg });
// test: without constructor
var parameterlessWorks = connection.QuerySingle<Issue461_ParameterlessTypeConstructor>("SELECT * FROM #Issue461");
parameterlessWorks.Id.IsEqualTo(1);
parameterlessWorks.SomeValue.IsEqualTo("what up?");
parameterlessWorks.SomeBlargValue.Value.IsEqualTo(Expected);
// test: via constructor
var parameterDoesNot = connection.QuerySingle<Issue461_ParameterisedTypeConstructor>("SELECT * FROM #Issue461");
parameterDoesNot.Id.IsEqualTo(1);
parameterDoesNot.SomeValue.IsEqualTo("what up?");
parameterDoesNot.SomeBlargValue.Value.IsEqualTo(Expected);
}
// I would usually expect this to be a struct; using a class
// so that we can't pass unexpectedly due to forcing an unsafe cast - want
// to see an InvalidCastException if it is wrong
private class Blarg
{
public Blarg(string value) { Value = value; }
public string Value { get; }
public override string ToString()
{
return Value;
}
}
private class Issue461_BlargHandler : SqlMapper.TypeHandler<Blarg>
{
public override void SetValue(IDbDataParameter parameter, Blarg value)
{
parameter.Value = ((object)value.Value) ?? DBNull.Value;
}
public override Blarg Parse(object value)
{
string s = (value == null || value is DBNull) ? null : Convert.ToString(value);
return new Blarg(s);
}
}
private class Issue461_ParameterlessTypeConstructor
{
public int Id { get; set; }
public string SomeValue { get; set; }
public Blarg SomeBlargValue { get; set; }
}
private class Issue461_ParameterisedTypeConstructor
{
public Issue461_ParameterisedTypeConstructor(int id, string someValue, Blarg someBlargValue)
{
Id = id;
SomeValue = someValue;
SomeBlargValue = someBlargValue;
}
public int Id { get; }
public string SomeValue { get; }
public Blarg SomeBlargValue { get; }
}
public static class AbstractInheritance public static class AbstractInheritance
{ {
public abstract class Order public abstract class Order
...@@ -312,7 +211,7 @@ private WithPrivateConstructor() ...@@ -312,7 +211,7 @@ private WithPrivateConstructor()
public void TestWithNonPublicConstructor() public void TestWithNonPublicConstructor()
{ {
var output = connection.Query<WithPrivateConstructor>("select 1 as Foo").First(); var output = connection.Query<WithPrivateConstructor>("select 1 as Foo").First();
output.Foo.IsEqualTo(1); Assert.Equal(1, output.Foo);
} }
} }
} }
...@@ -6,14 +6,12 @@ ...@@ -6,14 +6,12 @@
<GenerateDocumentationFile>false</GenerateDocumentationFile> <GenerateDocumentationFile>false</GenerateDocumentationFile>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<TargetFrameworks>net452;netcoreapp1.0</TargetFrameworks> <TargetFrameworks>net452;netcoreapp1.0;netcoreapp2.0</TargetFrameworks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net452' "> <PropertyGroup Condition=" '$(TargetFramework)' == 'net452' ">
<DefineConstants>$(DefineConstants);NET45;MYSQL;ENTITY_FRAMEWORK;LINQ2SQL;FIREBIRD;SQL_CE;POSTGRESQL;OLEDB;SQLITE</DefineConstants> <DefineConstants>$(DefineConstants);ENTITY_FRAMEWORK;LINQ2SQL;SQL_CE;OLEDB</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
<DefineConstants>$(DefineConstants);COREFX</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<None Remove="Test.DB.sdf" /> <None Remove="Test.DB.sdf" />
...@@ -21,23 +19,22 @@ ...@@ -21,23 +19,22 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Dapper\Dapper.csproj" /> <ProjectReference Include="..\Dapper\Dapper.csproj" />
<ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" /> <ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" /> <PackageReference Include="FirebirdSql.Data.FirebirdClient" Version="5.9.1" />
<PackageReference Include="System.Data.SqlClient" Version="4.3.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="System.ValueTuple" Version="4.3.0" /> <PackageReference Include="MySql.Data" Version="8.0.8-dmr" />
<PackageReference Include="xunit" Version="2.3.0-beta1-build3642" /> <PackageReference Include="Npgsql" Version="3.2.5" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta1-build1309" /> <PackageReference Include="System.Data.SqlClient" Version="4.4.0" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta1-build3642" /> <PackageReference Include="System.ValueTuple" Version="4.4.0" />
<PackageReference Include="xunit" Version="$(xUnitVersion)" />
<PackageReference Include="xunit.runner.visualstudio" Version="$(xUnitVersion)" />
<DotNetCliToolReference Include="dotnet-xunit" Version="$(xUnitVersion)" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' "> <ItemGroup Condition="'$(TargetFramework)' == 'net452'">
<ProjectReference Include="..\Dapper.EntityFramework\Dapper.EntityFramework.csproj" /> <ProjectReference Include="..\Dapper.EntityFramework\Dapper.EntityFramework.csproj" />
<PackageReference Include="EntityFramework" Version="6.1.3" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="1.1.1" />
<PackageReference Include="FirebirdSql.Data.FirebirdClient" Version="5.8.0" />
<PackageReference Include="Microsoft.SqlServer.Compact" Version="4.0.8876.1" /> <PackageReference Include="Microsoft.SqlServer.Compact" Version="4.0.8876.1" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="14.0.314.76" /> <PackageReference Include="Microsoft.SqlServer.Types" Version="14.0.314.76" />
<PackageReference Include="MySql.Data" Version="7.0.7-m61" />
<PackageReference Include="Npgsql" Version="3.2.2" />
<PackageReference Include="System.Data.SQLite" Version="1.0.104" />
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.Linq" /> <Reference Include="System.Data.Linq" />
...@@ -47,9 +44,12 @@ ...@@ -47,9 +44,12 @@
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' "> <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp1.0'">
<PackageReference Include="System.Ben" Version="1.0.0" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="1.1.1" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="1.1.0" /> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
<PackageReference Include="Microsoft.Data.Sqlite" Version="2.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
namespace Dapper.Tests namespace Dapper.Tests
{ {
public partial class DataReaderTests : TestBase public class DataReaderTests : TestBase
{ {
[Fact] [Fact]
public void GetSameReaderForSameShape() public void GetSameReaderForSameShape()
...@@ -14,12 +14,12 @@ public void GetSameReaderForSameShape() ...@@ -14,12 +14,12 @@ public void GetSameReaderForSameShape()
var typedParser = origReader.GetRowParser<HazNameId>(); var typedParser = origReader.GetRowParser<HazNameId>();
ReferenceEquals(origParser, typedParser).IsEqualTo(true); Assert.True(ReferenceEquals(origParser, typedParser));
var list = origReader.Parse<HazNameId>().ToList(); var list = origReader.Parse<HazNameId>().ToList();
list.Count.IsEqualTo(1); Assert.Single(list);
list[0].Name.IsEqualTo("abc"); Assert.Equal("abc", list[0].Name);
list[0].Id.IsEqualTo(123); Assert.Equal(123, list[0].Id);
origReader.Dispose(); origReader.Dispose();
var secondReader = connection.ExecuteReader("select 'abc' as Name, 123 as Id"); var secondReader = connection.ExecuteReader("select 'abc' as Name, 123 as Id");
...@@ -27,15 +27,15 @@ public void GetSameReaderForSameShape() ...@@ -27,15 +27,15 @@ public void GetSameReaderForSameShape()
var thirdParser = secondReader.GetRowParser(typeof(HazNameId), 1); var thirdParser = secondReader.GetRowParser(typeof(HazNameId), 1);
list = secondReader.Parse<HazNameId>().ToList(); list = secondReader.Parse<HazNameId>().ToList();
list.Count.IsEqualTo(1); Assert.Single(list);
list[0].Name.IsEqualTo("abc"); Assert.Equal("abc", list[0].Name);
list[0].Id.IsEqualTo(123); Assert.Equal(123, list[0].Id);
secondReader.Dispose(); secondReader.Dispose();
// now: should be different readers, but same parser // now: should be different readers, but same parser
ReferenceEquals(origReader, secondReader).IsEqualTo(false); Assert.False(ReferenceEquals(origReader, secondReader));
ReferenceEquals(origParser, secondParser).IsEqualTo(true); Assert.True(ReferenceEquals(origParser, secondParser));
ReferenceEquals(secondParser, thirdParser).IsEqualTo(false); Assert.False(ReferenceEquals(secondParser, thirdParser));
} }
[Fact] [Fact]
...@@ -68,13 +68,13 @@ union all ...@@ -68,13 +68,13 @@ union all
} }
} }
result.Count.IsEqualTo(2); Assert.Equal(2, result.Count);
result[0].Type.IsEqualTo(1); Assert.Equal(1, result[0].Type);
result[1].Type.IsEqualTo(2); Assert.Equal(2, result[1].Type);
var foo = (Discriminated_Foo)result[0]; var foo = (Discriminated_Foo)result[0];
foo.Name.IsEqualTo("abc"); Assert.Equal("abc", foo.Name);
var bar = (Discriminated_Bar)result[1]; var bar = (Discriminated_Bar)result[1];
bar.Value.IsEqualTo((float)4.0); Assert.Equal(bar.Value, (float)4.0);
} }
[Fact] [Fact]
...@@ -108,7 +108,7 @@ union all ...@@ -108,7 +108,7 @@ union all
break; break;
} }
obj.IsNotNull(); Assert.NotNull(obj);
obj.HazNameIdObject = toHaz(reader); obj.HazNameIdObject = toHaz(reader);
result.Add(obj); result.Add(obj);
...@@ -116,17 +116,17 @@ union all ...@@ -116,17 +116,17 @@ union all
} }
} }
result.Count.IsEqualTo(2); Assert.Equal(2, result.Count);
result[0].Type.IsEqualTo(1); Assert.Equal(1, result[0].Type);
result[1].Type.IsEqualTo(2); Assert.Equal(2, result[1].Type);
var foo = (DiscriminatedWithMultiMapping_Foo)result[0]; var foo = (DiscriminatedWithMultiMapping_Foo)result[0];
foo.Name.IsEqualTo("abc"); Assert.Equal("abc", foo.Name);
foo.HazNameIdObject.Id.IsEqualTo(1); Assert.Equal(1, foo.HazNameIdObject.Id);
foo.HazNameIdObject.Name.IsEqualTo("zxc"); Assert.Equal("zxc", foo.HazNameIdObject.Name);
var bar = (DiscriminatedWithMultiMapping_Bar)result[1]; var bar = (DiscriminatedWithMultiMapping_Bar)result[1];
bar.Value.IsEqualTo((float)4.0); Assert.Equal(bar.Value, (float)4.0);
bar.HazNameIdObject.Id.IsEqualTo(2); Assert.Equal(2, bar.HazNameIdObject.Id);
bar.HazNameIdObject.Name.IsEqualTo("qwe"); Assert.Equal("qwe", bar.HazNameIdObject.Name);
} }
private abstract class Discriminated_BaseType private abstract class Discriminated_BaseType
...@@ -137,18 +137,13 @@ private abstract class Discriminated_BaseType ...@@ -137,18 +137,13 @@ private abstract class Discriminated_BaseType
private class Discriminated_Foo : Discriminated_BaseType private class Discriminated_Foo : Discriminated_BaseType
{ {
public string Name { get; set; } public string Name { get; set; }
public override int Type { public override int Type => 1;
get { return 1; }
}
} }
private class Discriminated_Bar : Discriminated_BaseType private class Discriminated_Bar : Discriminated_BaseType
{ {
public float Value { get; set; } public float Value { get; set; }
public override int Type public override int Type => 2;
{
get { return 2; }
}
} }
private abstract class DiscriminatedWithMultiMapping_BaseType : Discriminated_BaseType private abstract class DiscriminatedWithMultiMapping_BaseType : Discriminated_BaseType
...@@ -160,20 +155,14 @@ private class DiscriminatedWithMultiMapping_Foo : DiscriminatedWithMultiMapping_ ...@@ -160,20 +155,14 @@ private class DiscriminatedWithMultiMapping_Foo : DiscriminatedWithMultiMapping_
{ {
public override HazNameId HazNameIdObject { get; set; } public override HazNameId HazNameIdObject { get; set; }
public string Name { get; set; } public string Name { get; set; }
public override int Type public override int Type => 1;
{
get { return 1; }
}
} }
private class DiscriminatedWithMultiMapping_Bar : DiscriminatedWithMultiMapping_BaseType private class DiscriminatedWithMultiMapping_Bar : DiscriminatedWithMultiMapping_BaseType
{ {
public override HazNameId HazNameIdObject { get; set; } public override HazNameId HazNameIdObject { get; set; }
public float Value { get; set; } public float Value { get; set; }
public override int Type public override int Type => 2;
{
get { return 2; }
}
} }
} }
} }
\ No newline at end of file
using System; using System;
using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit; using Xunit;
namespace Dapper.Tests namespace Dapper.Tests
...@@ -18,7 +15,7 @@ public void Issue261_Decimals() ...@@ -18,7 +15,7 @@ public void Issue261_Decimals()
connection.Execute("create proc #Issue261 @c decimal(10,5) OUTPUT as begin set @c=11.884 end"); connection.Execute("create proc #Issue261 @c decimal(10,5) OUTPUT as begin set @c=11.884 end");
connection.Execute("#Issue261", parameters, commandType: CommandType.StoredProcedure); connection.Execute("#Issue261", parameters, commandType: CommandType.StoredProcedure);
var c = parameters.Get<Decimal>("c"); var c = parameters.Get<Decimal>("c");
c.IsEqualTo(11.884M); Assert.Equal(11.884M, c);
} }
[Fact] [Fact]
...@@ -64,7 +61,7 @@ private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstractApi) ...@@ -64,7 +61,7 @@ private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstractApi)
cmd.Parameters.Add(c); cmd.Parameters.Add(c);
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
decimal value = (decimal)c.Value; decimal value = (decimal)c.Value;
value.IsEqualTo(11.884M); Assert.Equal(11.884M, value);
} }
} }
...@@ -72,7 +69,7 @@ private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstractApi) ...@@ -72,7 +69,7 @@ private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstractApi)
public void BasicDecimals() public void BasicDecimals()
{ {
var c = connection.Query<decimal>("select @c", new { c = 11.884M }).Single(); var c = connection.Query<decimal>("select @c", new { c = 11.884M }).Single();
c.IsEqualTo(11.884M); Assert.Equal(11.884M, c);
} }
[Fact] [Fact]
...@@ -103,9 +100,9 @@ public void TestDoubleDecimalConversions_SO18228523_Nulls() ...@@ -103,9 +100,9 @@ public void TestDoubleDecimalConversions_SO18228523_Nulls()
var row = connection.Query<HasDoubleDecimal>( var row = connection.Query<HasDoubleDecimal>(
"select cast(null as decimal) as A, cast(null as decimal) as B, cast(null as float) as C, cast(null as float) as D").Single(); "select cast(null as decimal) as A, cast(null as decimal) as B, cast(null as float) as C, cast(null as float) as D").Single();
row.A.Equals(0.0); row.A.Equals(0.0);
row.B.IsNull(); Assert.Null(row.B);
row.C.Equals(0.0M); row.C.Equals(0.0M);
row.D.IsNull(); Assert.Null(row.D);
} }
private class HasDoubleDecimal private class HasDoubleDecimal
......
...@@ -9,42 +9,42 @@ public class EnumTests : TestBase ...@@ -9,42 +9,42 @@ public class EnumTests : TestBase
[Fact] [Fact]
public void TestEnumWeirdness() public void TestEnumWeirdness()
{ {
connection.Query<TestEnumClass>("select null as [EnumEnum]").First().EnumEnum.IsEqualTo(null); Assert.Null(connection.Query<TestEnumClass>("select null as [EnumEnum]").First().EnumEnum);
connection.Query<TestEnumClass>("select cast(1 as tinyint) as [EnumEnum]").First().EnumEnum.IsEqualTo(TestEnum.Bla); Assert.Equal(TestEnum.Bla, connection.Query<TestEnumClass>("select cast(1 as tinyint) as [EnumEnum]").First().EnumEnum);
} }
[Fact] [Fact]
public void TestEnumStrings() public void TestEnumStrings()
{ {
connection.Query<TestEnumClassNoNull>("select 'BLA' as [EnumEnum]").First().EnumEnum.IsEqualTo(TestEnum.Bla); Assert.Equal(TestEnum.Bla, connection.Query<TestEnumClassNoNull>("select 'BLA' as [EnumEnum]").First().EnumEnum);
connection.Query<TestEnumClassNoNull>("select 'bla' as [EnumEnum]").First().EnumEnum.IsEqualTo(TestEnum.Bla); Assert.Equal(TestEnum.Bla, connection.Query<TestEnumClassNoNull>("select 'bla' as [EnumEnum]").First().EnumEnum);
connection.Query<TestEnumClass>("select 'BLA' as [EnumEnum]").First().EnumEnum.IsEqualTo(TestEnum.Bla); Assert.Equal(TestEnum.Bla, connection.Query<TestEnumClass>("select 'BLA' as [EnumEnum]").First().EnumEnum);
connection.Query<TestEnumClass>("select 'bla' as [EnumEnum]").First().EnumEnum.IsEqualTo(TestEnum.Bla); Assert.Equal(TestEnum.Bla, connection.Query<TestEnumClass>("select 'bla' as [EnumEnum]").First().EnumEnum);
} }
[Fact] [Fact]
public void TestEnumParamsWithNullable() public void TestEnumParamsWithNullable()
{ {
EnumParam a = EnumParam.A; const EnumParam a = EnumParam.A;
EnumParam? b = EnumParam.B, c = null; EnumParam? b = EnumParam.B, c = null;
var obj = connection.Query<EnumParamObject>("select @a as A, @b as B, @c as C", var obj = connection.Query<EnumParamObject>("select @a as A, @b as B, @c as C",
new { a, b, c }).Single(); new { a, b, c }).Single();
obj.A.IsEqualTo(EnumParam.A); Assert.Equal(EnumParam.A, obj.A);
obj.B.IsEqualTo(EnumParam.B); Assert.Equal(EnumParam.B, obj.B);
obj.C.IsEqualTo(null); Assert.Null(obj.C);
} }
[Fact] [Fact]
public void TestEnumParamsWithoutNullable() public void TestEnumParamsWithoutNullable()
{ {
EnumParam a = EnumParam.A; const EnumParam a = EnumParam.A;
EnumParam b = EnumParam.B, c = 0; const EnumParam b = EnumParam.B, c = 0;
var obj = connection.Query<EnumParamObjectNonNullable>("select @a as A, @b as B, @c as C", var obj = connection.Query<EnumParamObjectNonNullable>("select @a as A, @b as B, @c as C",
new { a, b, c }).Single(); new { a, b, c }).Single();
obj.A.IsEqualTo(EnumParam.A); Assert.Equal(EnumParam.A, obj.A);
obj.B.IsEqualTo(EnumParam.B); Assert.Equal(EnumParam.B, obj.B);
obj.C.IsEqualTo((EnumParam)0); Assert.Equal(obj.C, (EnumParam)0);
} }
private enum EnumParam : short private enum EnumParam : short
...@@ -96,7 +96,7 @@ public void AdoNetEnumValue() ...@@ -96,7 +96,7 @@ public void AdoNetEnumValue()
cmd.Parameters.Add(p); cmd.Parameters.Add(p);
object value = cmd.ExecuteScalar(); object value = cmd.ExecuteScalar();
AnEnum val = (AnEnum)value; AnEnum val = (AnEnum)value;
val.IsEqualTo(AnEnum.B); Assert.Equal(AnEnum.B, val);
} }
} }
...@@ -123,7 +123,7 @@ public SO27024806Class(SO27024806Enum myField) ...@@ -123,7 +123,7 @@ public SO27024806Class(SO27024806Enum myField)
public void SO27024806_TestVarcharEnumMemberWithExplicitConstructor() public void SO27024806_TestVarcharEnumMemberWithExplicitConstructor()
{ {
var foo = connection.Query<SO27024806Class>("SELECT 'Foo' AS myField").Single(); var foo = connection.Query<SO27024806Class>("SELECT 'Foo' AS myField").Single();
foo.MyField.IsEqualTo(SO27024806Enum.Foo); Assert.Equal(SO27024806Enum.Foo, foo.MyField);
} }
} }
} }
using System.Collections.Generic;
namespace Dapper.Tests
{
public static class Assert
{
public static void IsEqualTo<T>(this T actual, T expected)
{
Xunit.Assert.Equal(expected, actual);
}
public static void IsSequenceEqualTo<T>(this IEnumerable<T> actual, IEnumerable<T> expected)
{
Xunit.Assert.Equal(expected, actual ?? new T[0]);
}
public static void IsMoreThan(this int a, int b)
{
Xunit.Assert.True(a > b, $"{a} should be larger than {b}");
}
public static void IsMoreThan(this long a, int b)
{
Xunit.Assert.True(a > b, $"{a} should be larger than {b}");
}
public static void Fail(string message = null)
{
Xunit.Assert.True(false, message ?? "Expectation failed");
}
public static void IsFalse(this bool b)
{
Xunit.Assert.False(b);
}
public static void IsTrue(this bool b)
{
Xunit.Assert.True(b);
}
public static void IsNull(this object obj)
{
Xunit.Assert.Null(obj);
}
public static void IsNotNull(this object obj)
{
Xunit.Assert.NotNull(obj);
}
}
}
...@@ -4,20 +4,6 @@ ...@@ -4,20 +4,6 @@
namespace Dapper.Tests namespace Dapper.Tests
{ {
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class FactUnlessCoreCLRAttribute : FactAttribute
{
public FactUnlessCoreCLRAttribute(string url)
{
#if COREFX
Skip = $"CoreFX: {url}";
#endif
this.Url = url;
}
public string Url { get; }
}
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class FactLongRunningAttribute : FactAttribute public sealed class FactLongRunningAttribute : FactAttribute
{ {
...@@ -31,6 +17,7 @@ public FactLongRunningAttribute() ...@@ -31,6 +17,7 @@ public FactLongRunningAttribute()
public string Url { get; private set; } public string Url { get; private set; }
} }
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class FactRequiredCompatibilityLevelAttribute : FactAttribute public class FactRequiredCompatibilityLevelAttribute : FactAttribute
{ {
public FactRequiredCompatibilityLevelAttribute(int level) : base() public FactRequiredCompatibilityLevelAttribute(int level) : base()
...@@ -56,6 +43,7 @@ static FactRequiredCompatibilityLevelAttribute() ...@@ -56,6 +43,7 @@ static FactRequiredCompatibilityLevelAttribute()
} }
} }
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class FactUnlessCaseSensitiveDatabaseAttribute : FactAttribute public class FactUnlessCaseSensitiveDatabaseAttribute : FactAttribute
{ {
public FactUnlessCaseSensitiveDatabaseAttribute() : base() public FactUnlessCaseSensitiveDatabaseAttribute() : base()
......
using System; using System;
using System.Data; using System.Data;
using System.Data.Common; using System.Data.Common;
using Xunit;
namespace Dapper.Tests namespace Dapper.Tests
{ {
...@@ -12,48 +13,48 @@ public static void DapperEnumValue(IDbConnection connection) ...@@ -12,48 +13,48 @@ public static void DapperEnumValue(IDbConnection connection)
{ {
// test passing as AsEnum, reading as int // test passing as AsEnum, reading as int
var v = (AnEnum)connection.QuerySingle<int>("select @v, @y, @z", new { v = AnEnum.B, y = (AnEnum?)AnEnum.B, z = (AnEnum?)null }); var v = (AnEnum)connection.QuerySingle<int>("select @v, @y, @z", new { v = AnEnum.B, y = (AnEnum?)AnEnum.B, z = (AnEnum?)null });
v.IsEqualTo(AnEnum.B); Assert.Equal(AnEnum.B, v);
var args = new DynamicParameters(); var args = new DynamicParameters();
args.Add("v", AnEnum.B); args.Add("v", AnEnum.B);
args.Add("y", AnEnum.B); args.Add("y", AnEnum.B);
args.Add("z", null); args.Add("z", null);
v = (AnEnum)connection.QuerySingle<int>("select @v, @y, @z", args); v = (AnEnum)connection.QuerySingle<int>("select @v, @y, @z", args);
v.IsEqualTo(AnEnum.B); Assert.Equal(AnEnum.B, v);
// test passing as int, reading as AnEnum // test passing as int, reading as AnEnum
var k = (int)connection.QuerySingle<AnEnum>("select @v, @y, @z", new { v = (int)AnEnum.B, y = (int?)(int)AnEnum.B, z = (int?)null }); var k = (int)connection.QuerySingle<AnEnum>("select @v, @y, @z", new { v = (int)AnEnum.B, y = (int?)(int)AnEnum.B, z = (int?)null });
k.IsEqualTo((int)AnEnum.B); Assert.Equal(k, (int)AnEnum.B);
args = new DynamicParameters(); args = new DynamicParameters();
args.Add("v", (int)AnEnum.B); args.Add("v", (int)AnEnum.B);
args.Add("y", (int)AnEnum.B); args.Add("y", (int)AnEnum.B);
args.Add("z", null); args.Add("z", null);
k = (int)connection.QuerySingle<AnEnum>("select @v, @y, @z", args); k = (int)connection.QuerySingle<AnEnum>("select @v, @y, @z", args);
k.IsEqualTo((int)AnEnum.B); Assert.Equal(k, (int)AnEnum.B);
} }
public static void TestDateTime(DbConnection connection) public static void TestDateTime(DbConnection connection)
{ {
DateTime? now = DateTime.UtcNow; DateTime? now = DateTime.UtcNow;
try { connection.Execute("DROP TABLE Persons"); } catch { /* don't care */ } try { connection.Execute("DROP TABLE Persons"); } catch { /* don't care */ }
connection.Execute(@"CREATE TABLE Persons (id int not null, dob datetime null)"); connection.Execute("CREATE TABLE Persons (id int not null, dob datetime null)");
connection.Execute(@"INSERT Persons (id, dob) values (@id, @dob)", connection.Execute("INSERT Persons (id, dob) values (@id, @dob)",
new { id = 7, dob = (DateTime?)null }); new { id = 7, dob = (DateTime?)null });
connection.Execute(@"INSERT Persons (id, dob) values (@id, @dob)", connection.Execute("INSERT Persons (id, dob) values (@id, @dob)",
new { id = 42, dob = now }); new { id = 42, dob = now });
var row = connection.QueryFirstOrDefault<NullableDatePerson>( var row = connection.QueryFirstOrDefault<NullableDatePerson>(
"SELECT id, dob, dob as dob2 FROM Persons WHERE id=@id", new { id = 7 }); "SELECT id, dob, dob as dob2 FROM Persons WHERE id=@id", new { id = 7 });
row.IsNotNull(); Assert.NotNull(row);
row.Id.IsEqualTo(7); Assert.Equal(7, row.Id);
row.DoB.IsNull(); Assert.Null(row.DoB);
row.DoB2.IsNull(); Assert.Null(row.DoB2);
row = connection.QueryFirstOrDefault<NullableDatePerson>( row = connection.QueryFirstOrDefault<NullableDatePerson>(
"SELECT id, dob FROM Persons WHERE id=@id", new { id = 42 }); "SELECT id, dob FROM Persons WHERE id=@id", new { id = 42 });
row.IsNotNull(); Assert.NotNull(row);
row.Id.IsEqualTo(42); Assert.Equal(42, row.Id);
row.DoB.Equals(now); row.DoB.Equals(now);
row.DoB2.Equals(now); row.DoB2.Equals(now);
} }
......
...@@ -38,10 +38,10 @@ public void LiteralReplacementDynamicEnumAndString() ...@@ -38,10 +38,10 @@ public void LiteralReplacementDynamicEnumAndString()
public void LiteralReplacementBoolean() public void LiteralReplacementBoolean()
{ {
var row = connection.Query<int?>("select 42 where 1 = {=val}", new { val = true }).SingleOrDefault(); var row = connection.Query<int?>("select 42 where 1 = {=val}", new { val = true }).SingleOrDefault();
row.IsNotNull(); Assert.NotNull(row);
row.IsEqualTo(42); Assert.Equal(42, row);
row = connection.Query<int?>("select 42 where 1 = {=val}", new { val = false }).SingleOrDefault(); row = connection.Query<int?>("select 42 where 1 = {=val}", new { val = false }).SingleOrDefault();
row.IsNull(); Assert.Null(row);
} }
[Fact] [Fact]
...@@ -67,7 +67,7 @@ public void LiteralIn() ...@@ -67,7 +67,7 @@ public void LiteralIn()
}); });
var count = connection.Query<int>("select count(1) from #literalin where id in {=ids}", var count = connection.Query<int>("select count(1) from #literalin where id in {=ids}",
new { ids = new[] { 1, 3, 4 } }).Single(); new { ids = new[] { 1, 3, 4 } }).Single();
count.IsEqualTo(2); Assert.Equal(2, count);
} }
[Fact] [Fact]
...@@ -78,9 +78,9 @@ public void LiteralReplacement() ...@@ -78,9 +78,9 @@ public void LiteralReplacement()
var rows = new[] { new { id = 1, foo = 2 }, new { id = 3, foo = 4 } }; var rows = new[] { new { id = 1, foo = 2 }, new { id = 3, foo = 4 } };
connection.Execute("insert #literal1 (id,foo) values ({=id}, @foo)", rows); connection.Execute("insert #literal1 (id,foo) values ({=id}, @foo)", rows);
var count = connection.Query<int>("select count(1) from #literal1 where id={=foo}", new { foo = 123 }).Single(); var count = connection.Query<int>("select count(1) from #literal1 where id={=foo}", new { foo = 123 }).Single();
count.IsEqualTo(1); Assert.Equal(1, count);
int sum = connection.Query<int>("select sum(id) + sum(foo) from #literal1").Single(); int sum = connection.Query<int>("select sum(id) + sum(foo) from #literal1").Single();
sum.IsEqualTo(123 + 456 + 1 + 2 + 3 + 4); Assert.Equal(sum, 123 + 456 + 1 + 2 + 3 + 4);
} }
[Fact] [Fact]
...@@ -94,7 +94,7 @@ public void LiteralReplacementDynamic() ...@@ -94,7 +94,7 @@ public void LiteralReplacementDynamic()
args = new DynamicParameters(); args = new DynamicParameters();
args.Add("foo", 123); args.Add("foo", 123);
var count = connection.Query<int>("select count(1) from #literal2 where id={=foo}", args).Single(); var count = connection.Query<int>("select count(1) from #literal2 where id={=foo}", args).Single();
count.IsEqualTo(1); Assert.Equal(1, count);
} }
} }
} }
This diff is collapsed.
This diff is collapsed.
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using System.Linq; using System.Linq;
namespace Dapper.Tests namespace Dapper.Tests
{ {
[Collection(NonParallelDefinition.Name)]
public class NullTests : TestBase public class NullTests : TestBase
{ {
[Fact] [Fact]
...@@ -33,30 +34,30 @@ private void TestNullable(bool applyNulls) ...@@ -33,30 +34,30 @@ private void TestNullable(bool applyNulls)
var obj = data[2]; var obj = data[2];
obj.Id.IsEqualTo(2); Assert.Equal(2, obj.Id);
obj.A.IsEqualTo(42); Assert.Equal(42, obj.A);
obj.B.IsEqualTo(42); Assert.Equal(42, obj.B);
obj.C.IsEqualTo("abc"); Assert.Equal("abc", obj.C);
obj.D.IsEqualTo(AnEnum.A); Assert.Equal(AnEnum.A, obj.D);
obj.E.IsEqualTo(AnEnum.A); Assert.Equal(AnEnum.A, obj.E);
obj = data[1]; obj = data[1];
obj.Id.IsEqualTo(1); Assert.Equal(1, obj.Id);
if (applyNulls) if (applyNulls)
{ {
obj.A.IsEqualTo(2); // cannot be null Assert.Equal(2, obj.A); // cannot be null
obj.B.IsEqualTo(null); Assert.Null(obj.B);
obj.C.IsEqualTo(null); Assert.Null(obj.C);
obj.D.IsEqualTo(AnEnum.B); Assert.Equal(AnEnum.B, obj.D);
obj.E.IsEqualTo(null); Assert.Null(obj.E);
} }
else else
{ {
obj.A.IsEqualTo(2); Assert.Equal(2, obj.A);
obj.B.IsEqualTo(2); Assert.Equal(2, obj.B);
obj.C.IsEqualTo("def"); Assert.Equal("def", obj.C);
obj.D.IsEqualTo(AnEnum.B); Assert.Equal(AnEnum.B, obj.D);
obj.E.IsEqualTo(AnEnum.B); Assert.Equal(AnEnum.B, obj.E);
} }
} finally } finally
{ {
......
This diff is collapsed.
...@@ -26,7 +26,7 @@ @Bar int ...@@ -26,7 +26,7 @@ @Bar int
var args = new DynamicParameters(obj); var args = new DynamicParameters(obj);
args.Add("ID", 0, direction: ParameterDirection.Output); args.Add("ID", 0, direction: ParameterDirection.Output);
connection.Execute("#TestProcWithOutParameter", args, commandType: CommandType.StoredProcedure); connection.Execute("#TestProcWithOutParameter", args, commandType: CommandType.StoredProcedure);
args.Get<int>("ID").IsEqualTo(7); Assert.Equal(7, args.Get<int>("ID"));
} }
[Fact] [Fact]
...@@ -50,8 +50,8 @@ @Bar int ...@@ -50,8 +50,8 @@ @Bar int
args.Add("ID", 0, direction: ParameterDirection.Output); args.Add("ID", 0, direction: ParameterDirection.Output);
args.Add("result", 0, direction: ParameterDirection.ReturnValue); args.Add("result", 0, direction: ParameterDirection.ReturnValue);
connection.Execute("#TestProcWithOutAndReturnParameter", args, commandType: CommandType.StoredProcedure); connection.Execute("#TestProcWithOutAndReturnParameter", args, commandType: CommandType.StoredProcedure);
args.Get<int>("ID").IsEqualTo(7); Assert.Equal(7, args.Get<int>("ID"));
args.Get<int>("result").IsEqualTo(42); Assert.Equal(42, args.Get<int>("result"));
} }
[Fact] [Fact]
...@@ -78,12 +78,12 @@ public void TestIssue17648290() ...@@ -78,12 +78,12 @@ public void TestIssue17648290()
END"); END");
var result = connection.Query(sql: "#up_MessageProcessed_get", param: p, commandType: CommandType.StoredProcedure); var result = connection.Query(sql: "#up_MessageProcessed_get", param: p, commandType: CommandType.StoredProcedure);
var row = result.Single(); var row = result.Single();
((int)row.MessageProcessID).IsEqualTo(2); Assert.Equal(2, (int)row.MessageProcessID);
((int)row.StartNum).IsEqualTo(38349348); Assert.Equal(38349348, (int)row.StartNum);
((int)row.EndNum).IsEqualTo(3874900); Assert.Equal(3874900, (int)row.EndNum);
DateTime startDate = row.StartDate, endDate = row.EndDate; DateTime startDate = row.StartDate, endDate = row.EndDate;
p.Get<int>("SuccessCode").IsEqualTo(0); Assert.Equal(0, p.Get<int>("SuccessCode"));
p.Get<string>("ErrorDescription").IsEqualTo("Completed successfully"); Assert.Equal("Completed successfully", p.Get<string>("ErrorDescription"));
} }
[Fact] [Fact]
...@@ -97,13 +97,13 @@ public void SO24605346_ProcsAndStrings() ...@@ -97,13 +97,13 @@ public void SO24605346_ProcsAndStrings()
TaxInvoiceNumber = InvoiceNumber TaxInvoiceNumber = InvoiceNumber
}, commandType: CommandType.StoredProcedure).FirstOrDefault(); }, commandType: CommandType.StoredProcedure).FirstOrDefault();
result.TaxInvoiceNumber.IsEqualTo("INV0000000028PPN"); Assert.Equal("INV0000000028PPN", result.TaxInvoiceNumber);
} }
private class PracticeRebateOrders private class PracticeRebateOrders
{ {
public string fTaxInvoiceNumber; public string fTaxInvoiceNumber;
#if !COREFX #if !NETCOREAPP1_0
[System.Xml.Serialization.XmlElement(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] [System.Xml.Serialization.XmlElement(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
#endif #endif
public string TaxInvoiceNumber public string TaxInvoiceNumber
...@@ -125,8 +125,8 @@ public void Issue327_ReadEmptyProcedureResults() ...@@ -125,8 +125,8 @@ public void Issue327_ReadEmptyProcedureResults()
var query = connection.QueryMultiple("#TestEmptyResults", commandType: CommandType.StoredProcedure); var query = connection.QueryMultiple("#TestEmptyResults", commandType: CommandType.StoredProcedure);
var result1 = query.Read<Issue327_Person>(); var result1 = query.Read<Issue327_Person>();
var result2 = query.Read<Issue327_Magic>(); var result2 = query.Read<Issue327_Magic>();
result1.Any().IsFalse(); Assert.False(result1.Any());
result2.Any().IsFalse(); Assert.False(result2.Any());
} }
private class Issue327_Person private class Issue327_Person
...@@ -159,10 +159,10 @@ public void TestProcSupport() ...@@ -159,10 +159,10 @@ public void TestProcSupport()
select 1111 select 1111
return @a return @a
end"); end");
connection.Query<int>("#TestProc", p, commandType: CommandType.StoredProcedure).First().IsEqualTo(1111); Assert.Equal(1111, connection.Query<int>("#TestProc", p, commandType: CommandType.StoredProcedure).First());
p.Get<int>("c").IsEqualTo(11); Assert.Equal(11, p.Get<int>("c"));
p.Get<int>("b").IsEqualTo(999); Assert.Equal(999, p.Get<int>("b"));
} }
// https://stackoverflow.com/q/8593871 // https://stackoverflow.com/q/8593871
...@@ -178,10 +178,10 @@ public void TestListOfAnsiStrings() ...@@ -178,10 +178,10 @@ public void TestListOfAnsiStrings()
} }
}).ToList(); }).ToList();
results.Count.IsEqualTo(2); Assert.Equal(2, results.Count);
results.Sort(); results.Sort();
results[0].IsEqualTo("a"); Assert.Equal("a", results[0]);
results[1].IsEqualTo("b"); Assert.Equal("b", results[1]);
} }
} }
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
namespace Dapper.Tests.Providers namespace Dapper.Tests.Providers
{ {
[Collection("TypeHandlerTests")]
public class EntityFrameworkTests : TestBase public class EntityFrameworkTests : TestBase
{ {
public EntityFrameworkTests() public EntityFrameworkTests()
...@@ -23,8 +24,8 @@ public void Issue570_DbGeo_HasValues() ...@@ -23,8 +24,8 @@ public void Issue570_DbGeo_HasValues()
var fromDb = connection.QuerySingle<DbGeography>("declare @geos table(geo geography); insert @geos(geo) values(@val); select * from @geos", var fromDb = connection.QuerySingle<DbGeography>("declare @geos table(geo geography); insert @geos(geo) values(@val); select * from @geos",
new { val = orig }); new { val = orig });
fromDb.Area.IsNotNull(); Assert.NotNull(fromDb.Area);
fromDb.Area.IsEqualTo(orig.Area); Assert.Equal(orig.Area, fromDb.Area);
} }
#endif #endif
...@@ -33,7 +34,7 @@ public void Issue22_ExecuteScalar_EntityFramework() ...@@ -33,7 +34,7 @@ public void Issue22_ExecuteScalar_EntityFramework()
{ {
var geo = DbGeography.LineFromText("LINESTRING(-122.360 47.656, -122.343 47.656 )", 4326); var geo = DbGeography.LineFromText("LINESTRING(-122.360 47.656, -122.343 47.656 )", 4326);
var geo2 = connection.ExecuteScalar<DbGeography>("select @geo", new { geo }); var geo2 = connection.ExecuteScalar<DbGeography>("select @geo", new { geo });
geo2.IsNotNull(); Assert.NotNull(geo2);
} }
} }
} }
......
#if FIREBIRD using FirebirdSql.Data.FirebirdClient;
using FirebirdSql.Data.FirebirdClient;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
...@@ -11,12 +10,12 @@ public class FirebirdTests : TestBase ...@@ -11,12 +10,12 @@ public class FirebirdTests : TestBase
[Fact(Skip = "Bug in Firebird; a PR to fix it has been submitted")] [Fact(Skip = "Bug in Firebird; a PR to fix it has been submitted")]
public void Issue178_Firebird() public void Issue178_Firebird()
{ {
const string cs = @"initial catalog=localhost:database;user id=SYSDBA;password=masterkey"; const string cs = "initial catalog=localhost:database;user id=SYSDBA;password=masterkey";
using (var connection = new FbConnection(cs)) using (var connection = new FbConnection(cs))
{ {
connection.Open(); connection.Open();
const string sql = @"select count(*) from Issue178"; const string sql = "select count(*) from Issue178";
try { connection.Execute("drop table Issue178"); } try { connection.Execute("drop table Issue178"); }
catch { /* don't care */ } catch { /* don't care */ }
connection.Execute("create table Issue178(id int not null)"); connection.Execute("create table Issue178(id int not null)");
...@@ -25,25 +24,24 @@ public void Issue178_Firebird() ...@@ -25,25 +24,24 @@ public void Issue178_Firebird()
using (var sqlCmd = new FbCommand(sql, connection)) using (var sqlCmd = new FbCommand(sql, connection))
using (IDataReader reader1 = sqlCmd.ExecuteReader()) using (IDataReader reader1 = sqlCmd.ExecuteReader())
{ {
Assert.IsTrue(reader1.Read()); Assert.True(reader1.Read());
reader1.GetInt32(0).IsEqualTo(1); Assert.Equal(1, reader1.GetInt32(0));
Assert.IsFalse(reader1.Read()); Assert.False(reader1.Read());
Assert.IsFalse(reader1.NextResult()); Assert.False(reader1.NextResult());
} }
// dapper // dapper
using (var reader2 = connection.ExecuteReader(sql)) using (var reader2 = connection.ExecuteReader(sql))
{ {
Assert.IsTrue(reader2.Read()); Assert.True(reader2.Read());
reader2.GetInt32(0).IsEqualTo(1); Assert.Equal(1, reader2.GetInt32(0));
Assert.IsFalse(reader2.Read()); Assert.False(reader2.Read());
Assert.IsFalse(reader2.NextResult()); Assert.False(reader2.NextResult());
} }
var count = connection.Query<int>(sql).Single(); var count = connection.Query<int>(sql).Single();
count.IsEqualTo(1); Assert.Equal(1, count);
} }
} }
} }
} }
#endif \ No newline at end of file
\ No newline at end of file
...@@ -19,7 +19,7 @@ public void TestLinqBinaryToClass() ...@@ -19,7 +19,7 @@ public void TestLinqBinaryToClass()
var output = connection.Query<WithBinary>("select @input as [Value]", new { input }).First().Value; var output = connection.Query<WithBinary>("select @input as [Value]", new { input }).First().Value;
output.ToArray().IsSequenceEqualTo(orig); Assert.Equal(orig, output.ToArray());
} }
[Fact] [Fact]
...@@ -31,13 +31,33 @@ public void TestLinqBinaryRaw() ...@@ -31,13 +31,33 @@ public void TestLinqBinaryRaw()
var output = connection.Query<System.Data.Linq.Binary>("select @input as [Value]", new { input }).First(); var output = connection.Query<System.Data.Linq.Binary>("select @input as [Value]", new { input }).First();
output.ToArray().IsSequenceEqualTo(orig); Assert.Equal(orig, output.ToArray());
} }
private class WithBinary private class WithBinary
{ {
public System.Data.Linq.Binary Value { get; set; } public System.Data.Linq.Binary Value { get; set; }
} }
private class NoDefaultConstructorWithBinary
{
public System.Data.Linq.Binary Value { get; set; }
public int Ynt { get; set; }
public NoDefaultConstructorWithBinary(System.Data.Linq.Binary val)
{
Value = val;
}
}
[Fact]
public void TestNoDefaultConstructorBinary()
{
byte[] orig = new byte[20];
new Random(123456).NextBytes(orig);
var input = new System.Data.Linq.Binary(orig);
var output = connection.Query<NoDefaultConstructorWithBinary>("select @input as val", new { input }).First().Value;
Assert.Equal(orig, output.ToArray());
}
} }
} }
#endif #endif
\ No newline at end of file
#if MYSQL using System;
using System;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
...@@ -55,14 +54,14 @@ public void Issue552_SignedUnsignedBooleans() ...@@ -55,14 +54,14 @@ public void Issue552_SignedUnsignedBooleans()
var rows = conn.Query<MySqlHasBool>("select * from bar;").ToDictionary(x => x.Id); var rows = conn.Query<MySqlHasBool>("select * from bar;").ToDictionary(x => x.Id);
rows[1].Bool_Val.IsNull(); Assert.Null(rows[1].Bool_Val);
rows[2].Bool_Val.IsEqualTo(false); Assert.False(rows[2].Bool_Val);
rows[3].Bool_Val.IsEqualTo(true); Assert.True(rows[3].Bool_Val);
rows[4].Bool_Val.IsNull(); Assert.Null(rows[4].Bool_Val);
rows[5].Bool_Val.IsEqualTo(true); Assert.True(rows[5].Bool_Val);
rows[6].Bool_Val.IsEqualTo(false); Assert.False(rows[6].Bool_Val);
rows[7].Bool_Val.IsNull(); Assert.Null(rows[7].Bool_Val);
rows[8].Bool_Val.IsEqualTo(true); Assert.True(rows[8].Bool_Val);
} }
} }
...@@ -126,8 +125,8 @@ public void Issue426_SO34439033_DateTimeGainsTicks() ...@@ -126,8 +125,8 @@ public void Issue426_SO34439033_DateTimeGainsTicks()
conn.Execute("replace into Issue426_Test values (@Id,@Time)", localObj); conn.Execute("replace into Issue426_Test values (@Id,@Time)", localObj);
var dbObj = conn.Query<Issue426_Test>("select * from Issue426_Test where Id = @id", new { id = Id }).Single(); var dbObj = conn.Query<Issue426_Test>("select * from Issue426_Test where Id = @id", new { id = Id }).Single();
dbObj.Id.IsEqualTo(Id); Assert.Equal(Id, dbObj.Id);
dbObj.Time.Value.Ticks.IsEqualTo(ticks); Assert.Equal(ticks, dbObj.Time.Value.Ticks);
} }
} }
...@@ -143,10 +142,10 @@ public void SO36303462_Tinyint_Bools() ...@@ -143,10 +142,10 @@ public void SO36303462_Tinyint_Bools()
conn.Execute("insert SO36303462_Test (Id, IsBold) values (3,1);"); conn.Execute("insert SO36303462_Test (Id, IsBold) values (3,1);");
var rows = conn.Query<SO36303462>("select * from SO36303462_Test").ToDictionary(x => x.Id); var rows = conn.Query<SO36303462>("select * from SO36303462_Test").ToDictionary(x => x.Id);
rows.Count.IsEqualTo(3); Assert.Equal(3, rows.Count);
rows[1].IsBold.IsTrue(); Assert.True(rows[1].IsBold);
rows[2].IsBold.IsFalse(); Assert.False(rows[2].IsBold);
rows[3].IsBold.IsTrue(); Assert.True(rows[3].IsBold);
} }
} }
...@@ -162,6 +161,7 @@ public class Issue426_Test ...@@ -162,6 +161,7 @@ public class Issue426_Test
public TimeSpan? Time { get; set; } public TimeSpan? Time { get; set; }
} }
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class FactMySqlAttribute : FactAttribute public class FactMySqlAttribute : FactAttribute
{ {
public override string Skip public override string Skip
...@@ -186,4 +186,3 @@ static FactMySqlAttribute() ...@@ -186,4 +186,3 @@ static FactMySqlAttribute()
} }
} }
} }
#endif
This diff is collapsed.
This diff is collapsed.
...@@ -29,11 +29,11 @@ public void MultiRSSqlCE() ...@@ -29,11 +29,11 @@ public void MultiRSSqlCE()
cnn.Execute("insert Posts values(2,'title2','body2',null)"); cnn.Execute("insert Posts values(2,'title2','body2',null)");
cnn.Execute("insert Authors values(1,'sam')"); cnn.Execute("insert Authors values(1,'sam')");
var data = cnn.Query<PostCE, AuthorCE, PostCE>(@"select * from Posts p left join Authors a on a.ID = p.AuthorID", (post, author) => { post.Author = author; return post; }).ToList(); var data = cnn.Query<PostCE, AuthorCE, PostCE>("select * from Posts p left join Authors a on a.ID = p.AuthorID", (post, author) => { post.Author = author; return post; }).ToList();
var firstPost = data[0]; var firstPost = data[0];
firstPost.Title.IsEqualTo("title"); Assert.Equal("title", firstPost.Title);
firstPost.Author.Name.IsEqualTo("sam"); Assert.Equal("sam", firstPost.Author.Name);
data[1].Author.IsNull(); Assert.Null(data[1].Author);
} }
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
using System; using System;
using System.Data; using System.Data;
#if !COREFX #if !NETSTANDARD1_3
namespace Dapper namespace Dapper
{ {
internal sealed class DataTableHandler : SqlMapper.ITypeHandler internal sealed class DataTableHandler : SqlMapper.ITypeHandler
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment