annotate UnitTests/CS/DataAccess/DataTypeTest.cs @ 1:8f65451dc28f

Исправлена проблема с фабрикой и выборкой нескольких объектов в linq выражении
author cin
date Fri, 28 Mar 2014 01:04:56 +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.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using System.Text;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using System.Xml;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 using BLToolkit.Reflection.Extension;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 #if FW2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 using PersonDataSet = DataAccessTest.PersonDataSet2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 #else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 using PersonDataSet = DataAccessTest.PersonDataSet;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 using BLToolkit.EditableObjects;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 using BLToolkit.Validation;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 using BLToolkit.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 using BLToolkit.TypeBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 namespace DataAccess
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 public class DataTypeTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 [TableName("DataTypeTest")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 public abstract class ScalarData
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 [MapField("DataTypeID"), PrimaryKey, NonUpdatable]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 public abstract int ID { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 [MapIgnore(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 public abstract Byte[] Binary_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 public abstract Boolean Boolean_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public abstract Byte Byte_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 [MapIgnore(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public abstract Byte[] Bytes_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 [NullDateTime]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public abstract DateTime DateTime_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 public abstract Decimal Decimal_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 public abstract Double Double_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public abstract Guid Guid_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 public abstract Int16 Int16_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 public abstract Int32 Int32_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 public abstract Int64 Int64_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public abstract Decimal Money_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 public abstract Single Single_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public abstract String String_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 #if FW2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public abstract Char Char_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 // public abstract SByte SByte_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 // [MapIgnore(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 // public abstract Stream Stream_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 // public abstract UInt16 UInt16_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 // public abstract UInt32 UInt32_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 // public abstract UInt64 UInt64_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 // public abstract XmlReader Xml_ { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 [TableName("DataTypeTest")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public class SqlData
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 [MapField("DataTypeID"), PrimaryKey, NonUpdatable]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 public int ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 public SqlBinary Binary_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 /* public SqlBoolean Boolean_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 public SqlByte Byte_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public SqlDateTime DateTime_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public SqlDecimal Decimal_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 public SqlDouble Double_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public SqlGuid Guid_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 public SqlInt16 Int16_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public SqlInt32 Int32_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 public SqlInt64 Int64_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 public SqlMoney Money_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public SqlSingle Single_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public SqlString String_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 #if FW2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 [MapIgnore(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 public SqlBytes Bytes_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [MapIgnore(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 public SqlChars Char_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 [MapIgnore(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 public SqlXml Xml_;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 */ }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 public abstract class DataTypeAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 public abstract void Insert([Direction.Output("@DataTypeID")] ScalarData data);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 private DataTypeAccessor _da;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 private SprocQuery _sproc = new SprocQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 private SqlQuery _sql = new SqlQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 public DataTypeTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 TypeFactory.SaveTypes = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 object o = TypeAccessor.CreateInstance(typeof(ScalarData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 Assert.IsInstanceOfType(typeof(ScalarData), o);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 _da = (DataTypeAccessor)DataAccessor.CreateInstance(typeof(DataTypeAccessor));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 Assert.IsInstanceOfType(typeof(DataTypeAccessor), _da);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 public void Sql_Scalar_InsertDeleteTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 ArrayList list = _sql.SelectAll(typeof(ScalarData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 Hashtable tbl = new Hashtable();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 foreach (ScalarData d in list)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 tbl[d.ID] = d;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 ScalarData data = (ScalarData) TypeAccessor.CreateInstance(typeof(ScalarData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 _sql.Insert(data);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 list = _sql.SelectAll(typeof(ScalarData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 foreach (ScalarData d in list)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 if (tbl.ContainsKey(d.ID) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 _sql.Delete(d);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 public void Sql_SqlTypes_InsertDeleteTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 ArrayList list = _sql.SelectAll(typeof(SqlData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 Hashtable tbl = new Hashtable();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 foreach (SqlData d in list)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 tbl[d.ID] = d;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 SqlData data = (SqlData) TypeAccessor.CreateInstance(typeof(SqlData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 _sql.Insert(data);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 list = _sql.SelectAll(typeof(SqlData));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 foreach (SqlData d in list)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 if (tbl.ContainsKey(d.ID) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 _sql.Delete(d);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 public void SunsetByHands()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 using (DbManager db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 .SetCommand(@"INSERT INTO DataTypeTest (Binary_) VALUES (@Binary)", db.Parameter("@Binary", SqlBinary.Null))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 .ExecuteNonQuery()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169