varstr=awaitconnection.QueryFirstAsync<string>(newCommandDefinition("select 'abc' as [Value] union all select @txt",new{txt="def"})).ConfigureAwait(false);
varstr=awaitconnection.QueryFirstAsync<string>(newCommandDefinition("select 'abc' as [Value] union all select @txt",new{txt="def"})).ConfigureAwait(false);
varstr=awaitconnection.QueryFirstOrDefaultAsync<string>(newCommandDefinition("select null as [Value] union all select @txt",new{txt="def"})).ConfigureAwait(false);
varstr=awaitconnection.QueryFirstOrDefaultAsync<string>(newCommandDefinition("select null as [Value] union all select @txt",new{txt="def"})).ConfigureAwait(false);
varstr=awaitconnection.QuerySingleOrDefaultAsync("select null as [Value]").ConfigureAwait(false);
Assert.Null(str.Value);
}
}
[Fact]
[Fact]
...
@@ -55,7 +83,7 @@ public async Task TestBasicStringUsageAsyncNonBuffered()
...
@@ -55,7 +83,7 @@ public async Task TestBasicStringUsageAsyncNonBuffered()
{
{
varquery=awaitconnection.QueryAsync<string>(newCommandDefinition("select 'abc' as [Value] union all select @txt",new{txt="def"},flags:CommandFlags.None)).ConfigureAwait(false);
varquery=awaitconnection.QueryAsync<string>(newCommandDefinition("select 'abc' as [Value] union all select @txt",new{txt="def"},flags:CommandFlags.None)).ConfigureAwait(false);
vararr=query.ToArray();
vararr=query.ToArray();
arr.IsSequenceEqualTo(new[]{"abc","def"});
Assert.Equal(new[]{"abc","def"},arr);
}
}
[Fact]
[Fact]
...
@@ -72,7 +100,7 @@ public void TestLongOperationWithCancellation()
...
@@ -72,7 +100,7 @@ public void TestLongOperationWithCancellation()
}
}
catch(AggregateExceptionagg)
catch(AggregateExceptionagg)
{
{
(agg.InnerExceptionisSqlException).IsTrue();
Assert.True(agg.InnerExceptionisSqlException);
}
}
}
}
...
@@ -81,7 +109,7 @@ public async Task TestBasicStringUsageClosedAsync()
...
@@ -81,7 +109,7 @@ public async Task TestBasicStringUsageClosedAsync()
{
{
varquery=awaitconnection.QueryAsync<string>("select 'abc' as [Value] union all select @txt",new{txt="def"}).ConfigureAwait(false);
varquery=awaitconnection.QueryAsync<string>("select 'abc' as [Value] union all select @txt",new{txt="def"}).ConfigureAwait(false);
vararr=query.ToArray();
vararr=query.ToArray();
arr.IsSequenceEqualTo(new[]{"abc","def"});
Assert.Equal(new[]{"abc","def"},arr);
}
}
[Fact]
[Fact]
...
@@ -89,7 +117,7 @@ public async Task TestQueryDynamicAsync()
...
@@ -89,7 +117,7 @@ public async Task TestQueryDynamicAsync()
{
{
varrow=(awaitconnection.QueryAsync("select 'abc' as [Value]").ConfigureAwait(false)).Single();
varrow=(awaitconnection.QueryAsync("select 'abc' as [Value]").ConfigureAwait(false)).Single();
stringvalue=row.Value;
stringvalue=row.Value;
value.IsEqualTo("abc");
Assert.Equal("abc",value);
}
}
[Fact]
[Fact]
...
@@ -97,7 +125,7 @@ public async Task TestClassWithStringUsageAsync()
...
@@ -97,7 +125,7 @@ public async Task TestClassWithStringUsageAsync()
{
{
varquery=awaitconnection.QueryAsync<BasicType>("select 'abc' as [Value] union all select @txt",new{txt="def"}).ConfigureAwait(false);
varquery=awaitconnection.QueryAsync<BasicType>("select 'abc' as [Value] union all select @txt",new{txt="def"}).ConfigureAwait(false);
vardata0=(awaitconnection.QueryAsync<AsyncFoo0>("select 1 as [Id] where 1 = 0").ConfigureAwait(false)).ToList();
vardata0=(awaitconnection.QueryAsync<AsyncFoo0>("select 1 as [Id] where 1 = 0").ConfigureAwait(false)).ToList();
data0.Count.IsEqualTo(0);
Assert.Empty(data0);
vardata1=(awaitconnection.QueryAsync<AsyncFoo1>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.Buffered)).ConfigureAwait(false)).ToList();
vardata1=(awaitconnection.QueryAsync<AsyncFoo1>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.Buffered)).ConfigureAwait(false)).ToList();
data1.Count.IsEqualTo(0);
Assert.Empty(data1);
vardata2=(awaitconnection.QueryAsync<AsyncFoo2>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.None)).ConfigureAwait(false)).ToList();
vardata2=(awaitconnection.QueryAsync<AsyncFoo2>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.None)).ConfigureAwait(false)).ToList();
data2.Count.IsEqualTo(0);
Assert.Empty(data2);
data0=(awaitconnection.QueryAsync<AsyncFoo0>("select 1 as [Id] where 1 = 0").ConfigureAwait(false)).ToList();
data0=(awaitconnection.QueryAsync<AsyncFoo0>("select 1 as [Id] where 1 = 0").ConfigureAwait(false)).ToList();
data0.Count.IsEqualTo(0);
Assert.Empty(data0);
data1=(awaitconnection.QueryAsync<AsyncFoo1>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.Buffered)).ConfigureAwait(false)).ToList();
data1=(awaitconnection.QueryAsync<AsyncFoo1>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.Buffered)).ConfigureAwait(false)).ToList();
data1.Count.IsEqualTo(0);
Assert.Empty(data1);
data2=(awaitconnection.QueryAsync<AsyncFoo2>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.None)).ConfigureAwait(false)).ToList();
data2=(awaitconnection.QueryAsync<AsyncFoo2>(newCommandDefinition("select 1 as [Id] where 1 = 0",flags:CommandFlags.None)).ConfigureAwait(false)).ToList();
data2.Count.IsEqualTo(0);
Assert.Empty(data2);
}
}
privateclassAsyncFoo0{publicintId{get;set;}}
privateclassAsyncFoo0{publicintId{get;set;}}
...
@@ -651,12 +679,12 @@ public async Task TestSchemaChangedViaFirstOrDefaultAsync()
...
@@ -651,12 +679,12 @@ public async Task TestSchemaChangedViaFirstOrDefaultAsync()
try
try
{
{
vard=awaitconnection.QueryFirstOrDefaultAsync<Dog>("select * from #dog").ConfigureAwait(false);
vard=awaitconnection.QueryFirstOrDefaultAsync<Dog>("select * from #dog").ConfigureAwait(false);
d.Name.IsEqualTo("Alf");
Assert.Equal("Alf",d.Name);
d.Age.IsEqualTo(1);
Assert.Equal(1,d.Age);
connection.Execute("alter table #dog drop column Name");
connection.Execute("alter table #dog drop column Name");
d=awaitconnection.QueryFirstOrDefaultAsync<Dog>("select * from #dog").ConfigureAwait(false);
d=awaitconnection.QueryFirstOrDefaultAsync<Dog>("select * from #dog").ConfigureAwait(false);
d.Name.IsNull();
Assert.Null(d.Name);
d.Age.IsEqualTo(1);
Assert.Equal(1,d.Age);
}
}
finally
finally
{
{
...
@@ -723,26 +751,26 @@ public async Task TestMultiMapArbitraryMapsAsync()
...
@@ -723,26 +751,26 @@ public async Task TestMultiMapArbitraryMapsAsync()
NoDefaultConstructorWithEnumnodef=connection.Query<NoDefaultConstructorWithEnum>("select cast(2 as smallint) E1, cast(5 as smallint) n1, cast(null as smallint) n2").First();
NoDefaultConstructorWithEnumnodef=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()
connection.Query<int>("select 1 union all select 2 union all select 3")
Assert.Equal(new[]{1,2,3},connection.Query<int>("select 1 union all select 2 union all select 3"));
.IsSequenceEqualTo(new[]{1,2,3});
}
}
[Fact]
[Fact]
...
@@ -125,12 +124,12 @@ public void TestSchemaChanged()
...
@@ -125,12 +124,12 @@ public void TestSchemaChanged()
try
try
{
{
vard=connection.Query<Dog>("select * from #dog").Single();
vard=connection.Query<Dog>("select * from #dog").Single();
d.Name.IsEqualTo("Alf");
Assert.Equal("Alf",d.Name);
d.Age.IsEqualTo(1);
Assert.Equal(1,d.Age);
connection.Execute("alter table #dog drop column Name");
connection.Execute("alter table #dog drop column Name");
d=connection.Query<Dog>("select * from #dog").Single();
d=connection.Query<Dog>("select * from #dog").Single();
d.Name.IsNull();
Assert.Null(d.Name);
d.Age.IsEqualTo(1);
Assert.Equal(1,d.Age);
}
}
finally
finally
{
{
...
@@ -145,12 +144,12 @@ public void TestSchemaChangedViaFirstOrDefault()
...
@@ -145,12 +144,12 @@ public void TestSchemaChangedViaFirstOrDefault()
try
try
{
{
vard=connection.QueryFirstOrDefault<Dog>("select * from #dog");
vard=connection.QueryFirstOrDefault<Dog>("select * from #dog");
d.Name.IsEqualTo("Alf");
Assert.Equal("Alf",d.Name);
d.Age.IsEqualTo(1);
Assert.Equal(1,d.Age);
connection.Execute("alter table #dog drop column Name");
connection.Execute("alter table #dog drop column Name");
d=connection.QueryFirstOrDefault<Dog>("select * from #dog");
d=connection.QueryFirstOrDefault<Dog>("select * from #dog");
d.Name.IsNull();
Assert.Null(d.Name);
d.Age.IsEqualTo(1);
Assert.Equal(1,d.Age);
}
}
finally
finally
{
{
...
@@ -162,29 +161,38 @@ public void TestSchemaChangedViaFirstOrDefault()
...
@@ -162,29 +161,38 @@ public void TestSchemaChangedViaFirstOrDefault()
publicvoidTest_Single_First_Default()
publicvoidTest_Single_First_Default()
{
{
varsql="select 0 where 1 = 0;";// no rows
varsql="select 0 where 1 = 0;";// no rows
try{connection.QueryFirst<int>(sql);Assert.Fail("QueryFirst, 0");}catch(InvalidOperationExceptionex){ex.Message.IsEqualTo("Sequence contains no elements");}
try{connection.QuerySingle<int>(sql);Assert.Fail("QuerySingle, 0");}catch(InvalidOperationExceptionex){ex.Message.IsEqualTo("Sequence contains no elements");}
sql="select 2 union select 3 order by 1;";// two rows
sql="select 2 union select 3 order by 1;";// two rows
connection.QueryFirst<int>(sql).IsEqualTo(2);
Assert.Equal(2,connection.QueryFirst<int>(sql));
try{connection.QuerySingle<int>(sql);Assert.Fail("QuerySingle, 2");}catch(InvalidOperationExceptionex){ex.Message.IsEqualTo("Sequence contains more than one element");}
try{connection.QuerySingleOrDefault<int>(sql);Assert.Fail("QuerySingleOrDefault, 2");}catch(InvalidOperationExceptionex){ex.Message.IsEqualTo("Sequence contains more than one element");}
Assert.Equal("Sequence contains more than one element",ex.Message);
varrows=connection.Query("select 1 A, 2 B union all select 3, 4").ToList();
varrows=connection.Query("select 1 A, 2 B union all select 3, 4").ToList();
((int)rows[0].A).IsEqualTo(1);
Assert.Equal(1,(int)rows[0].A);
((int)rows[0].B).IsEqualTo(2);
Assert.Equal(2,(int)rows[0].B);
((int)rows[1].A).IsEqualTo(3);
Assert.Equal(3,(int)rows[1].A);
((int)rows[1].B).IsEqualTo(4);
Assert.Equal(4,(int)rows[1].B);
}
}
[Fact]
[Fact]
publicvoidTestStringList()
publicvoidTestStringList()
{
{
connection.Query<string>("select * from (select 'a' as x union all select 'b' union all select 'c') as T where x in @strings",new{strings=new[]{"a","b","c"}})
Assert.Equal(
.IsSequenceEqualTo(new[]{"a","b","c"});
new[]{"a","b","c"},
connection.Query<string>("select * from (select 'a' as x union all select 'b' union all select 'c') as T where x in @strings",new{strings=new[]{"a","b","c"}})
connection.Query<string>("select * from (select 'a' as x union all select 'b' union all select 'c') as T where x in @strings",new{strings=newstring[0]})
);
.IsSequenceEqualTo(newstring[0]);
Assert.Equal(
newstring[0],
connection.Query<string>("select * from (select 'a' as x union all select 'b' union all select 'c') as T where x in @strings",new{strings=newstring[0]})
);
}
}
[Fact]
[Fact]
publicvoidTestExecuteCommand()
publicvoidTestExecuteCommand()
{
{
connection.Execute(@"
Assert.Equal(2,connection.Execute(@"
set nocount on
set nocount on
create table #t(i int)
create table #t(i int)
set nocount off
set nocount off
insert #t
insert #t
select @a a union all select @b
select @a a union all select @b
set nocount on
set nocount on
drop table #t",new{a=1,b=2}).IsEqualTo(2);
drop table #t",new{a=1,b=2}));
}
}
[Fact]
[Fact]
...
@@ -289,10 +300,10 @@ public void TestExecuteMultipleCommand()
...
@@ -289,10 +300,10 @@ public void TestExecuteMultipleCommand()
varobj=connection.Query<WithCharValue>("select @ValueNullable as ValueNullable",newWithCharValue{ValueNullable=c}).Single();
varobj=connection.Query<WithCharValue>("select @ValueNullable as ValueNullable",newWithCharValue{ValueNullable=c}).Single();
obj.ValueNullable.IsEqualTo(test);
Assert.Equal(obj.ValueNullable,test);
}
}
[Fact]
[Fact]
...
@@ -675,61 +686,61 @@ private struct CanHazInt
...
@@ -675,61 +686,61 @@ private struct CanHazInt
[Fact]
[Fact]
publicvoidTestInt16Usage()
publicvoidTestInt16Usage()
{
{
connection.Query<short>("select cast(42 as smallint)").Single().IsEqualTo((short)42);
Assert.Equal(connection.Query<short>("select cast(42 as smallint)").Single(),(short)42);
connection.Query<short?>("select cast(42 as smallint)").Single().IsEqualTo((short?)42);
Assert.Equal(connection.Query<short?>("select cast(42 as smallint)").Single(),(short?)42);
connection.Query<short?>("select cast(null as smallint)").Single().IsEqualTo((short?)null);
Assert.Equal(connection.Query<short?>("select cast(null as smallint)").Single(),(short?)null);
connection.Query<ShortEnum>("select cast(42 as smallint)").Single().IsEqualTo((ShortEnum)42);
Assert.Equal(connection.Query<ShortEnum>("select cast(42 as smallint)").Single(),(ShortEnum)42);
connection.Query<ShortEnum?>("select cast(42 as smallint)").Single().IsEqualTo((ShortEnum?)42);
Assert.Equal(connection.Query<ShortEnum?>("select cast(42 as smallint)").Single(),(ShortEnum?)42);
connection.Query<ShortEnum?>("select cast(null as smallint)").Single().IsEqualTo((ShortEnum?)null);
Assert.Equal(connection.Query<ShortEnum?>("select cast(null as smallint)").Single(),(ShortEnum?)null);
varrow=
varrow=
connection.Query<WithInt16Values>(
connection.Query<WithInt16Values>(
"select cast(1 as smallint) as NonNullableInt16, cast(2 as smallint) as NullableInt16, cast(3 as smallint) as NonNullableInt16Enum, cast(4 as smallint) as NullableInt16Enum")
"select cast(1 as smallint) as NonNullableInt16, cast(2 as smallint) as NullableInt16, cast(3 as smallint) as NonNullableInt16Enum, cast(4 as smallint) as NullableInt16Enum")
"select cast(5 as smallint) as NonNullableInt16, cast(null as smallint) as NullableInt16, cast(6 as smallint) as NonNullableInt16Enum, cast(null as smallint) as NullableInt16Enum")
"select cast(5 as smallint) as NonNullableInt16, cast(null as smallint) as NullableInt16, cast(6 as smallint) as NonNullableInt16Enum, cast(null as smallint) as NullableInt16Enum")
connection.Query<int>("select cast(42 as int)").Single().IsEqualTo((int)42);
Assert.Equal(connection.Query<int>("select cast(42 as int)").Single(),(int)42);
connection.Query<int?>("select cast(42 as int)").Single().IsEqualTo((int?)42);
Assert.Equal(connection.Query<int?>("select cast(42 as int)").Single(),(int?)42);
connection.Query<int?>("select cast(null as int)").Single().IsEqualTo((int?)null);
Assert.Equal(connection.Query<int?>("select cast(null as int)").Single(),(int?)null);
connection.Query<IntEnum>("select cast(42 as int)").Single().IsEqualTo((IntEnum)42);
Assert.Equal(connection.Query<IntEnum>("select cast(42 as int)").Single(),(IntEnum)42);
connection.Query<IntEnum?>("select cast(42 as int)").Single().IsEqualTo((IntEnum?)42);
Assert.Equal(connection.Query<IntEnum?>("select cast(42 as int)").Single(),(IntEnum?)42);
connection.Query<IntEnum?>("select cast(null as int)").Single().IsEqualTo((IntEnum?)null);
Assert.Equal(connection.Query<IntEnum?>("select cast(null as int)").Single(),(IntEnum?)null);
varrow=
varrow=
connection.Query<WithInt32Values>(
connection.Query<WithInt32Values>(
"select cast(1 as int) as NonNullableInt32, cast(2 as int) as NullableInt32, cast(3 as int) as NonNullableInt32Enum, cast(4 as int) as NullableInt32Enum")
"select cast(1 as int) as NonNullableInt32, cast(2 as int) as NullableInt32, cast(3 as int) as NonNullableInt32Enum, cast(4 as int) as NullableInt32Enum")
"select cast(5 as int) as NonNullableInt32, cast(null as int) as NullableInt32, cast(6 as int) as NonNullableInt32Enum, cast(null as int) as NullableInt32Enum")
"select cast(5 as int) as NonNullableInt32, cast(null as int) as NullableInt32, cast(6 as int) as NonNullableInt32Enum, cast(null as int) as NullableInt32Enum")
@@ -12,7 +12,7 @@ public class MultiMapTests : TestBase
...
@@ -12,7 +12,7 @@ public class MultiMapTests : TestBase
publicvoidParentChildIdentityAssociations()
publicvoidParentChildIdentityAssociations()
{
{
varlookup=newDictionary<int,Parent>();
varlookup=newDictionary<int,Parent>();
varparents=connection.Query<Parent,Child,Parent>(@"select 1 as [Id], 1 as [Id] union all select 1,2 union all select 2,3 union all select 1,4 union all select 3,5",
varparents=connection.Query<Parent,Child,Parent>("select 1 as [Id], 1 as [Id] union all select 1,2 union all select 2,3 union all select 1,4 union all select 3,5",
(parent,child)=>
(parent,child)=>
{
{
if(!lookup.TryGetValue(parent.Id,outParentfound))
if(!lookup.TryGetValue(parent.Id,outParentfound))
...
@@ -22,10 +22,10 @@ public void ParentChildIdentityAssociations()
...
@@ -22,10 +22,10 @@ public void ParentChildIdentityAssociations()
connection.Query<int>("select * from (select 1 as Id union all select 2 union all select 3) as X where Id in @Ids",new{Ids=newint[]{1,2,3}.AsEnumerable()})
Assert.Equal(
.IsSequenceEqualTo(new[]{1,2,3});
new[]{1,2,3},
connection.Query<int>("select * from (select 1 as Id union all select 2 union all select 3) as X where Id in @Ids",new{Ids=newint[]{1,2,3}.AsEnumerable()})
);
}
}
[Fact]
[Fact]
publicvoidPassInEmptyIntArray()
publicvoidPassInEmptyIntArray()
{
{
connection.Query<int>("select * from (select 1 as Id union all select 2 union all select 3) as X where Id in @Ids",new{Ids=newint[0]})
Assert.Equal(
.IsSequenceEqualTo(newint[0]);
newint[0],
connection.Query<int>("select * from (select 1 as Id union all select 2 union all select 3) as X where Id in @Ids",new{Ids=newint[0]})
);
}
}
[Fact]
[Fact]
...
@@ -157,8 +158,8 @@ public void TestExecuteCommandWithHybridParameters()
...
@@ -157,8 +158,8 @@ public void TestExecuteCommandWithHybridParameters()
vardata=cnn.Query<PostCE,AuthorCE,PostCE>(@"select * from Posts p left join Authors a on a.ID = p.AuthorID",(post,author)=>{post.Author=author;returnpost;}).ToList();
vardata=cnn.Query<PostCE,AuthorCE,PostCE>("select * from Posts p left join Authors a on a.ID = p.AuthorID",(post,author)=>{post.Author=author;returnpost;}).ToList();
ex.Message.IsEqualTo("The reader has been disposed; this can happen after all data has been consumed\r\nObject name: 'Dapper.SqlMapper+GridReader'.");
Assert.Equal("The reader has been disposed; this can happen after all data has been consumed\r\nObject name: 'Dapper.SqlMapper+GridReader'.",ex.Message);
}
}
one.Length.IsEqualTo(1);
Assert.Single(one);
one[0].IsEqualTo(1);
Assert.Equal(1,one[0]);
two.Length.IsEqualTo(0);
Assert.Empty(two);
three.Length.IsEqualTo(0);
Assert.Empty(three);
four.Length.IsEqualTo(1);
Assert.Single(four);
four[0].IsEqualTo(4);
Assert.Equal(4,four[0]);
}
}
}
}
...
@@ -261,17 +254,17 @@ public void TypeBasedViaTypeMulti()
...
@@ -261,17 +254,17 @@ public void TypeBasedViaTypeMulti()
Assert.Equal("ValueTuple should not be used for parameters - the language-level names are not available to use as parameter names, and it adds unnecessary boxing",ex.Message);
ex.Message.IsEqualTo("ValueTuple should not be used for parameters - the language-level names are not available to use as parameter names, and it adds unnecessary boxing");