public void ProcessNewOpsTest() { TransactionManager target = new TransactionManager(); target.IncrementTimeStamp(); string inputString = "begin(T1);beginRO(T2)"; target.ProcessNewOps(inputString); Assert.AreEqual(2, target.activeTransactions.Keys.Count); Assert.AreEqual(1, target.activeTransactions[1].Id); Assert.IsNull(target.activeTransactions[1].CurrentOp); Assert.AreEqual(Enumerations.Status.Active, target.activeTransactions[1].CurrentStatus); Assert.AreEqual(1, target.activeTransactions[1].TimeStamp); Assert.AreEqual(false, target.activeTransactions[1].ReadOnly); Assert.IsNull(target.activeTransactions[1].CurrentOp); Assert.AreEqual(2, target.activeTransactions[2].Id); Assert.IsNull(target.activeTransactions[2].CurrentOp); Assert.AreEqual(Enumerations.Status.Active, target.activeTransactions[2].CurrentStatus); Assert.AreEqual(1, target.activeTransactions[2].TimeStamp); Assert.AreEqual(true, target.activeTransactions[2].ReadOnly); Assert.IsNull(target.activeTransactions[2].CurrentOp); inputString = "W(T1, x5,6);R(T2, x4)"; target.ProcessNewOps(inputString); Assert.AreEqual(2, target.activeTransactions.Keys.Count); Assert.AreEqual(Enumerations.OperationMode.Write, target.activeTransactions[1].CurrentOp.OpMode); Assert.AreEqual(1, target.activeTransactions[1].CurrentOp.TransactionNumber); Assert.AreEqual(1, target.activeTransactions[1].CurrentOp.TimeStamp); Assert.AreEqual(false, target.activeTransactions[1].CurrentOp.ReadOnly); Assert.AreEqual(6, target.activeTransactions[1].CurrentOp.NewValue); Assert.AreEqual(Enumerations.OperationMode.Read, target.activeTransactions[2].CurrentOp.OpMode); Assert.AreEqual(2, target.activeTransactions[2].CurrentOp.TransactionNumber); Assert.AreEqual(1, target.activeTransactions[2].CurrentOp.TimeStamp); Assert.AreEqual(true, target.activeTransactions[2].CurrentOp.ReadOnly); Assert.AreEqual(-1, target.activeTransactions[2].CurrentOp.NewValue); target.ProcessNewOps(inputString); Assert.AreEqual(2, target.waitingOps.Count); }