annotate UnitTests/CS/Aspects/MixinAspectTest.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +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.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Aspects;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace Aspects
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class MixinAspectTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public interface ITestInterface
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 int Test1(ref int value);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 object Test2(ref object value);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 int Test3(string p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 int Test4(double p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 int Test5 { get; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 int Test6 { get; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public class TestInterfaceImpl : ITestInterface, INullable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 int ITestInterface.Test1(ref int value) { return value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 object ITestInterface.Test2(ref object value) { return value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 int ITestInterface.Test3(string p) { return 10; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 int ITestInterface.Test4(double p) { return 20; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 int ITestInterface.Test5 { get { return 30; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 int ITestInterface.Test6 { get { return 40; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 bool INullable.IsNull { get { return true; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 [Mixin(typeof(ICustomTypeDescriptor), "_typeDescriptor")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 [Mixin(typeof(ITestInterface), "TestInterface", "'{0}.{1}' is null.")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 [Mixin(typeof(INullable), "TestInterface", "'{0}.{1}' is null.")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public abstract class TestClass
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 public TestClass()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 _typeDescriptor = new CustomTypeDescriptorImpl(GetType());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 protected object _typeDescriptor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 private ITestInterface _testInterface;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public ITestInterface TestInterface
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 if (_testInterface == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 _testInterface = new TestInterfaceImpl();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 return _testInterface;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 public string Code = "code";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 [MixinOverride]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 protected int Test3(string p) { return 15; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 [MixinOverride(typeof(IDisposable))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 protected int Test4(double p) { return 25; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 protected int Test5 { [MixinOverride] get { return 35; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public void Test1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 TestClass tc = (TestClass)TypeAccessor.CreateInstance(typeof(TestClass));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 ICustomTypeDescriptor td = (ICustomTypeDescriptor)tc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 PropertyDescriptorCollection col = td.GetProperties();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 Assert.AreNotEqual(0, col.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public void Test2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 TestClass tc = (TestClass)TypeAccessor.CreateInstance(typeof(TestClass));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 ITestInterface ti = (ITestInterface)tc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 INullable tn = (INullable)tc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 int n = 10;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 object o = new object();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 Assert.AreEqual(10, ti.Test1(ref n));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 Assert.AreSame (o, ti.Test2(ref o));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 Assert.AreEqual(15, ti.Test3(null));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 Assert.AreEqual(20, ti.Test4(0));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 Assert.AreEqual(35, ti.Test5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 Assert.AreEqual(40, ti.Test6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 Assert.That(tn.IsNull, Is.True);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 }