annotate UnitTests/CS/Aspects/OverloadAspectTest.cs @ 6:11b6da379593

Исправлена странная ошибка при использовании OfType<...>().Where(...)
author cin
date Mon, 05 Dec 2016 05:50:52 +0300
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.Aspects;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.TypeBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 namespace Aspects
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 public class OverloadAspectTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public abstract class TestObject<T>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public T Test(T inVal, out T outVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 outVal = inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 return inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public string Test(DateTime dateVal, string inVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 return inVal.ToUpper();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 [Overload] abstract public T Test(T inVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 [Overload] abstract public T Test(T inVal, out T outVal, ref T refVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 [Overload] abstract public T Test(T inVal, DateTime dateVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 public abstract class TestObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 public int IntValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 public string StrValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public Guid GuidValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public void Test(int intVal, Guid guidVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 IntValue = intVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 GuidValue = guidVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 StrValue = "(default)";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public void Test(int intVal, string strVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 IntValue = intVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 StrValue = strVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 GuidValue = Guid.Empty;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public void OutRefTest(int inVal, out int outVal, ref int refVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 outVal = inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 refVal += inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 public void OutRefStructTest(int? inVal, out int? outVal, ref int? refVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 outVal = inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 refVal += inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 protected static int StaticMethod(int intVal, ref Guid guidVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 return intVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 public T Generic<T>(T inVal, out T outVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 outVal = inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 return inVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 // Becomes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 // public override void Test(Guid guidVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 // {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 // Test(default(int), guidVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 // }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 [Overload] public abstract void Test(Guid guidVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 // Becomes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 // public override void Test(Guid guidVal, int intVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 // {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 // Test(intVal, guidVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 // }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 [Overload] public abstract void Test(Guid guidVal, int intVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 // Becomes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 // public override void Test(string strVal)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 // {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 // Test(default(int), strVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 // }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 [Overload]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 public abstract void Test(string strVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 // Overload method name may be altered.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 [Overload("Test")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public abstract void GuidTest(Guid guidVal, DateTime dateVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 // Parameter types of the method to overload.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 [Overload(typeof(int), typeof(Guid))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 public abstract void Test(DateTime strVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 // There may be more or less parameters in the overloaded method.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 [Overload] public abstract void OutRefTest(int inVal, out int outVal, ref int refVal, out string strVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 [Overload] public abstract void OutRefTest(int inVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 // Value types and ref value types also works.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 [Overload] public abstract void OutRefStructTest(int? inVal, out int? outVal, ref int? refVal, out Guid guidVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 [Overload] public abstract void OutRefStructTest(int? inVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 // We can overload static methods.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 [Overload] public abstract int StaticMethod(int intVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 // We can overload methods declared in a base type.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 [Overload] public abstract string ToString(int intVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 // A generic method can be overloaded by an other generic method.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 [Overload] public abstract T Generic<T>(T inVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 public void OverloadTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 o.Test(12345, "str");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 Assert.AreEqual(12345, o.IntValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 Assert.AreEqual("str", o.StrValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 Assert.AreEqual(Guid.Empty, o.GuidValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 o.Test(Guid.NewGuid(), 123);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 Assert.AreEqual(123, o.IntValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 Assert.AreEqual("(default)", o.StrValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 Assert.AreNotEqual(Guid.Empty, o.GuidValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 o.Test("foo");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 Assert.AreEqual(0, o.IntValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 Assert.AreEqual("foo", o.StrValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 Assert.AreEqual(Guid.Empty, o.GuidValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 o.Test(Guid.NewGuid());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 Assert.AreEqual(0, o.IntValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 Assert.AreEqual("(default)", o.StrValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 Assert.AreNotEqual(Guid.Empty, o.GuidValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 Assert.AreEqual(1, o.Generic(1));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 public void AnyNameTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 o.GuidTest(Guid.NewGuid(), DateTime.Now);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 Assert.AreEqual(0, o.IntValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 Assert.AreEqual("(default)", o.StrValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 Assert.AreNotEqual(Guid.Empty, o.GuidValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 public void ExplicitParameterTypesTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 o.Test(DateTime.Now);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 Assert.AreEqual(0, o.IntValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 Assert.AreEqual("(default)", o.StrValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 Assert.AreEqual(Guid.Empty, o.GuidValue);
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 StaticMethodTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 int intVal = o.StaticMethod(123);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 Assert.AreEqual(123, intVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 public void BaseTypeMethodTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 Assert.AreEqual(o.ToString(), o.ToString(123));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 public void OutRefTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 const int inVal = 123;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 int refVal = 99;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 int outVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 string strVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 o.OutRefTest(inVal, out outVal, ref refVal, out strVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 Assert.AreEqual(inVal, outVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 Assert.AreEqual(222, refVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 Assert.AreEqual(string.Empty, strVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 o.OutRefTest(inVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 public void OutRefStructTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 TestObject o = TypeAccessor<TestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 int? inVal = 123;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 int? refVal = 99;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 int? outVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 Guid guidVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 o.OutRefStructTest(inVal, out outVal, ref refVal, out guidVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 Assert.AreEqual(inVal, outVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 Assert.AreEqual(222, refVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 Assert.AreEqual(Guid.Empty, guidVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 o.OutRefStructTest(inVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 public void GenericTypeTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 TestObject<int?> o = TypeAccessor<TestObject<int?>>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 int? inVal = 123;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 int? refVal = 99;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 int? outVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 o.Test(inVal, out outVal, ref refVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 Assert.AreEqual(inVal, outVal);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 Assert.AreEqual(refVal, 99);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 Assert.AreEqual(inVal, o.Test(inVal));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 Assert.AreEqual(12, o.Test(12, DateTime.Now));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 TestObject<string> o2 = TypeAccessor<TestObject<string>>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 // When T is a string, method Test(DateTime, string) becomes the best match.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 Assert.AreEqual("STR", o2.Test("str", DateTime.Now));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 }