annotate UnitTests/CS/Data/Sql/DefinitionTest.cs @ 1:8f65451dc28f

Исправлена проблема с фабрикой и выборкой нескольких объектов в linq выражении
author cin
date Fri, 28 Mar 2014 01:04:56 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Data.Sql;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Reflection.Extension;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 namespace Data.Sql
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 public class DefinitionTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 #region Table definition
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 static class Tables
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public static readonly SqlTable Order = new SqlTable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 Name = "Order",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 PhysicalName = "Order",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 Fields =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 new SqlField { Name = "ID", PhysicalName = "OrderID" }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 Joins =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 new Join
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 TableName = "OrderItem",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 JoinOns = { new JoinOn { Field = "ID", OtherField = "OrderID" } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public static readonly SqlTable OrderItem = new SqlTable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 Name = "OrderItem",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 PhysicalName = "OrderItem",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 Alias = "oi",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 Fields =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 new SqlField { Name = "OrderID" },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 new SqlField { Name = "ID", PhysicalName = "OrderItemID" }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 static class Xml
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 static readonly ExtensionList _ext = TypeExtension.GetExtensions("DefinitionData.xml");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 public static readonly SqlTable Order = new SqlTable(_ext, "Order");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public static readonly SqlTable Order2 = new SqlTable(_ext, "Order2") { Name = "Order", PhysicalName = "Order" };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 public static readonly SqlTable Order3 = new SqlTable(_ext, "Order3") { Name = "Order", PhysicalName = "Order" };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public static readonly SqlTable OrderItem = new SqlTable(_ext, "OrderItem");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public class Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 public class Order
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 [MapField("OrderID")] public int ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 public class OrderItem
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public int OrderID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [MapField("OrderItemID")] public int ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 public static SqlTable OrderTable = new SqlTable<Order>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 Joins =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 new Join
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 TableName = "OrderItem",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 JoinOns = { new JoinOn { Field = "ID", OtherField = "OrderID" } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public static SqlTable OrderItemTable = new SqlTable<OrderItem> { Alias = "oi" };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 static void CompareTables(SqlTable t1, SqlTable t2)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 Assert.AreEqual(t1.Name, t2.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 Assert.AreEqual(t1.PhysicalName, t2.PhysicalName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 Assert.AreEqual(t1.Alias, t2.Alias);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 Assert.AreEqual(t1.Database, t2.Database);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 Assert.AreEqual(t1.Fields.Count, t2.Fields.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 Assert.AreEqual(t1.Joins. Count, t2.Joins. Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 foreach (var field in t1.Fields.Values)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 Assert.AreEqual(field.PhysicalName, t2[field.Name].PhysicalName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 for (var i = 0; i < t1.Joins.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 var j1 = t1.Joins[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 var j2 = t2.Joins[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 Assert.AreEqual(j1.TableName, j2.TableName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 Assert.AreEqual(j1.Alias, j2.Alias);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 Assert.AreEqual(j1.JoinOns.Count, j2.JoinOns.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 for (var j = 0; j < j1.JoinOns.Count; j++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 Assert.AreEqual(j1.JoinOns[j].Field, j2.JoinOns[j].Field);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 Assert.AreEqual(j1.JoinOns[j].OtherField, j2.JoinOns[j].OtherField);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 Assert.AreEqual(j1.JoinOns[j].Expression, j2.JoinOns[j].Expression);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 CompareTables(Tables.Order, Xml.Order);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 CompareTables(Tables.Order, Xml.Order2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 CompareTables(Tables.Order, Xml.Order3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 CompareTables(Tables.OrderItem, Xml.OrderItem);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 CompareTables(Tables.Order, Types.OrderTable);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 CompareTables(Tables.OrderItem, Types.OrderItemTable);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 }