Skip to content

Commit dfde73f

Browse files
committed
Get fixed on InMemoryAdapter
1 parent 773ef66 commit dfde73f

6 files changed

Lines changed: 54 additions & 23 deletions

File tree

CommonAssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
// COM, set the ComVisible attribute to true on that type.
2020
[assembly: ComVisible(false)]
2121

22-
[assembly: AssemblyVersion("0.11.0.1")]
23-
[assembly: AssemblyFileVersion("0.11.0.1")]
22+
[assembly: AssemblyVersion("0.11.1.1")]
23+
[assembly: AssemblyFileVersion("0.11.1.1")]
2424

PerformanceTestConsole/Program.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace PerformanceTestConsole
1010
{
11+
using System.Data;
1112
using Simple.Data.Ado;
1213

1314
class Post
@@ -169,13 +170,13 @@ public void Run(int iterations)
169170
{
170171
var tests = new Tests();
171172
var simpleDb = Simple.Data.Database.OpenConnection(Program.ConnectionString);
172-
((AdoAdapter)simpleDb.GetAdapter()).UseSharedConnection(Program.GetOpenConnection());
173+
SqlConnection connection = Program.GetOpenConnection();
174+
((AdoAdapter) simpleDb.GetAdapter()).UseSharedConnection(connection);
173175
simpleDb.Posts.FindById(1);
174176
tests.Add(id => simpleDb.Posts.FindById(id), "Dynamic Simple.Data Query");
175177

176178
// HAND CODED
177179

178-
var connection = Program.GetOpenConnection();
179180

180181
var postCommand = new SqlCommand();
181182
postCommand.Connection = connection;

Simple.Data.BehaviourTest/TraceSettingsTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,13 @@ public void TraceLevelShouldBePickedUpFromConfig()
1515
{
1616
Assert.AreEqual(TraceLevel.Error, Database.TraceLevel);
1717
}
18+
19+
[Test]
20+
public void TraceLevelShouldBeSettableFromCode()
21+
{
22+
Database.TraceLevel = TraceLevel.Off;
23+
Assert.AreEqual(TraceLevel.Off, Database.TraceLevel);
24+
25+
}
1826
}
1927
}

Simple.Data.InMemoryTest/InMemoryTests.cs

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88
[TestFixture]
99
public class InMemoryTests
1010
{
11+
[Test]
12+
public void InsertAndGetShouldWork()
13+
{
14+
var adapter = new InMemoryAdapter();
15+
adapter.SetKeyColumn("Test", "Id");
16+
Database.UseMockAdapter(adapter);
17+
var db = Database.Open();
18+
db.Test.Insert(Id: 1, Name: "Alice");
19+
var record = db.Test.Get(1);
20+
Assert.IsNotNull(record);
21+
Assert.AreEqual(1, record.Id);
22+
Assert.AreEqual("Alice", record.Name);
23+
}
24+
1125
[Test]
1226
public void InsertAndFindShouldWork()
1327
{
@@ -215,18 +229,18 @@ public void TestSkipAndTake()
215229
[Test]
216230
public void TestJoin()
217231
{
218-
var adapter = new InMemoryAdapter();
219-
adapter.ConfigureJoin("Customer", "ID", "Orders", "Order", "CustomerID", "Customer");
220-
Database.UseMockAdapter(adapter);
221-
var db = Database.Open();
222-
db.Customer.Insert(ID: 1, Name: "NASA");
223-
db.Customer.Insert(ID: 2, Name: "ACME");
224-
db.Order.Insert(ID: 1, CustomerID: 1, Date: new DateTime(1997, 1, 12));
225-
db.Order.Insert(ID: 2, CustomerID: 2, Date: new DateTime(2001, 1, 1));
226-
227-
var customers = db.Customer.FindAll(db.Customer.Orders.Date < new DateTime(1999, 12, 31)).ToList();
228-
Assert.IsNotNull(customers);
229-
Assert.AreEqual(1, customers.Count);
232+
var adapter = new InMemoryAdapter();
233+
adapter.ConfigureJoin("Customer", "ID", "Orders", "Order", "CustomerID", "Customer");
234+
Database.UseMockAdapter(adapter);
235+
var db = Database.Open();
236+
db.Customer.Insert(ID: 1, Name: "NASA");
237+
db.Customer.Insert(ID: 2, Name: "ACME");
238+
db.Order.Insert(ID: 1, CustomerID: 1, Date: new DateTime(1997, 1, 12));
239+
db.Order.Insert(ID: 2, CustomerID: 2, Date: new DateTime(2001, 1, 1));
240+
241+
var customers = db.Customer.FindAll(db.Customer.Orders.Date < new DateTime(1999, 12, 31)).ToList();
242+
Assert.IsNotNull(customers);
243+
Assert.AreEqual(1, customers.Count);
230244
}
231245

232246
/// <summary>

Simple.Data.SqlTest/GetTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ public void Setup()
1414
[Test]
1515
public void TestGet()
1616
{
17-
var db = DatabaseHelper.Open();
18-
var user = db.Users.Get(1);
19-
Assert.AreEqual(1, user.Id);
17+
var db = DatabaseHelper.Open();
18+
var user = db.Users.Get(1);
19+
Assert.AreEqual(1, user.Id);
2020
}
2121
}
2222
}

Simple.Data/InMemoryAdapter.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public class InMemoryAdapter : Adapter
1515
new Dictionary<string, List<IDictionary<string, object>>>();
1616

1717
private readonly ICollection<Join> _joins = new Collection<Join>();
18-
private readonly IDictionary<string, IList<string>> _keys = new Dictionary<string, IList<string>>();
1918

2019
private List<IDictionary<string, object>> GetTable(string tableName)
2120
{
@@ -26,9 +25,9 @@ private List<IDictionary<string, object>> GetTable(string tableName)
2625

2726
public override IDictionary<string, object> Get(string tableName, params object[] keyValues)
2827
{
29-
if (!_keys.ContainsKey(tableName)) throw new InvalidOperationException("No key specified for In-Memory table.");
30-
var keys = _keys[tableName];
31-
if (keys.Count != keyValues.Length) throw new ArgumentException("Incorrect number of values for key.");
28+
if (!_keyColumns.ContainsKey(tableName)) throw new InvalidOperationException("No key specified for In-Memory table.");
29+
var keys = _keyColumns[tableName];
30+
if (keys.Length != keyValues.Length) throw new ArgumentException("Incorrect number of values for key.");
3231
var expression = new ObjectReference(keys[0]) == keyValues[0];
3332
for (int i = 1; i < keyValues.Length; i++)
3433
{
@@ -185,6 +184,15 @@ public void SetKeyColumns(string tableName, params string[] columnNames)
185184
_keyColumns[tableName] = columnNames;
186185
}
187186

187+
/// <summary>
188+
/// Set up an implicit join between two tables.
189+
/// </summary>
190+
/// <param name="masterTableName">The name of the 'master' table</param>
191+
/// <param name="masterKey">The 'primary key'</param>
192+
/// <param name="masterPropertyName">The name to give the lookup property in the detail objects</param>
193+
/// <param name="detailTableName">The name of the 'master' table</param>
194+
/// <param name="detailKey">The 'foreign key'</param>
195+
/// <param name="detailPropertyName">The name to give the collection property in the master object</param>
188196
public void ConfigureJoin(string masterTableName, string masterKey, string masterPropertyName, string detailTableName, string detailKey, string detailPropertyName)
189197
{
190198
var join = new Join(masterTableName, masterKey, masterPropertyName, detailTableName, detailKey,

0 commit comments

Comments
 (0)