annotate UnitTests/CS/Mapping/MapFieldAttributeTest.cs @ 3:1ef98bd70424

!bug 100 +3h Исправление проблемы BLToolkit + mono 3.4
author cin
date Fri, 22 Aug 2014 17:34:46 +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 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.Reflection.Extension;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 namespace Mapping
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 [TestFixture, Category("Mapping")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class MapFieldAttributeTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [MapField("MapName", "Field1")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public class Object1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public int Field1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 [MapField("intfld")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 public int Field2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 public void Test1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 ObjectMapper om = Map.GetObjectMapper(typeof(Object1));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 Object1 o = (Object1)om.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 om.SetValue(o, "mapname", 123);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 om.SetValue(o, "intfld", 234);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 Assert.AreEqual(123, o.Field1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 Assert.AreEqual(234, o.Field2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 [MapValue(true, "Y")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 [MapValue(false, "N")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 public class Object2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public bool Field1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 public int Field2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public class Object3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 public Object2 Object2 = new Object2();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public Object4 Object4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [MapField("fld1", "Object3.Object2.Field1")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 [MapField("fld2", "Object3.Object4.Str1")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 public class Object4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 public Object3 Object3 = new Object3();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public string Str1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public void Test2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 ObjectMapper om = Map.GetObjectMapper(typeof(Object4));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 Object4 o = (Object4)om.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 om.SetValue(o, "fld1", "Y");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 om.SetValue(o, "Object3.Object2.Field2", 123);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 om.SetValue(o, "fld2", "str");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 Assert.AreEqual(true, o.Object3.Object2.Field1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 Assert.AreEqual(123, o.Object3.Object2.Field2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 Assert.IsNull ( o.Object3.Object4);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 Assert.AreEqual("Y", om.GetValue(o, "fld1"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 Assert.AreEqual(123, om.GetValue(o, "Object3.Object2.Field2"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 Assert.IsNull ( om.GetValue(o, "fld2"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public void Test3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 ObjectMapper om = Map.GetObjectMapper(typeof(Object4));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 MemberMapper mm = om["Object3.Object2.Field1", true];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 Assert.IsNotNull(mm);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [MapField("fld2", "Object3.Object4.Str1")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 [TypeExtension(FileName="Map.xml")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 public class Object5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public Object3 Object3 = new Object3();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 public string Str1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 public void Test4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 ObjectMapper om = Map.GetObjectMapper(typeof(Object5));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 MemberMapper mm1 = om["Object3.Object2.Field1", true];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 MemberMapper mm2 = om["Object3.Object4.Str1", true];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 Assert.IsNotNull(mm1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 Assert.IsNotNull(mm2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 public class Entity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 [PrimaryKey]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 public int Id;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public class Name
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 public string LastName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 public string FirstName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 public string MiddleName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 [MapField("PhoneId", "Id")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 public class PhoneEntity : Entity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 public string Phone;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 [MapField("PhoneId", "Phone.Id")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 [MapField("LastName", "Name.LastName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 [MapField("FirstName", "Name.FirstName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 [MapField("MiddleName", "Name.MiddleName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public class PersonEntity : Entity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 public PhoneEntity Phone;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 public Name Name = new Name();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 public void InnerTest1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 ObjectMapper om = ObjectMapper<PersonEntity>.Instance;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 List<string> list = new List<MemberMapper>(om)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 .ConvertAll<string>(delegate(MemberMapper mm) { return mm.Name; });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 Assert.That(list.Count == 5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 Assert.That(list.Contains("PhoneId"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 Assert.That(list.Contains("Phone"), Is.False);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 Assert.That(list.Contains("LastName"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 Assert.That(list.Contains("Name"), Is.False);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 [MapField("PhoneId", "Phone.Id")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 public class PersonEntity2 : Entity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 [MapIgnore]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 public PhoneEntity Phone = new PhoneEntity();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 [MapField(Format="{0}")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 public Name Name = new Name();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 public void InnerTest2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 ObjectMapper om = ObjectMapper<PersonEntity2>.Instance;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 List<string> list = new List<MemberMapper>(om)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 .ConvertAll<string>(delegate(MemberMapper mm) { return mm.Name; });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 Assert.That(list.Count == 5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 Assert.That(list.Contains("PhoneId"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 Assert.That(list.Contains("Phone"), Is.False);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 Assert.That(list.Contains("LastName"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 Assert.That(list.Contains("Name"), Is.False);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 [MapField("PhoneId", "Phone.Id")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 [MapField("Name", Format="{0}")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 public class PersonEntity3 : Entity
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 [MapIgnore]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 public PhoneEntity Phone = new PhoneEntity();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 public Name Name = new Name();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 public void InnerTest3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 ObjectMapper om = ObjectMapper<PersonEntity3>.Instance;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 List<string> list = new List<MemberMapper>(om)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 .ConvertAll<string>(delegate(MemberMapper mm) { return mm.Name; });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 Assert.That(list.Count == 5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 Assert.That(list.Contains("PhoneId"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 Assert.That(list.Contains("Phone"), Is.False);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 Assert.That(list.Contains("LastName"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 Assert.That(list.Contains("Name"), Is.False);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 }