annotate UnitTests/CS/DataAccess/DataAccessorBuilderTest.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 using System.Collections;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Reflection;
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.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.TypeBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 namespace DataAccess
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class DataAccessorBuilderTest : MarshalByRefObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 DataAccessorBuilderTest _localTest;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 AppDomain _localDomain;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public struct Person
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 [TestFixtureSetUp]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 public void SetUp()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 string path = new Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 _localDomain = AppDomain.CreateDomain("NewDomain");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 _localDomain.Load(typeof(DataAccessor).Assembly.GetName());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 _localTest = (DataAccessorBuilderTest)_localDomain.CreateInstanceFromAndUnwrap(path, GetType().FullName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 [TestFixtureTearDown]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 public void TearDown()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 AppDomain.Unload(_localDomain);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public abstract class TypelessAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 [SqlQuery("SELECT * FROM Person WHERE PersonID < 3")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public abstract Hashtable Typeless();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 private void Typeless()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 // Can not determine object type for the method 'TypelessAccessor.Typeless'
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 DataAccessor.CreateInstance(typeof(TypelessAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public void TypelessTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 AppDomain.CurrentDomain.DoCallBack(_localTest.Typeless);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 public abstract class TypelessAccessor2 : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 [SprocName("Person_SelectAll")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public abstract ArrayList Typeless();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 private void Typeless2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 // Can not determine object type for the method 'TypelessAccessor2.Typeless'
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 DataAccessor.CreateInstance(typeof(TypelessAccessor2));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 public void Gen_SelectAllListException()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 AppDomain.CurrentDomain.DoCallBack(_localTest.Typeless2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public abstract class MultiDestinationAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 [ObjectType(typeof(Person))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 public abstract IList SelectAll([Destination] IList list1, [Destination] IList list2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 private void MultiDestinationException()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 // More then one parameter is marked as destination.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 DataAccessor.CreateInstance(typeof(MultiDestinationAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 public void MultiDestinationExceptionTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 AppDomain.CurrentDomain.DoCallBack(_localTest.MultiDestinationException);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 public abstract class ScalarDestinationAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 [ObjectType(typeof(Person))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 public abstract int SelectAll([Destination] int p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 private void ScalarDestinationException()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 // ExecuteScalar destination must be an out or a ref parameter
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 DataAccessor.CreateInstance(typeof(ScalarDestinationAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public void ScalarDestinationExceptionTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 AppDomain.CurrentDomain.DoCallBack(_localTest.ScalarDestinationException);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 public abstract class IncompatibleScalarDestinationAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 [ObjectType(typeof(Person))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 public abstract int SelectAll([Destination] out string p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 private void IncompatibleScalarDestinationException()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 // The return type 'System.Int32' of the method 'SelectAll'
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 // is incompatible with the destination parameter type 'System.String'
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 DataAccessor.CreateInstance(typeof(IncompatibleScalarDestinationAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 public void IncompatibleScalarDestinationExceptionTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 AppDomain.CurrentDomain.DoCallBack(_localTest.IncompatibleScalarDestinationException);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 public abstract class VoidDestinationAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 [ObjectType(typeof(Person))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 public abstract void SelectAll([Destination] int p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 private void VoidDestinationException()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 // ExecuteNonQuery does not support the Destination attribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 DataAccessor.CreateInstance(typeof(VoidDestinationAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 public void VoidDestinationExceptionTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 AppDomain.CurrentDomain.DoCallBack(_localTest.VoidDestinationException);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 public abstract class IllegalDataSetTableAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 [DataSetTable(12345)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 public abstract DataTable SelectAll();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 private void IllegalDataSetTable()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 // DataSetTable attribute may not be an index
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 DataAccessor.CreateInstance(typeof(IllegalDataSetTableAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 [Test, ExpectedException(typeof(TypeBuilderException))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 public void IllegalDataSetTableTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 AppDomain.CurrentDomain.DoCallBack(_localTest.IllegalDataSetTable);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 }