annotate UnitTests/CS/Mapping/MapValueAttributeTest.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.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 namespace Mapping
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 public class MapValueAttributeTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 public class Object1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 [MapValue(true, "Y")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [MapValue(false, "N")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public bool Bool1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 [MapValue(true, "Y", "Yes")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 [MapValue(false, "N", "No")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 public bool Bool2;
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 BoolTest1()
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, "Bool1", "Y");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 om.SetValue(o, "Bool2", "Yes");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 Assert.AreEqual(true, o.Bool1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 Assert.AreEqual(true, o.Bool2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 Assert.AreEqual("Y", om.GetValue(o, "Bool1"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 Assert.AreEqual("Y", om.GetValue(o, "Bool2"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 [MapValue(true, "Y")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 [MapValue(false, "N")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 public class Object2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public bool Bool1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 [MapValue(true, "Y", "Yes")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 [MapValue(false, "N", "No")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public bool Bool2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public void BoolTest2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 ObjectMapper om = Map.GetObjectMapper(typeof(Object2));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 Object2 o = (Object2)om.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 om.SetValue(o, "Bool1", "Y");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 om.SetValue(o, "Bool2", "Yes");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 Assert.AreEqual(true, o.Bool1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 Assert.AreEqual(true, o.Bool2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 Assert.AreEqual("Y", om.GetValue(o, "Bool1"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 Assert.AreEqual("Y", om.GetValue(o, "Bool2"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 [MapValue(Enum1.Value1, "1")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [MapValue(Enum1.Value3, "3")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 public enum Enum1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 Value1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 [MapValue("2")] Value2,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 Value3,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 [NullValue] Value4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public class Object3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public Enum1 Enum1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 public Enum1 Enum2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 [MapValue(Enum1.Value1, "10")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 [MapValue(Enum1.Value2, "20")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 [MapValue(Enum1.Value3, "30")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 [MapValue(Enum1.Value3, "32")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 [MapValue(Enum1.Value3, "31")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 public Enum1 Enum3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 public Enum1 Enum4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 public void EnumTest1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 ObjectMapper om = Map.GetObjectMapper(typeof(Object3));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 Object3 o = (Object3)om.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 om.SetValue(o, "Enum1", "1");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 om.SetValue(o, "Enum2", "2");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 om.SetValue(o, "Enum3", "30");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 om.SetValue(o, "Enum4", null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 Assert.AreEqual(Enum1.Value1, o.Enum1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 Assert.AreEqual(Enum1.Value2, o.Enum2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 Assert.AreEqual(Enum1.Value3, o.Enum3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 Assert.AreEqual(Enum1.Value4, o.Enum4);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 om.SetValue(o, "Enum3", "31");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 Assert.AreEqual(Enum1.Value3, o.Enum3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 om.SetValue(o, "Enum3", "32");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 Assert.AreEqual(Enum1.Value3, o.Enum3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 Assert.AreEqual("1", om.GetValue(o, "Enum1"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 Assert.AreEqual("2", om.GetValue(o, "Enum2"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 Assert.Contains(om.GetValue(o, "Enum3"), new[] {"30", "31", "32", "3"});
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 Assert.IsNull ( om.GetValue(o, "Enum4"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 [MapValue(typeof(DayOfWeek), DayOfWeek.Monday, "M")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 [MapValue( DayOfWeek.Friday, "F")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 public class Object4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 public DayOfWeek Dow1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 public DayOfWeek Dow2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public void DayOfWeekTest1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 ObjectMapper om = Map.GetObjectMapper(typeof(Object4));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 Object4 o = (Object4)om.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 om.SetValue(o, "Dow1", "M");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 om.SetValue(o, "Dow2", "F");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 Assert.AreEqual(DayOfWeek.Monday, o.Dow1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 Assert.AreEqual(DayOfWeek.Friday, o.Dow2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 Assert.AreEqual("M", om.GetValue(o, "Dow1"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 Assert.AreEqual("F", om.GetValue(o, "Dow2"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 // http://www.rsdn.ru/Forum/?mid=1809157
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 public enum StringAlignment
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 Far,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 Near,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 Center
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 public class SourceObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 public string test = "Near";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 public class DestObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 [MapValue(StringAlignment.Near, "Near")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 [MapValue(StringAlignment.Far, "Far")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 [MapValue(StringAlignment.Center, "Center")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 public StringAlignment test;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 public void EnumTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 SourceObject so = new SourceObject();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 DestObject o = (DestObject)Map.ObjectToObject(so, typeof(DestObject));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 Assert.AreEqual(StringAlignment.Near, o.test);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 #region Nullable Enum
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 public enum Enum2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 [MapValue("Near")] Value1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 public class Object5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 public Enum2? test;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 public void NullableEnumTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 SourceObject so = new SourceObject();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 Object5 b = Map.ObjectToObject<Object5>(so);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 Assert.AreEqual(Enum2.Value1, b.test);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 }