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