// Mementos are used to roll back states arbitrarily // A memento is simply a token/handle class with (typically) no functions of its own // A memento is not required to expose directly the state(s) to which it reverts the system // Can be used to implement undo/redo public static void AdvancedDemo() { var ba = new BankAccountV2(100); ba.Deposit(50); ba.Deposit(25); WriteLine(ba); ba.Undo(); WriteLine($"Undo 1: {ba}"); ba.Undo(); WriteLine($"Undo 2: {ba}"); ba.Redo(); WriteLine($"Redo 2: {ba}"); }
public void DepositAndReturnBalance_Input_ReturnsDepositedBalance() { //for (var i = 0; i < 100; i++) //{ //Arrange StaticKernel.Instance.Bind <IBalanceRepository>().To <TestBalanceRepository>(); var bankAccount = new BankAccountV2(123); //var bankAccount = new BankAccountV3(123, new TestBalanceRepository()); //Act var result = bankAccount.DepositAndReturnBalance(12); //Assert Assert.AreEqual(12, result); //} }
public void DepositAndReturnBalance_Input_WhenDatabaseNotAvailable_ThrowsException() { //for (var i = 0; i < 100; i++) //{ //Arrange StaticKernel.Instance.Bind <IBalanceRepository>().To <TestFailingBalanceRepository>(); var bankAccount = new BankAccountV2(123); //var bankAccount = new BankAccountV3(123, new TestFailBalanceRepository()); //Act TestDelegate testDelegate = () => bankAccount.DepositAndReturnBalance(12); //Assert Assert.That(testDelegate, Throws.Exception); //} }