annotate UnitTests/CS/TypeBuilder/ParameterAttributeTest.cs @ 3:1ef98bd70424

!bug 100 +3h Исправление проблемы BLToolkit + mono 3.4
author cin
date Fri, 22 Aug 2014 17:34:46 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Diagnostics.CodeAnalysis;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using BLToolkit.EditableObjects;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Mapping;
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 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace TypeBuilder
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class ParameterAttributeTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public abstract class AbstractObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public AbstractObject(InitContext init)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 if (init.MemberParameters != null && init.MemberParameters.Length == 1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 Field = (int)init.MemberParameters[0];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 Field = 77;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 public int Field;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 public class InnerObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 public InnerObject(InitContext init)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 if (init.MemberParameters != null && init.MemberParameters.Length == 1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 Field = (int)init.MemberParameters[0];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 Field = 44;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 public int Field;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 public class TestField
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public TestField()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 Value = 10;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 public TestField(int p1, float p2)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 Value = p1 + (int)p2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public TestField(TestField p1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 Value = 77;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public int Value;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 [AttributeUsage(AttributeTargets.Property)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public class TestParameterAttribute : ParameterAttribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 public TestParameterAttribute() : base(new TestField())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 public abstract class TestObject1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 [Parameter(10)] public abstract ArrayList List { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 [Parameter("t")] public abstract string Str { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [Parameter(20)] public abstract string this[int i] { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 [Parameter(20, 30)] public abstract TestField Field1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 [TestParameter] public abstract TestField Field2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 [Parameter(55)] public abstract InnerObject InnerObject1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 [Parameter(54)] public abstract int? Int1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 [Parameter(null)] public abstract int? Int2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 [Parameter(2,2,2)] public abstract DateTime Date { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 [Parameter(222L)] public abstract Decimal Decimal1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 [Parameter(1, 0, 0, true, (byte)2)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public abstract Decimal? Decimal2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 [Parameter(new int[]{2, 0, 0, 0})]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public abstract Decimal Decimal3 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 [Parameter(22.05)] public abstract Decimal Decimal4 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [Parameter(null)] public abstract Decimal? Decimal5 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public void ParamTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 TestObject1 o = (TestObject1)TypeAccessor.CreateInstance(typeof(TestObject1));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 Assert.That(o.List.Capacity, Is.EqualTo(10));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 Assert.That(o.Str, Is.EqualTo("t"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 Assert.That(o.Field1.Value, Is.EqualTo(50));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 Assert.That(o.Field2.Value, Is.EqualTo(77));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 Assert.That(o.InnerObject1.Field, Is.EqualTo(55));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 Assert.That(o.Int1, Is.EqualTo(54));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 Assert.That(o.Int2, Is.EqualTo(null));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 Assert.That(o.Date, Is.EqualTo(new DateTime(2,2,2)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 Assert.That(o.Decimal1, Is.EqualTo(222m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 Assert.That(o.Decimal2, Is.EqualTo(-0.01m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 Assert.That(o.Decimal3, Is.EqualTo(2m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 Assert.That(o.Decimal4, Is.EqualTo(22.05m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 Assert.That(o.Decimal5, Is.EqualTo(null));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public abstract class TestObject2 : EditableObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 protected TestObject2() {}
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 protected TestObject2(InitContext context) {}
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 [Parameter(10)] public abstract ArrayList List { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 [Parameter("t")] public abstract string Str { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 [Parameter(20)] public abstract string this[int i] { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 [Parameter(20, 30)] public abstract TestField Field1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 [TestParameter] public abstract TestField Field2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 [Parameter(55)] public abstract InnerObject InnerObject1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 [Parameter(54)] public abstract int? Int1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 [Parameter(null)] public abstract int? Int2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 [Parameter(2,2,2)] public abstract DateTime Date { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 [Parameter(222L)] public abstract Decimal Decimal1 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 [Parameter(1, 0, 0, true, (byte)2)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 public abstract Decimal? Decimal2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 [Parameter(new int[]{2, 0, 0, 0})]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public abstract Decimal Decimal3 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 [Parameter(22.05)] public abstract Decimal Decimal4 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 [Parameter(null)] public abstract Decimal? Decimal5 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 public void EditablObjectParamTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 TestObject2 o = (TestObject2)TypeAccessor.CreateInstance(typeof(TestObject2), new InitContext());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 Assert.That(o.List.Capacity, Is.EqualTo(10));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 Assert.That(o.Str, Is.EqualTo("t"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 Assert.That(o.Field1.Value, Is.EqualTo(50));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 Assert.That(o.Field2.Value, Is.EqualTo(77));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 Assert.That(o.InnerObject1.Field, Is.EqualTo(55));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 Assert.That(o.Int1, Is.EqualTo(54));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 Assert.That(o.Int2, Is.EqualTo(null));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 Assert.That(o.Date, Is.EqualTo(new DateTime(2,2,2)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 Assert.That(o.Decimal1, Is.EqualTo(222m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 Assert.That(o.Decimal2, Is.EqualTo(-0.01m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 Assert.That(o.Decimal3, Is.EqualTo(2m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 Assert.That(o.Decimal4, Is.EqualTo(22.05m));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 Assert.That(o.Decimal5, Is.EqualTo(null));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 }