Mercurial > pub > bltoolkit
diff UnitTests/Fluent/MockDataBase/MockReader.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/Fluent/MockDataBase/MockReader.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,205 @@ +using System; +using System.Data; +using System.Linq; + +namespace BLToolkit.Fluent.Test.MockDataBase +{ + public partial class MockDb + { + private partial class MockCommand : IDbCommand + { + /// <summary> + /// IDataReader + /// </summary> + private class MockReader : IDataReader + { + private readonly MockReaderData _data; + private int _rowIndex = -1; + private int _resultIndex = 0; + private MockCommandData _cmd; + + public MockReader(MockCommandData data) + { + _cmd = data; + _data = data.ReaderResult; + } + + public void Dispose() + { + } + + public string GetName(int i) + { + return _data.Results[_resultIndex].Names[i]; + } + + public string GetDataTypeName(int i) + { + throw new NotImplementedException(); + } + + public Type GetFieldType(int i) + { + Type type = _data.Results[_resultIndex].Types[i]; + if (null == type) + { + object o = _data.Results[_resultIndex].Values.First()[i]; + if (null == o) + { + throw new ArgumentException(); + } + type = o.GetType(); + } + return type; + } + + public object GetValue(int i) + { + return _data.Results[_resultIndex].Values[_rowIndex][i]; + } + + public int GetValues(object[] values) + { + _data.Results[_resultIndex].Values[_rowIndex].CopyTo(values, 0); + return Math.Min(_data.Results[_resultIndex].Values[_rowIndex].Length, values.Length); + } + + public int GetOrdinal(string name) + { + throw new NotImplementedException(); + } + + public bool GetBoolean(int i) + { + return Convert.ToBoolean(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public byte GetByte(int i) + { + return Convert.ToByte(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) + { + throw new NotImplementedException(); + } + + public char GetChar(int i) + { + return Convert.ToChar(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) + { + throw new NotImplementedException(); + } + + public Guid GetGuid(int i) + { + throw new NotImplementedException(); + } + + public short GetInt16(int i) + { + return Convert.ToInt16(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public int GetInt32(int i) + { + return Convert.ToInt32(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public long GetInt64(int i) + { + return Convert.ToInt64(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public float GetFloat(int i) + { + throw new NotImplementedException(); + } + + public double GetDouble(int i) + { + return Convert.ToDouble(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public string GetString(int i) + { + return Convert.ToString(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public decimal GetDecimal(int i) + { + return Convert.ToDecimal(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public DateTime GetDateTime(int i) + { + return Convert.ToDateTime(_data.Results[_resultIndex].Values[_rowIndex][i]); + } + + public IDataReader GetData(int i) + { + throw new NotImplementedException(); + } + + public bool IsDBNull(int i) + { + return null == _data.Results[_resultIndex].Values[_rowIndex][i]; + } + + public int FieldCount + { + get { return _data.Results[_resultIndex].Names.Count; } + } + + object IDataRecord.this[int i] + { + get { throw new NotImplementedException(); } + } + + object IDataRecord.this[string name] + { + get { throw new NotImplementedException(); } + } + + public void Close() + { + IsClosed = true; + } + + public DataTable GetSchemaTable() + { + throw new NotImplementedException(); + } + + public bool NextResult() + { + _rowIndex = -1; + _resultIndex += 1; + return _data.Results.Count > _resultIndex; + } + + public bool Read() + { + _cmd.IsUsing = true; + _rowIndex++; + return _data.Results[_resultIndex].Values.Count > _rowIndex; + } + + public int Depth + { + get { throw new NotImplementedException(); } + } + + public bool IsClosed { get; set; } + + public int RecordsAffected + { + get { return _rowIndex + 1; } + } + } + } + } +} \ No newline at end of file