annotate UnitTests/CS/Mapping/ExpressionMapperTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
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 using System.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Linq.Expressions;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace Mapping
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class ExpressionMapperTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 public void MapIntToString()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 var mapper = Map.GetObjectMapper<int,string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 var dest = mapper(42);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 Assert.AreEqual("42", dest);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 public void MapStringToInt()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 var mapper = Map.GetObjectMapper<string,int>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 var dest = mapper("42");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 Assert.AreEqual(42, dest);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 public void MapGenderToString()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 var mapper = Map.GetObjectMapper<Gender,string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 var dest = mapper(Gender.Male);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 Assert.AreEqual("M", dest);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public void MapStringToGender()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 var mapper = Map.GetObjectMapper<string,Gender>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 var dest = mapper("M");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 Assert.AreEqual(Gender.Male, dest);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public enum Gender
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 [MapValue("F")] Female,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 [MapValue("M")] Male,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 [MapValue("U")] Unknown,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 [MapValue("O")] Other
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public enum Enum1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 Value1 = 10,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 Value2,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 Value3,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 Value4,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public enum Enum2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 Value1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 Value2 = 10,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 Value3,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 Value4,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public class Dest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public int Field1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 [MapField("Field2")] public float Field3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public int Field4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 public int? Field6;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 public int Field7;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public int Field8;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public int Field9;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public string Field10;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public int Field11;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 [NullValue(12)] public int Field12;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [NullValue(13)] public int Field13;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 [NullValue(14)] public int Field14;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 public Gender Field15;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 public string Field16;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public Enum2 Field17;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 public class Source
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 public int Field1 = 1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 public int Field2 = 2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 [MapField("Field4")] public float Field5 = 5;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 public int Field6 = 6;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 public int? Field7 = 7;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 public int? Field8;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public decimal? Field9 = 9m;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 public int Field10 = 10;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 public string Field11 = "11";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 public string Field12 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 public int? Field13;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 public decimal? Field14;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public string Field15 = "F";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 public Gender Field16 = Gender.Male;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public Enum1 Field17 = Enum1.Value1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 void Clone(Expression<Func<Source,Dest>> mapper)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 /*
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 Expression.Lambda<Func<Source, Dest>>(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 Expression.MemberInit(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 Expression.New((ConstructorInfo) methodof(Dest..ctor), new Expression[0]),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 new MemberBinding[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 Expression.Bind(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 fieldof(Dest.Field1),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 Expression.Field(CS$0$0000 = Expression.Parameter(typeof(Source), "s"), fieldof(Source.Field1))),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 Expression.Bind(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 fieldof(Dest.Field2),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 Expression.Convert(Expression.Field(CS$0$0000, fieldof(Source.Field2)), typeof(float)))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 }), new ParameterExpression[] { CS$0$0000 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 */
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 public void MapObjects()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 var c = Convert<float,int>.From;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 //Clone(s => new Dest { Field1 = s.Field1, Field10 = s.Field10.ToString() });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 //Map.ObjectToObject(new Source(), typeof(Dest));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 var mapper = Map.GetObjectMapper<Source,Dest>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 var src = new Source();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 Assert.AreEqual(1, dest.Field1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 Assert.AreEqual(2, dest.Field3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 Assert.AreEqual(src.Field5, dest.Field4);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 Assert.AreEqual(src.Field6, dest.Field6.Value);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 Assert.AreEqual(src.Field7.Value, dest.Field7);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 Assert.AreEqual(src.Field8 ?? 0, dest.Field8);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 Assert.AreEqual(src.Field9 ?? 0, dest.Field9);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 Assert.AreEqual(src.Field10.ToString(), dest.Field10);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 Assert.AreEqual(src.Field11, dest.Field11.ToString());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 Assert.AreEqual(12, dest.Field12);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 Assert.AreEqual(13, dest.Field13);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 Assert.AreEqual(14, dest.Field14);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 Assert.AreEqual(Gender.Female, dest.Field15);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 Assert.AreEqual("M", dest.Field16);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 Assert.AreEqual(Enum2.Value2, dest.Field17);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 public void MapObject()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 var mapper = Map.GetObjectMapper<Source,Source>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 var src = new Source();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 Assert.AreNotSame(src, dest);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 Assert.AreEqual (src.Field1, dest.Field1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 Assert.AreEqual (src.Field2, dest.Field2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 Assert.AreEqual (src.Field5, dest.Field5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 Assert.AreEqual (src.Field6, dest.Field6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 Assert.AreEqual (src.Field7, dest.Field7);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 Assert.AreEqual (src.Field8, dest.Field8);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 Assert.AreEqual (src.Field9, dest.Field9);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 Assert.AreEqual (src.Field10, dest.Field10);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 Assert.AreEqual (src.Field11, dest.Field11);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 Assert.AreEqual (src.Field12, dest.Field12);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 Assert.AreEqual (src.Field13, dest.Field13);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 Assert.AreEqual (src.Field14, dest.Field14);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 Assert.AreEqual (src.Field15, dest.Field15);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 Assert.AreEqual (src.Field16, dest.Field16);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 Assert.AreEqual (src.Field17, dest.Field17);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 class Class1 { public int Field = 1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 class Class2 { public int Field = 2; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 class Class3 { public Class1 Class = new Class1(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 class Class4 { public Class2 Class = new Class2(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 public void MapInnerObject1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 var mapper = Map.GetObjectMapper<Class3,Class4>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 var src = new Class3();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 Assert.AreEqual(src.Class.Field, dest.Class.Field);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 class Class5 { public Class1 Class1 = new Class1(); public Class1 Class2; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 class Class6 { public Class2 Class1 = new Class2(); public Class2 Class2 = null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 public void MapInnerObject2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 var mapper = Map.GetObjectMapper<Class5,Class6>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 var src = new Class5();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 src.Class2 = src.Class1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 Assert.IsNotNull(dest.Class1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 Assert.AreSame(dest.Class1, dest.Class2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 class Class7 { public Class9 Class; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 class Class8 { public Class10 Class = null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 class Class9 { public Class7 Class = new Class7(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 class Class10 { public Class8 Class = new Class8(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 public void SelfReference1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 var mapper = Map.GetObjectMapper<Class9,Class10>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 var src = new Class9();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 src.Class.Class = src;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 Assert.AreSame(dest, dest.Class.Class);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 class Class11 { public Class9 Class = new Class9(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 class Class12 { public Class10 Class = new Class10(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 public void SelfReference2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 var mapper = Map.GetObjectMapper<Class11,Class12>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 var src = new Class11();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 src.Class.Class.Class = src.Class;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 Assert.AreSame(dest.Class, dest.Class.Class.Class);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 class Class13 { public Class1 Class = new Class1(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 class Class14 { public Class1 Class = new Class1(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 public void DeepCopy1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 var mapper = Map.GetObjectMapper<Class13,Class14>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 var src = new Class13();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 Assert.AreNotSame(src.Class, dest.Class);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 public void DeepCopy2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 var mapper = Map.GetObjectMapper<Class13,Class14>(false);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 var src = new Class13();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 Assert.AreSame(src.Class, dest.Class);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 class Class15 { public List<Class1> List = new List<Class1> { new Class1(), new Class1() }; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 class Class16 { public List<Class2> List = null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 public void ObjectList()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 var mapper = Map.GetObjectMapper<Class15,Class16>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 var src = new Class15();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 src.List.Add(src.List[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 var dest = mapper(src);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 Assert.AreEqual (3, dest.List.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 Assert.IsNotNull (dest.List[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 Assert.IsNotNull (dest.List[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 Assert.IsNotNull (dest.List[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 Assert.AreNotSame(dest.List[0], dest.List[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 Assert.AreSame (dest.List[0], dest.List[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 public void ScalarList()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 var mapper = Map.GetObjectMapper<List<int>,IList<string>>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 var dest = mapper(new List<int> { 1, 2, 3});
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 Assert.AreEqual("1", dest[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 Assert.AreEqual("2", dest[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 Assert.AreEqual("3", dest[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 public void ScalarArray()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 var mapper = Map.GetObjectMapper<int[],string[]>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 var dest = mapper(new[] { 1, 2, 3});
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 Assert.AreEqual("1", dest[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 Assert.AreEqual("2", dest[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 Assert.AreEqual("3", dest[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 class Class17
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 public IEnumerable<Class9> Arr { get { return GetEnumerable(); }}
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 static IEnumerable<Class9> GetEnumerable()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 var c = new Class9();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 yield return c;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 yield return new Class9();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 yield return c;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 class Class18 { public Class9[] Arr = null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 public void ObjectArray1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 var mapper = Map.GetObjectMapper<Class17,Class18>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 var dest = mapper(new Class17());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 Assert.AreEqual (3, dest.Arr.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 Assert.IsNotNull (dest.Arr[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 Assert.IsNotNull (dest.Arr[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 Assert.IsNotNull (dest.Arr[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 Assert.AreNotSame(dest.Arr[0], dest.Arr[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 Assert.AreSame (dest.Arr[0], dest.Arr[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 class Class19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353 public Class9[] Arr { get { return new Class17().Arr.ToArray(); }}
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 public void ObjectArray2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 var mapper = Map.GetObjectMapper<Class19,Class18>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 var dest = mapper(new Class19());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 Assert.AreEqual (3, dest.Arr.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363 Assert.IsNotNull (dest.Arr[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 Assert.IsNotNull (dest.Arr[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 Assert.IsNotNull (dest.Arr[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 Assert.AreNotSame(dest.Arr[0], dest.Arr[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 Assert.AreSame (dest.Arr[0], dest.Arr[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 class Class20 { public Source Class1 = new Source(); public Source Class2; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 class Class21 { public Dest Class1 = null; public Dest Class2 = null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 public void NoCrossRef()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 var mapper = new ExpressionMapper<Class20,Class21> { HandleBackReferences = false }.GetMapper();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 var source = new Class20();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379 source.Class2 = source.Class1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381 var dest = mapper(source);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 Assert.IsNotNull (dest.Class1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 Assert.IsNotNull (dest.Class2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385 Assert.AreNotSame(dest.Class1, dest.Class2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 class Object1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390 public int Field1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 [ExpressionMapIgnore]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 public int Field2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 class Object2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 public int Field1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 public int Field2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 public void ExpressionMapIgnoreTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 var mapper1 = Map.GetObjectMapper<Object1,Object2>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 var object2 = mapper1(new Object1 { Field1 = 1, Field2 = 2 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 Assert.That(object2.Field2, Is.Not.EqualTo(2));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 var mapper2 = Map.GetObjectMapper<Object2,Object1>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410 var object1 = mapper2(new Object2 { Field1 = 1, Field2 = 2 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 Assert.That(object1.Field2, Is.Not.EqualTo(2));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 [MapField("SomethingColumnInDB", "MyInnerClass.Something")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 class MyClass
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 public int ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 public string Name;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 public MyInnerClass MyInnerClass;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423 class MyInnerClass
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425 public string Something;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429 public void MapFieldTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 var entity = new MyClass
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 ID = 1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 Name = "Test",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435 MyInnerClass = new MyInnerClass { Something = "Something" }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 var mapper = Map.GetObjectMapper<MyClass,MyClass>(true, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 var clone = mapper(entity);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 Assert.That(clone.MyInnerClass, Is.Not.Null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 }