Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
Dapper
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
Dapper
Commits
76c2e186
Commit
76c2e186
authored
Aug 20, 2017
by
Nick Craver
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More test fixes
parent
4637c100
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
97 additions
and
116 deletions
+97
-116
DataReaderTests.cs
Dapper.Tests/DataReaderTests.cs
+28
-43
NullTests.cs
Dapper.Tests/NullTests.cs
+1
-1
TypeHandlerTests.cs
Dapper.Tests/TypeHandlerTests.cs
+68
-72
No files found.
Dapper.Tests/DataReaderTests.cs
View file @
76c2e186
...
@@ -4,42 +4,38 @@
...
@@ -4,42 +4,38 @@
namespace
Dapper.Tests
namespace
Dapper.Tests
{
{
public
partial
class
DataReaderTests
:
TestBase
public
class
DataReaderTests
:
TestBase
{
{
[
Collection
(
"QueryCacheTests"
)
]
[
Fact
]
public
class
DataReaderQueryCacheTests
:
TestBase
public
void
GetSameReaderForSameShape
()
{
{
[
Fact
]
var
origReader
=
connection
.
ExecuteReader
(
"select 'abc' as Name, 123 as Id"
);
public
void
GetSameReaderForSameShape
()
var
origParser
=
origReader
.
GetRowParser
(
typeof
(
HazNameId
));
{
var
origReader
=
connection
.
ExecuteReader
(
"select 'abc' as Name, 123 as Id"
);
var
origParser
=
origReader
.
GetRowParser
(
typeof
(
HazNameId
));
var
typedParser
=
origReader
.
GetRowParser
<
HazNameId
>();
var
typedParser
=
origReader
.
GetRowParser
<
HazNameId
>();
ReferenceEquals
(
origParser
,
typedParser
).
IsEqualTo
(
true
);
ReferenceEquals
(
origParser
,
typedParser
).
IsEqualTo
(
true
);
var
list
=
origReader
.
Parse
<
HazNameId
>().
ToList
();
var
list
=
origReader
.
Parse
<
HazNameId
>().
ToList
();
list
.
Count
.
IsEqualTo
(
1
);
list
.
Count
.
IsEqualTo
(
1
);
list
[
0
].
Name
.
IsEqualTo
(
"abc"
);
list
[
0
].
Name
.
IsEqualTo
(
"abc"
);
list
[
0
].
Id
.
IsEqualTo
(
123
);
list
[
0
].
Id
.
IsEqualTo
(
123
);
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"
);
var
secondParser
=
secondReader
.
GetRowParser
(
typeof
(
HazNameId
));
var
secondParser
=
secondReader
.
GetRowParser
(
typeof
(
HazNameId
));
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
);
list
.
Count
.
IsEqualTo
(
1
);
list
[
0
].
Name
.
IsEqualTo
(
"abc"
);
list
[
0
].
Name
.
IsEqualTo
(
"abc"
);
list
[
0
].
Id
.
IsEqualTo
(
123
);
list
[
0
].
Id
.
IsEqualTo
(
123
);
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
);
ReferenceEquals
(
origReader
,
secondReader
).
IsEqualTo
(
false
);
ReferenceEquals
(
origParser
,
secondParser
).
IsEqualTo
(
true
);
ReferenceEquals
(
origParser
,
secondParser
).
IsEqualTo
(
true
);
ReferenceEquals
(
secondParser
,
thirdParser
).
IsEqualTo
(
false
);
ReferenceEquals
(
secondParser
,
thirdParser
).
IsEqualTo
(
false
);
}
}
}
[
Fact
]
[
Fact
]
...
@@ -141,18 +137,13 @@ private abstract class Discriminated_BaseType
...
@@ -141,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
...
@@ -164,20 +155,14 @@ private class DiscriminatedWithMultiMapping_Foo : DiscriminatedWithMultiMapping_
...
@@ -164,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
Dapper.Tests/NullTests.cs
View file @
76c2e186
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
using
System.Linq
;
using
System.Linq
;
namespace
Dapper.Tests
namespace
Dapper.Tests
{
{
[
Collection
(
"QueryCacheTests"
)]
[
Collection
(
NonParallelDefinition
.
Name
)]
public
class
NullTests
:
TestBase
public
class
NullTests
:
TestBase
{
{
[
Fact
]
[
Fact
]
...
...
Dapper.Tests/TypeHandlerTests.cs
View file @
76c2e186
...
@@ -8,96 +8,92 @@
...
@@ -8,96 +8,92 @@
namespace
Dapper.Tests
namespace
Dapper.Tests
{
{
[
Collection
(
"TypeHandlerTests"
)]
[
Collection
(
NonParallelDefinition
.
Name
)]
public
class
TypeHandlerTests
:
TestBase
public
class
TypeHandlerTests
:
TestBase
{
{
[
Collection
(
"QueryCacheTests"
)
]
[
Fact
]
public
class
TypeHandlerQueryCacheTests
:
TestBase
public
void
TestChangingDefaultStringTypeMappingToAnsiString
()
{
{
[
Fact
]
const
string
sql
=
"SELECT SQL_VARIANT_PROPERTY(CONVERT(sql_variant, @testParam),'BaseType') AS BaseType"
;
public
void
TestChangingDefaultStringTypeMappingToAnsiString
()
var
param
=
new
{
testParam
=
"TestString"
};
{
const
string
sql
=
"SELECT SQL_VARIANT_PROPERTY(CONVERT(sql_variant, @testParam),'BaseType') AS BaseType"
;
var
param
=
new
{
testParam
=
"TestString"
};
var
result01
=
connection
.
Query
<
string
>(
sql
,
param
).
FirstOrDefault
();
var
result01
=
connection
.
Query
<
string
>(
sql
,
param
).
FirstOrDefault
();
result01
.
IsEqualTo
(
"nvarchar"
);
result01
.
IsEqualTo
(
"nvarchar"
);
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
AnsiString
);
// Change Default String Handling to AnsiString
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
AnsiString
);
// Change Default String Handling to AnsiString
var
result02
=
connection
.
Query
<
string
>(
sql
,
param
).
FirstOrDefault
();
var
result02
=
connection
.
Query
<
string
>(
sql
,
param
).
FirstOrDefault
();
result02
.
IsEqualTo
(
"varchar"
);
result02
.
IsEqualTo
(
"varchar"
);
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
String
);
// Restore Default to Unicode String
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
String
);
// Restore Default to Unicode String
}
}
[
Fact
]
[
Fact
]
public
void
TestChangingDefaultStringTypeMappingToAnsiStringFirstOrDefault
()
public
void
TestChangingDefaultStringTypeMappingToAnsiStringFirstOrDefault
()
{
{
const
string
sql
=
"SELECT SQL_VARIANT_PROPERTY(CONVERT(sql_variant, @testParam),'BaseType') AS BaseType"
;
const
string
sql
=
"SELECT SQL_VARIANT_PROPERTY(CONVERT(sql_variant, @testParam),'BaseType') AS BaseType"
;
var
param
=
new
{
testParam
=
"TestString"
};
var
param
=
new
{
testParam
=
"TestString"
};
var
result01
=
connection
.
QueryFirstOrDefault
<
string
>(
sql
,
param
);
var
result01
=
connection
.
QueryFirstOrDefault
<
string
>(
sql
,
param
);
result01
.
IsEqualTo
(
"nvarchar"
);
result01
.
IsEqualTo
(
"nvarchar"
);
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
AnsiString
);
// Change Default String Handling to AnsiString
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
AnsiString
);
// Change Default String Handling to AnsiString
var
result02
=
connection
.
QueryFirstOrDefault
<
string
>(
sql
,
param
);
var
result02
=
connection
.
QueryFirstOrDefault
<
string
>(
sql
,
param
);
result02
.
IsEqualTo
(
"varchar"
);
result02
.
IsEqualTo
(
"varchar"
);
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
PurgeQueryCache
();
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
String
);
// Restore Default to Unicode String
SqlMapper
.
AddTypeMap
(
typeof
(
string
),
DbType
.
String
);
// Restore Default to Unicode String
}
}
[
Fact
]
[
Fact
]
public
void
TestCustomTypeMap
()
public
void
TestCustomTypeMap
()
{
{
// default mapping
// default mapping
var
item
=
connection
.
Query
<
TypeWithMapping
>(
"Select 'AVal' as A, 'BVal' as B"
).
Single
();
var
item
=
connection
.
Query
<
TypeWithMapping
>(
"Select 'AVal' as A, 'BVal' as B"
).
Single
();
item
.
A
.
IsEqualTo
(
"AVal"
);
item
.
A
.
IsEqualTo
(
"AVal"
);
item
.
B
.
IsEqualTo
(
"BVal"
);
item
.
B
.
IsEqualTo
(
"BVal"
);
// custom mapping
var
map
=
new
CustomPropertyTypeMap
(
typeof
(
TypeWithMapping
),
(
type
,
columnName
)
=>
type
.
GetProperties
().
FirstOrDefault
(
prop
=>
GetDescriptionFromAttribute
(
prop
)
==
columnName
));
SqlMapper
.
SetTypeMap
(
typeof
(
TypeWithMapping
),
map
);
item
=
connection
.
Query
<
TypeWithMapping
>(
"Select 'AVal' as A, 'BVal' as B"
).
Single
();
item
.
A
.
IsEqualTo
(
"BVal"
);
item
.
B
.
IsEqualTo
(
"AVal"
);
// reset to default
SqlMapper
.
SetTypeMap
(
typeof
(
TypeWithMapping
),
null
);
item
=
connection
.
Query
<
TypeWithMapping
>(
"Select 'AVal' as A, 'BVal' as B"
).
Single
();
item
.
A
.
IsEqualTo
(
"AVal"
);
item
.
B
.
IsEqualTo
(
"BVal"
);
}
private
static
string
GetDescriptionFromAttribute
(
MemberInfo
member
)
// custom mapping
{
var
map
=
new
CustomPropertyTypeMap
(
typeof
(
TypeWithMapping
),
if
(
member
==
null
)
return
null
;
(
type
,
columnName
)
=>
type
.
GetProperties
().
FirstOrDefault
(
prop
=>
GetDescriptionFromAttribute
(
prop
)
==
columnName
));
SqlMapper
.
SetTypeMap
(
typeof
(
TypeWithMapping
),
map
);
item
=
connection
.
Query
<
TypeWithMapping
>(
"Select 'AVal' as A, 'BVal' as B"
).
Single
();
item
.
A
.
IsEqualTo
(
"BVal"
);
item
.
B
.
IsEqualTo
(
"AVal"
);
// reset to default
SqlMapper
.
SetTypeMap
(
typeof
(
TypeWithMapping
),
null
);
item
=
connection
.
Query
<
TypeWithMapping
>(
"Select 'AVal' as A, 'BVal' as B"
).
Single
();
item
.
A
.
IsEqualTo
(
"AVal"
);
item
.
B
.
IsEqualTo
(
"BVal"
);
}
private
static
string
GetDescriptionFromAttribute
(
MemberInfo
member
)
{
if
(
member
==
null
)
return
null
;
#if NETCOREAPP1_0
#if NETCOREAPP1_0
var
data
=
member
.
CustomAttributes
.
FirstOrDefault
(
x
=>
x
.
AttributeType
==
typeof
(
DescriptionAttribute
));
var
data
=
member
.
CustomAttributes
.
FirstOrDefault
(
x
=>
x
.
AttributeType
==
typeof
(
DescriptionAttribute
));
return
(
string
)
data
?.
ConstructorArguments
.
Single
().
Value
;
return
(
string
)
data
?.
ConstructorArguments
.
Single
().
Value
;
#else
#else
var
attrib
=
(
DescriptionAttribute
)
Attribute
.
GetCustomAttribute
(
member
,
typeof
(
DescriptionAttribute
),
false
);
var
attrib
=
(
DescriptionAttribute
)
Attribute
.
GetCustomAttribute
(
member
,
typeof
(
DescriptionAttribute
),
false
);
return
attrib
?.
Description
;
return
attrib
?.
Description
;
#endif
#endif
}
}
public
class
TypeWithMapping
public
class
TypeWithMapping
{
{
[
Description
(
"B"
)]
[
Description
(
"B"
)]
public
string
A
{
get
;
set
;
}
public
string
A
{
get
;
set
;
}
[
Description
(
"A"
)]
[
Description
(
"A"
)]
public
string
B
{
get
;
set
;
}
public
string
B
{
get
;
set
;
}
}
}
}
[
Fact
]
[
Fact
]
public
void
Issue136_ValueTypeHandlers
()
public
void
Issue136_ValueTypeHandlers
()
{
{
...
@@ -512,7 +508,7 @@ public void Test_RemoveTypeMap()
...
@@ -512,7 +508,7 @@ public void Test_RemoveTypeMap()
try
try
{
{
connection
.
Execute
(
@
"INSERT INTO #Test_RemoveTypeMap VALUES (@Now)"
,
new
{
DateTime
.
Now
});
connection
.
Execute
(
"INSERT INTO #Test_RemoveTypeMap VALUES (@Now)"
,
new
{
DateTime
.
Now
});
connection
.
Query
<
DateTime
>(
"SELECT * FROM #Test_RemoveTypeMap"
);
connection
.
Query
<
DateTime
>(
"SELECT * FROM #Test_RemoveTypeMap"
);
dateTimeHandler
.
ParseWasCalled
.
IsTrue
();
dateTimeHandler
.
ParseWasCalled
.
IsTrue
();
...
@@ -639,7 +635,7 @@ public void Issue149_TypeMismatch_SequentialAccess()
...
@@ -639,7 +635,7 @@ public void Issue149_TypeMismatch_SequentialAccess()
Guid
guid
=
Guid
.
Parse
(
"cf0ef7ac-b6fe-4e24-aeda-a2b45bb5654e"
);
Guid
guid
=
Guid
.
Parse
(
"cf0ef7ac-b6fe-4e24-aeda-a2b45bb5654e"
);
try
try
{
{
var
result
=
connection
.
Query
<
Issue149_Person
>(
@
"select @guid as Id"
,
new
{
guid
}).
First
();
var
result
=
connection
.
Query
<
Issue149_Person
>(
"select @guid as Id"
,
new
{
guid
}).
First
();
error
=
null
;
error
=
null
;
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment