annotate UnitTests/CS/Reflection/Extension/ExtensionTest.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.IO;
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.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Reflection.Extension;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using System.Xml;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 namespace Reflection.Extension
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class ExtensionTestTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [SetUp]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public void SetUp()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 Map.DefaultSchema = new DefaultMappingSchema();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 using (StreamWriter sw = File.CreateText("Mapping.xml"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 sw.WriteLine(@"<?xml version='1.0' encoding='utf-8' ?>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 <Types xmlns='urn:schemas-bltoolkit-net:typeext'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 <Type Name='Dest'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 <Member Name='Field3'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 <MapValue Value='-1-' OrigValue='1' OrigValue-Type='System.Double' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 <MapValue Value='-2-' OrigValue='2' OrigValue-Type='System.Double' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 </Member>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 </Type>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 <Type Name='TriState'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 <Member Name='Yes' MapValue='yes' MapValue-Type='System.String' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 <Member Name='No'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 <MapValue Value='no' Type='System.String' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 <MapValue Type='System.String'>N</MapValue>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 </Member>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 <Member Name='Maybe' MapValue='xz' MapValue-Type='System.String' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 <Member Name='NotApplicable' MapValue-Type='System.String' MapValue='(n/a)' DefaultValue='' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 </Type>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 <Type Name='System.Double'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 <MapValue OrigValue='1' OrigValue-Type='System.Double' Value='One' Type='System.String' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 <MapValue OrigValue='2' Value='Two' Type='System.String' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 <DefaultValue Value='54' />
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 </Type>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 <Type Name='TestType'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 <Member Name='SomeRelation'>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 <Relation>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 <MasterIndex Name='MasterIndex1'/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 <MasterIndex Name='MasterIndex2'/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 <SlaveIndex Name='SlaveIndex1'/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 <SlaveIndex Name='SlaveIndex2'/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 </Relation>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 </Member>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 </Type>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 </Types>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 [TypeExtension("TriState")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public enum TriState { Yes, No, NotApplicable };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 public class Source
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public string Field1 = "no";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 public string Field2 = "One";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 public string Field3 = "-2-";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 public string Field4 = "***";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [TypeExtension("Dest")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 public class Dest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 private TriState _field1 = TriState.NotApplicable;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 public TriState Field1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 get { return _field1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 set { _field1 = value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 public double Field2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public double Field3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 public double Field4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 Map.Extensions = TypeExtension.GetExtensions("Mapping.xml");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 object o = Map.Extensions["TriState"]["Yes"]["MapValue"].Value;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 Assert.AreEqual("yes", o);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 Source s = new Source();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 Dest d = (Dest)Map.ObjectToObject(s, typeof(Dest));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 Assert.AreEqual(TriState.No, d.Field1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 Assert.AreEqual( 1, d.Field2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 Assert.AreEqual( 2, d.Field3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 Assert.AreEqual(54, d.Field4);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 Assert.AreEqual(TriState.NotApplicable, Map.ValueToEnum("1234", typeof(TriState)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public class TestType
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 public object SomeRelation;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public void MultiKeyRelationTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 MappingSchema ms = new MappingSchema();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 ms.Extensions = TypeExtension.GetExtensions("Mapping.xml");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 bool isSet = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 List<MapRelationBase> relations = ms.MetadataProvider.GetRelations(ms, ms.Extensions, typeof(TestType), null, out isSet);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 Assert.IsTrue(isSet);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 Assert.AreEqual(1, relations.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 Assert.AreEqual(2, relations[0].MasterIndex.Fields.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 Assert.AreEqual(2, relations[0].SlaveIndex .Fields.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 [TearDown]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 public void TearDown()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 File.Delete("Mapping.xml");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 }