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