#region QueryForDictionary
/// <summary>
/// Test ExecuteQueryForDictionary
/// </summary>
[Test]
public void TestExecuteQueryForDictionary()
{
IDictionary<string, Account> map = sqlMap.QueryForDictionary<string, Account>("GetAllAccountsViaResultClass", null, "FirstName");
Assert.AreEqual(5, map.Count);
AssertAccount1(map["Joe"]);
Assert.AreEqual(1, map["Joe"].Id);
Assert.AreEqual(2, map["Averel"].Id);
Assert.AreEqual(3, map["William"].Id);
Assert.AreEqual(4, map["Jack"].Id);
Assert.AreEqual(5, map["Gilles"].Id);
}
/// <summary>
/// Test ExecuteQueryForDictionary With Cache.
/// </summary>
[Test]
public void TestExecuteQueryQueryForDictionaryWithCache()
{
IDictionary<string, Account> map = sqlMap.QueryForDictionary<string, Account>("GetAllAccountsCache", null, "FirstName");
int firstId = HashCodeProvider.GetIdentityHashCode(map);
Assert.AreEqual(5, map.Count);
AssertAccount1(map["Joe"]);
Assert.AreEqual(1, map["Joe"].Id);
Assert.AreEqual(2, map["Averel"].Id);
Assert.AreEqual(3, map["William"].Id);
Assert.AreEqual(4, map["Jack"].Id);
Assert.AreEqual(5, map["Gilles"].Id);
map = sqlMap.QueryForDictionary<string, Account>("GetAllAccountsCache", null, "FirstName");
int secondId = HashCodeProvider.GetIdentityHashCode(map);
Assert.AreEqual(firstId, secondId);
}
/// <summary>
/// Test ExecuteQueryForMap : Hashtable.
/// </summary>
/// <remarks>
/// If the keyProperty is an integer, you must acces the map
/// by map[integer] and not by map["integer"]
/// </remarks>
[Test]
public void TestExecuteQueryForDictionary2()
{
IDictionary<string, Order> map = sqlMap.QueryForDictionary<string, Order>("GetAllOrderWithLineItems", null, "PostalCode");
Assert.AreEqual(11, map.Count);
Order order = map["T4H 9G4"];
Assert.AreEqual(2, order.LineItemsIList.Count);
}
/// <summary>
/// Test ExecuteQueryForMap with value property :
/// "FirstName" as key, "EmailAddress" as value
/// </summary>
[Test]
public void TestExecuteQueryForDictionaryWithValueProperty()
{
IDictionary<string, string> map = sqlMap.QueryForDictionary<string, string>("GetAllAccountsViaResultClass", null, "FirstName", "EmailAddress");
Assert.AreEqual(5, map.Count);
Assert.AreEqual("Joe.Dalton@somewhere.com", map["Joe"]);
Assert.AreEqual("Averel.Dalton@somewhere.com", map["Averel"]);
Assert.IsNull(map["William"]);
Assert.AreEqual("Jack.Dalton@somewhere.com", map["Jack"]);
Assert.AreEqual("gilles.bayon@nospam.org", map["Gilles"]);
}
#endregion
-----------------------------------------------------------------------------------------------------------------------
#region Map Tests
/// <summary>
/// Test ExecuteQueryForMap : Hashtable.
/// </summary>
[Test]
public void TestExecuteQueryForMap()
{
IDictionary map = sqlMap.QueryForMap("GetAllAccountsViaResultClass", null, "FirstName");
Assert.AreEqual(5, map.Count);
AssertAccount1(((Account)map["Joe"]));
Assert.AreEqual(1, ((Account)map["Joe"]).Id);
Assert.AreEqual(2, ((Account)map["Averel"]).Id);
Assert.AreEqual(3, ((Account)map["William"]).Id);
Assert.AreEqual(4, ((Account)map["Jack"]).Id);
Assert.AreEqual(5, ((Account)map["Gilles"]).Id);
}
/// <summary>
/// Test ExecuteQueryForMap With Cache : Hashtable.
/// </summary>
[Test]
public void TestExecuteQueryForMapWithCache()
{
IDictionary map = sqlMap.QueryForMap("GetAllAccountsCache", null, "FirstName");
int firstId = HashCodeProvider.GetIdentityHashCode(map);
Assert.AreEqual(5, map.Count);
AssertAccount1(((Account)map["Joe"]));
Assert.AreEqual(1, ((Account)map["Joe"]).Id);
Assert.AreEqual(2, ((Account)map["Averel"]).Id);
Assert.AreEqual(3, ((Account)map["William"]).Id);
Assert.AreEqual(4, ((Account)map["Jack"]).Id);
Assert.AreEqual(5, ((Account)map["Gilles"]).Id);
map = sqlMap.QueryForMap("GetAllAccountsCache", null, "FirstName");
int secondId = HashCodeProvider.GetIdentityHashCode(map);
Assert.AreEqual(firstId, secondId);
}
/// <summary>
/// Test ExecuteQueryForMap : Hashtable.
/// </summary>
/// <remarks>
/// If the keyProperty is an integer, you must acces the map
/// by map[integer] and not by map["integer"]
/// </remarks>
[Test]
public void TestExecuteQueryForMap2()
{
IDictionary map = sqlMap.QueryForMap("GetAllOrderWithLineItems", null, "PostalCode");
Assert.AreEqual(11, map.Count);
Order order = ((Order)map["T4H 9G4"]);
Assert.AreEqual(2, order.LineItemsIList.Count);
}
/// <summary>
/// Test ExecuteQueryForMap with value property :
/// "FirstName" as key, "EmailAddress" as value
/// </summary>
[Test]
public void TestExecuteQueryForMapWithValueProperty()
{
IDictionary map = sqlMap.QueryForMap("GetAllAccountsViaResultClass", null, "FirstName", "EmailAddress");
Assert.AreEqual(5, map.Count);
Assert.AreEqual("Joe.Dalton@somewhere.com", map["Joe"]);
Assert.AreEqual("Averel.Dalton@somewhere.com", map["Averel"]);
Assert.IsNull(map["William"]);
Assert.AreEqual("Jack.Dalton@somewhere.com", map["Jack"]);
Assert.AreEqual("gilles.bayon@nospam.org", map["Gilles"]);
}
/// <summary>
/// Test ExecuteQueryForWithJoined
/// </remarks>
[Test]
public void TestExecuteQueryForWithJoined()
{
Order order = sqlMap.QueryForObject("GetOrderJoinWithAccount", 10) as Order;
Assert.IsNotNull(order.Account);
order = sqlMap.QueryForObject("GetOrderJoinWithAccount", 11) as Order;
Assert.IsNull(order.Account);
}
/// <summary>
/// Better support for nested result maps when using dictionary
/// </remarks>
[Test]
[Category("JIRA-254")]
public void Better_Support_For_Nested_Result_Maps_When_Using_Dictionary()
{
IDictionary order = (IDictionary)sqlMap.QueryForObject("JIRA-254", 10);
Assert.IsNotNull(order["Account"]);
order = (IDictionary)sqlMap.QueryForObject("JIRA-254", 11);
Assert.IsNull(order["Account"]);
}
/// <summary>
/// Test ExecuteQueryFor With Complex Joined
/// </summary>
/// <remarks>
/// A->B->C
/// ->E
/// ->F
/// </remarks>
[Test]
public void TestExecuteQueryForWithComplexJoined()
{
A a = sqlMap.QueryForObject("SelectComplexJoined", null) as A;
Assert.IsNotNull(a);
Assert.IsNotNull(a.B);
Assert.IsNotNull(a.B.C);
Assert.IsNull(a.B.D);
Assert.IsNotNull(a.E);
Assert.IsNull(a.F);
}
#endregion