Mercurial > pub > bltoolkit
diff UnitTests/CS/DataAccess/DataTypeTest.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/UnitTests/CS/DataAccess/DataTypeTest.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,169 @@ +using System; +using System.Collections; +using System.ComponentModel; +using System.Data; +using System.Data.SqlTypes; +using System.IO; +using System.Text; +using System.Xml; +using BLToolkit.Data.DataProvider; +using BLToolkit.Reflection.Extension; +using NUnit.Framework; + +#if FW2 +using System.Collections.Generic; +using PersonDataSet = DataAccessTest.PersonDataSet2; +#else +using PersonDataSet = DataAccessTest.PersonDataSet; +#endif + +using BLToolkit.EditableObjects; +using BLToolkit.Data; +using BLToolkit.DataAccess; +using BLToolkit.Mapping; +using BLToolkit.Validation; +using BLToolkit.Reflection; +using BLToolkit.TypeBuilder; + +namespace DataAccess +{ + [TestFixture] + public class DataTypeTest + { + [TableName("DataTypeTest")] + public abstract class ScalarData + { + [MapField("DataTypeID"), PrimaryKey, NonUpdatable] + public abstract int ID { get; set; } + [MapIgnore(false)] + public abstract Byte[] Binary_ { get; set; } + public abstract Boolean Boolean_ { get; set; } + public abstract Byte Byte_ { get; set; } + [MapIgnore(false)] + public abstract Byte[] Bytes_ { get; set; } + [NullDateTime] + public abstract DateTime DateTime_ { get; set; } + public abstract Decimal Decimal_ { get; set; } + public abstract Double Double_ { get; set; } + public abstract Guid Guid_ { get; set; } + public abstract Int16 Int16_ { get; set; } + public abstract Int32 Int32_ { get; set; } + public abstract Int64 Int64_ { get; set; } + public abstract Decimal Money_ { get; set; } + public abstract Single Single_ { get; set; } + public abstract String String_ { get; set; } +#if FW2 + public abstract Char Char_ { get; set; } +// public abstract SByte SByte_ { get; set; } +// [MapIgnore(false)] +// public abstract Stream Stream_ { get; set; } +// public abstract UInt16 UInt16_ { get; set; } +// public abstract UInt32 UInt32_ { get; set; } +// public abstract UInt64 UInt64_ { get; set; } +// public abstract XmlReader Xml_ { get; set; } +#endif + } + + [TableName("DataTypeTest")] + public class SqlData + { + [MapField("DataTypeID"), PrimaryKey, NonUpdatable] + public int ID; + public SqlBinary Binary_; +/* public SqlBoolean Boolean_; + public SqlByte Byte_; + public SqlDateTime DateTime_; + public SqlDecimal Decimal_; + public SqlDouble Double_; + public SqlGuid Guid_; + public SqlInt16 Int16_; + public SqlInt32 Int32_; + public SqlInt64 Int64_; + public SqlMoney Money_; + public SqlSingle Single_; + public SqlString String_; +#if FW2 + [MapIgnore(false)] + public SqlBytes Bytes_; + [MapIgnore(false)] + public SqlChars Char_; + [MapIgnore(false)] + public SqlXml Xml_; +#endif +*/ } + + + public abstract class DataTypeAccessor : DataAccessor + { + public abstract void Insert([Direction.Output("@DataTypeID")] ScalarData data); + } + + private DataTypeAccessor _da; + private SprocQuery _sproc = new SprocQuery(); + private SqlQuery _sql = new SqlQuery(); + + public DataTypeTest() + { + TypeFactory.SaveTypes = true; + + object o = TypeAccessor.CreateInstance(typeof(ScalarData)); + Assert.IsInstanceOfType(typeof(ScalarData), o); + + _da = (DataTypeAccessor)DataAccessor.CreateInstance(typeof(DataTypeAccessor)); + Assert.IsInstanceOfType(typeof(DataTypeAccessor), _da); + } + + [Test] + public void Sql_Scalar_InsertDeleteTest() + { + ArrayList list = _sql.SelectAll(typeof(ScalarData)); + Hashtable tbl = new Hashtable(); + + foreach (ScalarData d in list) + tbl[d.ID] = d; + + ScalarData data = (ScalarData) TypeAccessor.CreateInstance(typeof(ScalarData)); + + _sql.Insert(data); + + list = _sql.SelectAll(typeof(ScalarData)); + + foreach (ScalarData d in list) + if (tbl.ContainsKey(d.ID) == false) + _sql.Delete(d); + } + + [Test] + public void Sql_SqlTypes_InsertDeleteTest() + { + ArrayList list = _sql.SelectAll(typeof(SqlData)); + Hashtable tbl = new Hashtable(); + + foreach (SqlData d in list) + tbl[d.ID] = d; + + SqlData data = (SqlData) TypeAccessor.CreateInstance(typeof(SqlData)); + + _sql.Insert(data); + + list = _sql.SelectAll(typeof(SqlData)); + + foreach (SqlData d in list) + if (tbl.ContainsKey(d.ID) == false) + _sql.Delete(d); + } + + [Test] + public void SunsetByHands() + { + using (DbManager db = new DbManager()) + { + db + .SetCommand(@"INSERT INTO DataTypeTest (Binary_) VALUES (@Binary)", db.Parameter("@Binary", SqlBinary.Null)) + .ExecuteNonQuery() + ; + } + } + } +} +