Commit 4ad839b3 authored by Sam Saffron's avatar Sam Saffron

more tests and fixes

parent 1ea4eb82
......@@ -20,6 +20,14 @@ static SqlMapper()
typeMap[typeof(int)] = SqlDbType.Int;
typeMap[typeof(int?)] = SqlDbType.Int;
typeMap[typeof(string)] = SqlDbType.NVarChar;
// weird ... I know see: http://msdn.microsoft.com/en-us/library/ms131092.aspx
typeMap[typeof(double)] = SqlDbType.Float;
typeMap[typeof(double?)] = SqlDbType.Float;
typeMap[typeof(bool)] = SqlDbType.Bit;
typeMap[typeof(bool?)] = SqlDbType.Bit;
typeMap[typeof(Guid)] = SqlDbType.UniqueIdentifier;
typeMap[typeof(Guid?)] = SqlDbType.UniqueIdentifier;
typeMap[typeof(int[])] = SqlDbType.Structured;
......@@ -106,7 +114,7 @@ public static List<T> ExecuteMapperQuery<T>(this SqlConnection cnn, string sql,
object oDeserializer;
if (!cachedSerializers.TryGetValue(identity, out oDeserializer))
{
if (typeof(T).IsClass)
if (typeof(T).IsClass && typeof(T) != typeof(string))
{
oDeserializer = GetClassDeserializer<T>(reader);
}
......@@ -210,12 +218,7 @@ private static SqlDataReader GetReader<T>(SqlConnection cnn, SqlTransaction tran
private static object GetStructDeserializer<T>(SqlDataReader reader)
{
Func<SqlDataReader, T> deserializer = null;
var type = typeof(T);
if (type == typeof(int))
{
// yuck boxing
deserializer = r => (T)(object)r.GetInt32(0);
}
deserializer = r => (T)r.GetValue(0);
return deserializer;
}
......
......@@ -45,6 +45,24 @@ public void PassInIntArray()
AssertEquals(items[2], 3);
}
public void TestDoubleParam()
{
AssertEquals(connection.ExecuteMapperQuery<double>("select @d", new { d = 0.1d }).First(), 0.1d);
}
public void TestBoolParam()
{
AssertEquals(connection.ExecuteMapperQuery<bool>("select @b", new { b = false }).First(), false);
}
public void TestStrings()
{
var strings = connection.ExecuteMapperQuery<string>(@"select 'a' a union select 'b'").ToList();
AssertEquals(strings[0], "a");
AssertEquals(strings[1], "b");
}
public class Dog
{
public int? Age { get; set; }
......@@ -61,7 +79,6 @@ public void TestIntSupportsNull()
AssertEquals(dog.Count(), 1);
AssertNull(dog.First().Age);
}
}
}
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