public void Get_NewValueWillBeAborted_OldValueIsRead() { const int oldValue = 100; const int newValue = 200; const int id = 1; var store = new Store <Record>(); store.Create(new Record(id, oldValue)); var transaction = store.BeginTransaction(); store.Update(new Record(id, newValue), transaction); var actual = store.Get(id); store.Abort(transaction); Assert.AreEqual(oldValue, actual.Balance); }
public async Task Update_NewValueWillBeAborted_OldValueIsRead() { const int firstValue = 200; const int secondValue = 300; const int id = 1; var store = new Store <Record>(); store.Create(new Record(id, 100)); var transaction = store.BeginTransaction(); store.Update(new Record(id, firstValue), transaction); var secondUpdate = Task.Run(() => store.Update(new Record(id, secondValue))); var actual = store.Get(id); store.Abort(transaction); await secondUpdate; Assert.AreEqual(secondValue, actual.Balance); }