public void TransactionManagerCommitsAll() { var seed = new Seed32(); var hits = 0; using (var manager = new TransactionManager<int, MockClassA>() ) { manager.TransactionCommitted += new TransactionCommit<int, MockClassA> (delegate(ITransaction<int, MockClassA> transaction) { Assert.AreEqual(3, transaction.GetEnlistedActions().Count()); hits++; transaction.MarkComplete(); }); var testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList(); testEntities.ForEach(e => e.Id = seed.Increment()); using (var tLock1 = manager.BeginTransaction()) { foreach (var entity in testEntities) tLock1.Transaction.Enlist(Action.Create, entity.Id, entity); using (var tLock2 = manager.BeginTransaction()) { testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList(); testEntities.ForEach(e => e.Id = seed.Increment()); foreach (var entity in testEntities) tLock2.Transaction.Enlist(Action.Create, entity.Id, entity); using (var tLock3 = manager.BeginTransaction()) { testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList(); testEntities.ForEach(e => e.Id = seed.Increment()); foreach (var entity in testEntities) tLock3.Transaction.Enlist(Action.Create, entity.Id, entity); using (var tLock4 = manager.BeginTransaction()) { testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList(); testEntities.ForEach(e => e.Id = seed.Increment()); foreach (var entity in testEntities) tLock4.Transaction.Enlist(Action.Create, entity.Id, entity); using (var tLock5 = manager.BeginTransaction()) { testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList(); testEntities.ForEach(e => e.Id = seed.Increment()); foreach (var entity in testEntities) tLock5.Transaction.Enlist(Action.Create, entity.Id, entity); Assert.AreEqual(3, manager.GetActiveItems().Count); manager.CommitAll(true); Assert.IsTrue(tLock5.Transaction.IsComplete); } } } } } Assert.AreEqual(0, manager.GetActiveItems().Count); } }