0
|
1 using System;
|
|
2 using System.Data;
|
|
3 using System.Linq;
|
|
4
|
|
5 namespace BLToolkit.Fluent.Test.MockDataBase
|
|
6 {
|
|
7 public partial class MockDb
|
|
8 {
|
|
9 private partial class MockCommand : IDbCommand
|
|
10 {
|
|
11 /// <summary>
|
|
12 /// IDataReader
|
|
13 /// </summary>
|
|
14 private class MockReader : IDataReader
|
|
15 {
|
|
16 private readonly MockReaderData _data;
|
|
17 private int _rowIndex = -1;
|
|
18 private int _resultIndex = 0;
|
|
19 private MockCommandData _cmd;
|
|
20
|
|
21 public MockReader(MockCommandData data)
|
|
22 {
|
|
23 _cmd = data;
|
|
24 _data = data.ReaderResult;
|
|
25 }
|
|
26
|
|
27 public void Dispose()
|
|
28 {
|
|
29 }
|
|
30
|
|
31 public string GetName(int i)
|
|
32 {
|
|
33 return _data.Results[_resultIndex].Names[i];
|
|
34 }
|
|
35
|
|
36 public string GetDataTypeName(int i)
|
|
37 {
|
|
38 throw new NotImplementedException();
|
|
39 }
|
|
40
|
|
41 public Type GetFieldType(int i)
|
|
42 {
|
|
43 Type type = _data.Results[_resultIndex].Types[i];
|
|
44 if (null == type)
|
|
45 {
|
|
46 object o = _data.Results[_resultIndex].Values.First()[i];
|
|
47 if (null == o)
|
|
48 {
|
|
49 throw new ArgumentException();
|
|
50 }
|
|
51 type = o.GetType();
|
|
52 }
|
|
53 return type;
|
|
54 }
|
|
55
|
|
56 public object GetValue(int i)
|
|
57 {
|
|
58 return _data.Results[_resultIndex].Values[_rowIndex][i];
|
|
59 }
|
|
60
|
|
61 public int GetValues(object[] values)
|
|
62 {
|
|
63 _data.Results[_resultIndex].Values[_rowIndex].CopyTo(values, 0);
|
|
64 return Math.Min(_data.Results[_resultIndex].Values[_rowIndex].Length, values.Length);
|
|
65 }
|
|
66
|
|
67 public int GetOrdinal(string name)
|
|
68 {
|
|
69 throw new NotImplementedException();
|
|
70 }
|
|
71
|
|
72 public bool GetBoolean(int i)
|
|
73 {
|
|
74 return Convert.ToBoolean(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
75 }
|
|
76
|
|
77 public byte GetByte(int i)
|
|
78 {
|
|
79 return Convert.ToByte(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
80 }
|
|
81
|
|
82 public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
|
|
83 {
|
|
84 throw new NotImplementedException();
|
|
85 }
|
|
86
|
|
87 public char GetChar(int i)
|
|
88 {
|
|
89 return Convert.ToChar(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
90 }
|
|
91
|
|
92 public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
|
|
93 {
|
|
94 throw new NotImplementedException();
|
|
95 }
|
|
96
|
|
97 public Guid GetGuid(int i)
|
|
98 {
|
|
99 throw new NotImplementedException();
|
|
100 }
|
|
101
|
|
102 public short GetInt16(int i)
|
|
103 {
|
|
104 return Convert.ToInt16(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
105 }
|
|
106
|
|
107 public int GetInt32(int i)
|
|
108 {
|
|
109 return Convert.ToInt32(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
110 }
|
|
111
|
|
112 public long GetInt64(int i)
|
|
113 {
|
|
114 return Convert.ToInt64(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
115 }
|
|
116
|
|
117 public float GetFloat(int i)
|
|
118 {
|
|
119 throw new NotImplementedException();
|
|
120 }
|
|
121
|
|
122 public double GetDouble(int i)
|
|
123 {
|
|
124 return Convert.ToDouble(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
125 }
|
|
126
|
|
127 public string GetString(int i)
|
|
128 {
|
|
129 return Convert.ToString(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
130 }
|
|
131
|
|
132 public decimal GetDecimal(int i)
|
|
133 {
|
|
134 return Convert.ToDecimal(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
135 }
|
|
136
|
|
137 public DateTime GetDateTime(int i)
|
|
138 {
|
|
139 return Convert.ToDateTime(_data.Results[_resultIndex].Values[_rowIndex][i]);
|
|
140 }
|
|
141
|
|
142 public IDataReader GetData(int i)
|
|
143 {
|
|
144 throw new NotImplementedException();
|
|
145 }
|
|
146
|
|
147 public bool IsDBNull(int i)
|
|
148 {
|
|
149 return null == _data.Results[_resultIndex].Values[_rowIndex][i];
|
|
150 }
|
|
151
|
|
152 public int FieldCount
|
|
153 {
|
|
154 get { return _data.Results[_resultIndex].Names.Count; }
|
|
155 }
|
|
156
|
|
157 object IDataRecord.this[int i]
|
|
158 {
|
|
159 get { throw new NotImplementedException(); }
|
|
160 }
|
|
161
|
|
162 object IDataRecord.this[string name]
|
|
163 {
|
|
164 get { throw new NotImplementedException(); }
|
|
165 }
|
|
166
|
|
167 public void Close()
|
|
168 {
|
|
169 IsClosed = true;
|
|
170 }
|
|
171
|
|
172 public DataTable GetSchemaTable()
|
|
173 {
|
|
174 throw new NotImplementedException();
|
|
175 }
|
|
176
|
|
177 public bool NextResult()
|
|
178 {
|
|
179 _rowIndex = -1;
|
|
180 _resultIndex += 1;
|
|
181 return _data.Results.Count > _resultIndex;
|
|
182 }
|
|
183
|
|
184 public bool Read()
|
|
185 {
|
|
186 _cmd.IsUsing = true;
|
|
187 _rowIndex++;
|
|
188 return _data.Results[_resultIndex].Values.Count > _rowIndex;
|
|
189 }
|
|
190
|
|
191 public int Depth
|
|
192 {
|
|
193 get { throw new NotImplementedException(); }
|
|
194 }
|
|
195
|
|
196 public bool IsClosed { get; set; }
|
|
197
|
|
198 public int RecordsAffected
|
|
199 {
|
|
200 get { return _rowIndex + 1; }
|
|
201 }
|
|
202 }
|
|
203 }
|
|
204 }
|
|
205 } |